bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...agradecimientos en primer lugar,...

287
INGENIERÍA AERONÁUTICA Proyecto Fin de Carrera Programación y estudio del algoritmo de Ainsworth-Rankin para la estimación de errores a posteriori en problemas de deformación plana resueltos mediante el método de los elementos finitos. 0 5 10 15 20 25 30 35 40 45 0 10 20 30 40 50 60 x y Autor: Fernández Naval, Álvaro - [email protected] Director: García Archilla, Bosco - [email protected] Matemática Aplicada II. Escuela Técnica Superior de Ingeniería. Universidad de Sevilla. Sevilla, 2014.

Upload: others

Post on 01-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

INGENIERÍA AERONÁUTICAProyecto Fin de Carrera

Programación y estudio del algoritmo de Ainsworth-Rankin para laestimación de errores a posteriori en problemas de deformación planaresueltos mediante el método de los elementos finitos.

0 5 10 15 20 25 30 35 40 450

10

20

30

40

50

60

x

y

Autor: Fernández Naval, Álvaro - [email protected]: García Archilla, Bosco - [email protected]

Matemática Aplicada II.Escuela Técnica Superior de Ingeniería.Universidad de Sevilla.Sevilla, 2014.

Page 2: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons
Page 3: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Proyecto Fin de CarreraIngeniería Aeronáutica

Programación y estudio del algoritmo de Ainsworth-Rankin para laestimación de errores a posteriori en problemas de deformación plana

resueltos mediante el método de los elementos finitos.

Autor:Fernández Naval, Álvaro - [email protected]

Director:García Archilla, Bosco - [email protected]

Matemática aplicada II.Escuela Técnica Superior de Ingeniería.

Universidad de Sevilla.Sevilla, 2014.

Page 4: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons
Page 5: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Proyecto Fin de Carrera: Programación y estudio del algoritmo de Ainsworth-Rankin parala estimación de errores a posteriori en problemas de deformación plana resueltos mediante elmétodo de los elementos finitos.

Autor: Álvaro Fernández Naval - [email protected].

Director: Bosco García Archilla - [email protected].

El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientesprofesores:

Presidente:

Vocal/es:

Secretario:

Acuerdan otorgarle la calificación de:

El Secretario del Tribunal

Fecha:

Page 6: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons
Page 7: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

A Carmen, que siempre creyó en mímás de lo que yo lo hacía.

Page 8: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons
Page 9: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Agradecimientos

En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, sudedicación, meticulosidad, paciencia y, sobre todo, su firmeza y tenacidad en la consecución deltrabajo bien hecho.

A pesar de que ha sido un camino largo y difícil, nunca me ha faltado ni su ayuda, ni suconfianza. Ha sido un placer trabajar con alguien tan excepcional, estaré siempre agradecidode corazón.

En segundo lugar, quiero agradecer también a mi familia y amigos todo su apoyo, quesiempre me ha impulsado a llegar donde hoy estoy. Son mi familia porque me apoyaron cuandolo necesitaba, son mi familia por todo lo que han hecho por mí.

Por último, quiero agradecer también a todos los profesores que he tenido a lo largo de mivida académica todo lo que me enseñaron. Agradezco a los buenos profesores haberme permitidocrecer como persona y a los malos, haberme hecho más fuerte.

Álvaro Fernández Naval,Ingeniero Aeronáutico.

Sevilla, 2014

Page 10: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons
Page 11: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Resumen

El presente documento es la memoria relativa al Proyecto Fin de Carrera “Programacióny estudio del algoritmo de Ainsworth-Rankin para la estimación de errores a posteriori enproblemas de deformación plana resueltos mediante el método de los elementos finitos”.

El objetivo del Proyecto es doble: por una parte se pretende programar computacionalmenteel algoritmo de Ainsworth-Rankin y, por otra, evaluar la bondad e idoneidad del mismo comocriterio de refinamiento en el proceso de refinamiento adaptativo.

El proceso de refinamiento adaptativo en métodos de elementos finitos consiste en lasubdivisión reiterada de ciertos elementos de una partición del dominio usando como criteriode refinamiento un procedimiento que se sirve, a su vez, de la solución del problema obtenidocon la partición inmediatamente anterior.

La programación y el desarrollo se ha realizado sobre el proceso completo de refinamientoadaptativo, esto es, se ha programado y desarrollado el método de los elementos finitos (aplicadoa problemas de elasticidad de deformación plana), el propio algoritmo de Ainsworth-Rankin(como criterio de refinamiento de elementos) y el proceso de refinamiento de malla.

La memoria se divide en seis grandes secciones:

La primera es una introducción al proceso de refinamiento adaptativo, donde se comentalas partes que lo componen y la interacción entre ellas.

La segunda es una exposición completa del problema de elasticidad de deformación planay su resolución mediante el método de elementos finitos.

La tercera versa esencialmente sobre la implementación computacional del algoritmo deAinsworth-Rankin. Debido a que su exposición está ya recogida en las obras [1] y [2], seha optado por tratar esencialmente su programación, ya que este aspecto no se encuentratratado con detalle (aspecto que ya se irá comentando y ejemplificando a lo largo delpresente documento).

La cuarta es una descripción sucinta de cómo llevar a cabo la subdivisión de ciertoselementos y la posterior eliminación de nodos colgantes.

La quinta es una descripción y una visión general de cómo operan entre sí los tres grandesbloques del proceso de refinamiento adaptativo una vez que se han tratado cada uno deellos por separado, a saber: la resolución del problema mediante el método de los elementosfinitos, la ejecución del algoritmo de estimación de errores a posteriori y el refinamientode la malla.

La sexta y última es una exposición de los resultados obtenidos al ejecutar el procesode refinamiento adaptativo sobre un problema usando el algoritmo de Ainsworth-Rankin como criterio de refinamiento. Sobre dicho problema, se analizará si tienden a

Page 12: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

anularse las estimaciones de los errores en desplazamientos en los sucesivos refinamientos(convergencia) y se verificará que, tal como exponen los autores en [1], el algoritmo ofrececotas superiores de la norma de la energía de los errores en desplazamientos.

A lo largo de la memoria, a medida que se vayan tratando los algoritmos, se iránreferenciando los programas necesarios para ejecutar los cálculos relativos al proceso derefinamiento adaptativo. Dichos programas están escritos en lenguaje de programación deMATLAB y están probados en la versión MATLAB R2011a. Todos ellos se encuentran expuestosen la seccion 8 (Anexos).

En lo relativo a las unidades empleadas cabe destacar lo siguiente: no se va a usar enadelante ninguna unidad específica para cada magnitud, por lo que se deja al lector la eleccióndel conjunto de las mismas. Esto es una práctica habitual en los paquetes de software queresuelven problemas de elasticidad mediante el método de elementos finitos (como la duplaPatran-Nastran o ANSYS), en los que sólo se introducen las cantidades numéricas (que elusuario debe asegurarse que son coherentes entre sí) y el programa devuelve los resultados enaquel marco de unidades que el usuario haya decidido utilizar.

Así, a modo de ejemplo, si el usuario decide que las medidas del sólido serán introducidas enmilímetros, los desplazamientos estarán expresados también en milímetros. No sería coherente,por ejemplo, usar metros para medir longitudes, segundos para medir tiempos, kilogramos paramedir masas y usar una unidad distinta de kilogramos partidos de metros cuadrados y segundosal cuadrado (kg ·m−2 · s−2) para medir las fuerzas por unidad de volumen en el sólido.

Así, aunque en los programas mostrados se indica en qué unidades deben estar las variablessegún el Sistema Internacional, estas pueden ser modificadas siempre y cuando se respete lacoherencia entre magnitudes.

Page 13: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Índice

1. Introducción y descripción general del proceso de refinamiento adaptativo. 1

1.1. El problema de elasticidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2. El método de los elementos finitos aplicado al problema de elasticidad. . . . . . 7

1.3. Generación de mallas mediante estimaciones de errores a posteriori. . . . . . . . 8

2. Resolución del problema de elasticidad de deformación plana medianteelementos finitos cuadráticos. 10

2.1. Elasticidad plana: estados de deformación plana y de tensión plana. . . . . . . . 10

2.1.1. El estado de tensión plana. . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1.2. El estado de deformación plana. . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.3. Equivalencia entre los estados de tensión plana y deformación plana. . . 21

2.2. Discretización del dominio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2.1. Triangulación del dominio. . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.2.2. La transformación afín al triángulo de referencia. . . . . . . . . . . . . . 27

2.2.3. Funciones base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.2.4. Entes geométricos derivados de la triangulación. . . . . . . . . . . . . . . 34

2.2.5. Solución del método de los elementos finitos. . . . . . . . . . . . . . . . . 35

2.3. Resolución del problema de deformación plana mediante elementos finitoscuadráticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.3.1. Matriz de rigidez. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.3.2. Vector de cargas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2.3.3. Condiciones de contorno en desplazamientos. . . . . . . . . . . . . . . . . 58

2.3.4. Solución del sistema lineal S ′ ~w = ~p′. Condiciones de contorno fuertes ydébiles: desplazamientos y cargas. . . . . . . . . . . . . . . . . . . . . . . 61

3. Algoritmo de Ainsworth-Rankin. 72

3.1. Descripción general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

3.2. Cálculo del término Φ(1)K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Page 14: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

3.2.1. Cálculo de ~PK(~f). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

3.2.2. Cálculo de Pγg(n) y Pγg(t). . . . . . . . . . . . . . . . . . . . . . . . . . . 77

3.2.3. Cálculo de los flujos ~gK . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

Patches de vértice interior. . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Patches de vértice exterior con lados Neumman-Neumman. . . . . . . . . 89

Patches de vértice exterior con lados Dirichlet-Neumman. . . . . . . . . . 91

Patches de vértice exterior con lados Dirichlet-Dirichlet. . . . . . . . . . . 93

3.2.4. Obtención de Φ(1)K a través de los flujos ~gK,γ. . . . . . . . . . . . . . . . . 100

3.3. Cálculo del término Φ(2)K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

3.3.1. Cálculo de CK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

3.3.2. Cálculo del término osc(~f,K). . . . . . . . . . . . . . . . . . . . . . . . . 108

3.4. Cálculo del término Φ(3)K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

3.4.1. Cálculo de CKγ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

3.4.2. Cálculo de osc(g(t), g(n), γ

). . . . . . . . . . . . . . . . . . . . . . . . . 109

3.5. Cálculo del término Ψ(1)K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

3.6. Cálculo del término Ψ(2)K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

3.7. Cómputo de todos los términos para el cálculo de la cota de la norma de laenergía del error en desplazamientos sobre cada elemento. . . . . . . . . . . . . . 112

4. Refinamiento del mallado. 114

4.1. Refinamientos rojos sobre los elementos marcados. . . . . . . . . . . . . . . . . . 115

4.1.1. Modificación de z, T e ~i. . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

4.1.2. Modificación de N , C(1)n , ~zd y zdes para lados frontera. . . . . . . . . . . . 116

4.2. Eliminación de los nodos colgantes mediante sucesivos refinamientos verdes. . . . 119

4.2.1. Modificación de z, T e ~i. . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

4.2.2. Modificación de N , C(1)n , ~zd y zdes para lados frontera. . . . . . . . . . . . 122

5. Elementos finitos adaptativos: una visión de conjunto. 124

Page 15: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

6. Estudios, resultados numéricos y conclusiones. 127

6.1. Problema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

6.2. Conclusiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

7. Bibliografía. 144

8. Anexos. 145

8.1. Programas y archivos MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . 145

Page 16: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons
Page 17: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Índice de códigos MATLAB1. ar.m: Programa para ejecutar el algoritmo de Ainsworth-Rankin para aproxi-

maciones conformes, lados frontera con condiciones puras y variación a lo sumocuadrática de las tensiones aplicadas y los desplazamientos prescritos en los ladosfrontera de la partición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

2. bisectri.m: Programa para realizar un refinamiento verde sobre un cierto númerode elementos dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

3. buscacolu.m: Programa que sirve para encontrar la primera columna de unamatriz (de dimensiones 2 × n) que es igual a un cierto vector (de dimensiones2× 1) o al vector con las componentes cambiadas. . . . . . . . . . . . . . . . . . 162

4. buscacoluex.m: Programa que sirve para encontrar la primera columna de unamatriz (de dimensiones 2 × n) que es igual a un cierto vector (de dimensiones2× 1). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

5. cambio.m: Programa para obtener las matrices y vectores relativos a lastransformaciones afines de cada triángulo de la partición al triángulo de referencia.164

6. coeficua.m: Programa para obtener los coeficientes de las funciones base escalarescuadráticas en el triángulo de referencia. . . . . . . . . . . . . . . . . . . . . . . 166

7. coefilin.m: Programa para obtener los coeficientes de las funciones base escalareslineales en el triángulo de referencia . . . . . . . . . . . . . . . . . . . . . . . . . 167

8. comparti.m: Programa que sirve para obtener un vector que en la componentei-ésima contiene el índice de la función base de un elemento K ′ (que comparte unlado con el elementoK) que vale lo mismo en cualquier punto del lado compartidoque la función base i-ésima del elemento K. . . . . . . . . . . . . . . . . . . . . 168

9. delhn.m: Programa para realizar tantos refinamientos verdes en aquelloselementos con nodos colgantes de tipo 1 y 2 como sea necesario para que lapartición termine por no contener ninguno. . . . . . . . . . . . . . . . . . . . . . 170

10. delinacua.m: Programa que permite redefinir las matrices T , z y N dadas paraelementos lineales y adaptarlas a elementos cuadráticos. . . . . . . . . . . . . . . 174

11. derifi.m: Programa para calcular las derivadas parciales de las funciones base. . . 17712. distintos.m: Programa para saber qué valores de una matriz A (de dimensiones

2× n) no están repetidas un número par veces. . . . . . . . . . . . . . . . . . . 17813. efadapt_ar.m: Programa para llevar a cabo el proceso de refinamiento adaptativo

en problemas de deformación plana usando el algoritmo de Ainsworth-Rankinpara estimar los errores a posteriori. . . . . . . . . . . . . . . . . . . . . . . . . . 179

14. estudio.m: Archivo para ejecutar el problema del trapecio. (Problema dememebrana de Cook incluido por si resulta de interés). . . . . . . . . . . . . . . 189

15. exteriores.m: Programa para obtener los nodos vértice exteriores vecinos a cadauno de los nodos vértice exteriores de la partición. . . . . . . . . . . . . . . . . . 191

16. fB.m: Programa para calcular las cantidades BKij,kl. . . . . . . . . . . . . . . . . 192

17. fem_pd.m: Programa para resolver un problema de deformación plana medianteelementos finitos cuadráticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

Page 18: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

18. ficua.m: Programa para hallar el valor de las funciones base escalares cuadráticasen cualquier punto del triángulo de referencia. . . . . . . . . . . . . . . . . . . . 199

19. filin.m: Programa para hallar el valor de las funciones base escalares lineales encualquier punto del triángulo de referencia. . . . . . . . . . . . . . . . . . . . . . 200

20. flujos.m: Programa para calcular los flujos lineales de la partición. . . . . . . . . 20121. fpuv.m: Programa para calcular las fuerzas por unidad de volumen en cada punto

del sólido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21222. geometria.m: Programa para obtener todos los entes geométricos relativos a la

partición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21323. informacion.m: Programa para generar el vector ~i, de nz componentes, que en

la componente i-ésima tiene un 1 si el nodo i-ésimo es frontera y un 0 en casocontrario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

24. inte.m: Programa para realizar integrales con integrandos tipo f·g en el triángulode referencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

25. interdesp.m: Programa para interpolar los desplazamientos de ciertos puntos deun mallado según los desplazamientos nodales del elemento al que pertenecen. . 219

26. ladocom.m: Programa para encontrar el triángulo que comparte un cierto ladode otro triángulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

27. ladomayor.m: Programa dedicado a obtener la longitud del lado mayor de cadatriángulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

28. marca.m: Programa para rellenar ciertos triángulos de un color (rojo o verde) deuna partición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

29. MDD.m: Programa para la generar la matriz de coeficientes y las dos columnasde la matriz de datos para patches de nodos situados en la frontera y con ladosDirichlet-Dirichlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

30. MDN.m: Programa para la generar la matriz de coeficientes y las dos columnasde la matriz de datos para patches de nodos situados en la frontera y con ladosDirichlet-Neumman. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

31. MI.m: Programa para la generar la matriz de coeficientes y las dos columnas dela matriz de datos para patches interiores. . . . . . . . . . . . . . . . . . . . . . 230

32. misd.m: Programa para obtener los índices de los nodos de cada lado Dirichleta partir de T y ~zd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

33. MNN.m: Programa para la generar la matriz de coeficientes y las dos columnasde la matriz de datos para patches de nodos situados en la frontera y con ladosNeumman-Neumman. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

34. nodotri.m: Programa para obtener los nodos vértice exteriores vecinos a un nodovértice exterior dado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

35. ordene.m: Programa para ordenar los elementos de un patch en sentido horario(patches de nodo en lado frontera). . . . . . . . . . . . . . . . . . . . . . . . . . 238

36. ordeni.m: Programa para ordenar los elementos de un patch en sentido horariosiendo el primero aquel que se introduzca en argumento como primero (patchesde nodos interiores). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

37. orientacargas.m: Programa para obtener C(2)n a partir de C(1)

n . . . . . . . . . . . 242

Page 19: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

38. plottrl.m: Programa para representar un mallado dado por las matrices z y T enrojo, azul o negro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

39. problema.m: Programa para representar la malla del problema, las condicionesde contorno y las fuerzas por unidad de volumen. . . . . . . . . . . . . . . . . . 244

40. prodfunbaslin_lad.m: Programa para obtener∫ 1

0 NiNjdl, siendo Ni y Nj lasfunciones base escalares cuadráticas i-ésima y j-ésima respectivamente. . . . . . 246

41. prodfunbaslin_tri.m: Programa que sirve para obtener la integral (de formaexacta) sobre el triángulo de referencia del producto de dos funciones base baseescalares lineales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

42. refex.m: Programa para ejecutar la transformación de un punto del triángulo dereferencia al triángulo de trabajo. . . . . . . . . . . . . . . . . . . . . . . . . . . 249

43. refinamiento.m: Programa para refinar la malla del problema aplicando un bulkcriterion sobre los |||~es|||K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

44. refxe.m: Programa para ejecutar la transformación de un punto del triángulo detrabajo al triángulo de referencia. . . . . . . . . . . . . . . . . . . . . . . . . . . 253

45. sigfunu.m: Programa para obtener el tensor de tensiones y de deformacionesde uno o varios puntos con respecto a un elemento de la partición dados losdesplazamientos en sus nodos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

46. tenfro.m: Programa para representar el módulo de la tensión normal y tangencial.La representación se hace en función de la cordenada s. . . . . . . . . . . . . . . 256

47. trabisn.m: Programa que sirve para encontrar a qué elemento pertenece cada ladoNeumman y, qué índice le corresponde al lado Neumman dentro del elemento (1,2 ó 3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

48. tricon.m: Programa que sirve para ejecutar un refinamiento rojo sobre ciertoselementos de la partición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

49. vectores.m: Programa para obtener el conjunto de vectores normales exterioresy tangenciales antihorarios a cada lado de cada triángulo. . . . . . . . . . . . . . 266

Page 20: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons
Page 21: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

1. Introducción y descripción general del proceso derefinamiento adaptativo.

1.1. El problema de elasticidad.

El problema de elasticidad consiste en la determinación del campo de desplazamientos ~usobre el sólido Ω (cuyo comportamiento es elástico) bajo estudio, sometido:

En cada punto del interior del sólido Ω a unas fuerzas por unidad de volumen ~f .

En cada punto del contorno del sólido, ∂Ω, y en cada una de ciertas tres direccionesperpendiculares entre sí, unas cargas externas q (Neumman) o unos desplazamientosprescritos d (Dirichlet).

Expongamos estas ideas sobre el ejemplo (de carácter académico) de la figura 1:

2

1

z

yx

z

yx

e1e2

e3

3

Figura 1: Ejemplo de planteamiento de problema de elasticidad.

Se trata de un sólido prismático rectangular empotrado completamente en la cara contrariaa la cara 1 en el que:

En cada punto del sólido actúa un campo de fuerza por unidad de volumen ~f =

0fy

0

(referido a los ejes x, y y z).

En cada punto de la cara 1 actúa:

1

Page 22: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

• una carga q(1)x en la dirección del eje x,

• una carga q(1)y en la dirección del eje y,

• un desplazamiento d(1)z en la dirección del eje z.

En cada punto de la cara 2 actúa:

• una carga q(2)x en la dirección del eje x,

• una carga nula en la dirección del eje y,• una carga q(2)

z en la dirección del eje z.

En cada punto de la cara 3 actúa:

• una carga q(3)e1 en la dirección del eje e1,

• una carga q(3)e2 en la dirección del eje e2,

• un desplazamiento d(3)e3 en la dirección del eje e3.

En cada punto de la cara opuesta a la cara 1, se tienen desplazamientos nulos impuestosen tres direcciones cualesquiera que se tomen.

Las caras restantes (las opuestas a las caras 2 y 3) son libres, es decir, se aplica siempreuna carga nula sobre tres direcciones cualesquiera que se tomen.

Como se puede ver, la casuística de fuerzas y desplazamientos impuestos en las caras de unsólido a la hora de plantear un problema de elasticidad puede llegar a ser muy amplia.

Durante la resolución del problema se hace uso de variables intermedias como el tensor detensiones σ o el tensor de deformaciones ε sobre el dominio Ω.

No se va a hacer aquí una deducción física de las ecuaciones de la elasticidad, ya que elloimplicaría una extensión demasiado grande para algo que puede ser consultado en cualquierotra obra especializada1. Por contra, sí se van a comentar aquellos aspectos más interesantes eimportantes de las mismas.

En primer lugar, hay que tener en cuenta las hipótesis, aproximaciones y condiciones quese toman sobre el problema para que las ecuaciones respondan, en primera aproximación, alcomportamiento real del sólido elástico.

1De entre dichas obras especializadas se recomienda [3] por la extensión que se le dedica a la deducción delas ecuaciones elásticas y por su introducción notacional y ejemplos prácticos que resultan un valor añadido.La deducción hecha en [4] es esencialmente idéntica a la realizada en [3], pero se recomienda por la introducción

hecha antes de cada capítulo relativo a la deducción de las ecuaciones elásticas (capítulos 1-5) que permite unavisión global y clara del tema.Finalmente, la obra [5] recoge en un sólo capítulo y de una forma directa y rápida la deducción de todas las

ecuaciones. Sin duda, la opción más rápida si el lector no dispone de tiempo para dedicarle a la deducción delas ecuaciones elásticas.

2

Page 23: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Se asume la hipótesis de pequeños desplazamientos. Esto quiere decir que los desplazamientosde cualquier punto del sólido son tan pequeños que las ecuaciones de equilibrio pueden plantearsesobre la situación indeformada. Es evidente que la aplicación de cargas y desplazamientosprescritos (no triviales) sobre un sólido dará lugar a un campo de desplazamientos que, enel caso de llegar a una situación estática, tendrá unas cargas aplicadas sobre una situacióndeformada.

Sin embargo, para poder resolver este problema habría que calcular qué campo dedesplazamientos producen las cargas, aplicar las mismas a la nueva situación deformada yvolver a proceder del mismo modo hasta que se alcance la situación de equilibrio. Si yaes costoso, en general, tanto matemáticamente como físicamente, resolver el problema deelasticidad suponiendo cargas y desplazamientos aplicados en la situación indeformada, resolverel problema recursivamente es aún más complejo.

Así pues, si se tiene en cuenta que las aplicaciones estructurales tienen unos campos dedesplazamientos pequeños, puede aceptarse que la solución obtenida al asumir que las cargasestán aplicadas en la situación indeformada no estará lejos de la solución obtenida al haberconsiderado que las cargas están aplicadas sobre la situación deformada.

Por otra parte, se asumen pequeñas deformaciones, lo que quiere decir que las derivadasparciales de los desplazamientos en cualquier punto del dominio sólido Ω son pequeñas frentea la unidad.

Es turno ahora de las condiciones. La primera de ellas es que el sólido Ω va a tener uncomportamiento elástico, lo que quiere decir que si sobre el sólido se aplican unas cargas ydesplazamientos prescritos y más tarde estas cesan, la situación final es igual a la situaciónindeformada.

Las dos siguientes condiciones versan también sobre el comportamiento del material. Laprimera de ellas es que se trabaja con un sólido Ω que, además de ser elástico, tiene uncomportamiento lineal. Esto quiere decir que su comportamiento es tal que si las cargas ydesplazamientos prescritos aumentan su valor proporcionalmente, el campo de desplazamientosaumenta también en la misma proporción.

La segunda de ellas es que se trata de un material isótropo caracterizado por dos constantes:el módulo de Young E y el coeficiente de Poisson ν. Ambas dos son constantes propias delmaterial sobre el que se esté trabajando y obtenibles empíricamente a través del ensayo detracción.

Una vez comentadas sucintamente las hipótesis, aproximaciones y condiciones, se procedea exponer las ecuaciones que rigen el problema de elasticidad lineal en formato de índices ydesarrolladas.

Para la notación de índices se va a asociar i = j = 1 con x, i = j = 2 con y e i = j = 3 conz. Además, cuando proceda, se asociará también α = β = 1 con x y α = β = 2 con y.

3

Page 24: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

σ =

σxx σxy σxz

σyx σyy σyz

σzx σzy σzz

, ε =

εxx εxy εxz

εyx εyy εyz

εzx εzy εzz

, ~u =

ux

uy

uz

, ~f =

fx

fy

fz

.

Ecuaciones de equilibrio interno,

∀ ~r =

x

y

z

∈ Ω,

σij,j + fi = 0

∂σxx∂x

+ ∂σxy∂y

+ ∂σxz∂z

+ fx = 0,

∂σyx∂x

+ ∂σyy∂y

+ ∂σyz∂z

+ fy = 0,

∂σzx∂x

+ ∂σzy∂y

+ ∂σzz∂z

+ fz = 0.

σij = σji

σxy = σyx,

σxz = σzx,

σyz = σzy.

Ecuaciones de compatibilidad,

∀ ~r =

x

y

z

∈ Ω, εij = 12 (ui,j + uj,i)

εxx = ∂ux∂x

,

εxy = 12

(∂ux∂y

+ ∂uy∂x

)= εyx,

εxz = 12

(∂ux∂z

+ ∂uz∂x

)= εzx,

εyx = 12

(∂uy∂x

+ ∂ux∂y

)= εxy,

εyy = ∂uy∂y

,

εyz = 12

(∂uy∂z

+ ∂uz∂y

)= εzy,

εzx = 12

(∂uz∂x

+ ∂ux∂z

)= εxz,

εzy = 12

(∂uz∂y

+ ∂uy∂z

)= εyz,

εzz = ∂uz∂z

.

4

Page 25: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Ecuaciones de comportamiento,

∀ ~r =

x

y

z

∈ Ω, εij = 1 + ν

Eσij −

ν

Eσkkδij

εxx = 1 + ν

Eσxx −

ν

E(σxx + σyy + σzz) ,

εxy = 1 + ν

Eσxy,

εxz = 1 + ν

Eσxz,

εyx = 1 + ν

Eσyx,

εyy = 1 + ν

Eσyy −

ν

E(σxx + σyy + σzz) ,

εyz = 1 + ν

Eσyz,

εzx = 1 + ν

Eσzx,

εzy = 1 + ν

Eσzy,

εzz = 1 + ν

Eσzz −

ν

E(σxx + σyy + σzz) .

Condiciones de contorno,

∀ ~r =

x

y

z

∈ ∂Ω,

Si se dan condiciones Dirichlet en ese punto en la dirección ~v:

ukvk = d0,

uxvx + uyvy + uzvz = d0.

Si se dan condiciones Neumman en ese punto en la dirección ~v:

(σijnj) vi = q0,

σxxnxvx +σxynyvx +σxznzvx +σyxnxvy +σyynyvy +σyznzvy +σzxnxvz +σzynyvz +σzznzvz = q0.

Donde ~n es el vector unitario normal exterior al contorno en el punto ~r y ~v es el vectorunitario que marca la dirección en la que se impone la condición Dirichlet o Neumman en elpunto ~r.

Sin embargo, no todas las ecuaciones expuestas anteriormente son linealmente independien-tes. De las ecuaciones de compatibilidad se obtiene que la matriz de deformaciones es simétrica,

5

Page 26: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

algo que también se obtiene mediante las ecuaciones de comportamiento al saber que, a su vez,el tensor de tensiones es también simétrico según las ecuaciones de equilibrio. Es por esto quedel conjunto de 24 ecuaciones anteriores, 3 de ellas son linealmente dependientes de las demás.

Así pues, se tiene un sistema de 21 ecuaciones en derivadas parciales linealmenteindependientes para resolver un problema que posee 21 incógnitas (variables a lo largo delsólido).

A pesar de que existe un conjunto de problemas con geometría y cargas simples que tienenuna solución analítica conocida, esta no es en absoluto la tónica general y, obtener la soluciónanalítica de estas ecuaciones para cualquier tipo de problema es de facto imposible.

Es por esto que han surgido muchos métodos de obtención de la solución del problema deelasticidad, como:

Método inverso: suposición de la solución y comprobación posterior de la satisfacción delas ecuaciones del problema.

Método semiinverso: suposición de la solución con ciertas constantes o funciones enprincipio sin definir. Posteriormente se fuerza el cumplimiento de las ecuaciones delproblema de elasticidad para hallar el valor de estas constantes o funciones.

Manipulación de las ecuaciones elásticas:

• Planteamiento de Navier: consiste en formular el problema de elasticidad sin haceruso ni del tensor de deformaciones ni de tensiones, es decir, únicamente mediante elcampo de desplazamientos.

• Planteamiento de Beltrami-Michel: consiste en formular el problema de elasticidadhaciendo uso únicamente del tensor de tensiones.

Método de Kolosoff-Mushelishvili: uso de la variable compleja para la resolución deproblemas planos (en el ámbito de la mecánica de la fractura).

Método de los elementos finitos: uso del método de elementos finitos aplicado al problemade elasticidad.

El método que ha conseguido resolver (numéricamente) más problemas y el más fructíferode todos ha sido el método de los elementos finitos. Su gran ventaja reside en la posibilidadde resolver2 casi cualquier problema de elasticidad conociendo su geometría, cargas ydesplazamientos prescritos de una manera casi automatizada (gracias al uso de ordenadores).

Además, si el método se aplica sobre una malla lo suficientemente fina (concepto que sedefinirá más adelante), pueden obtenerse soluciones con un muy bajo error con respecto a lasolución real del problema.

2En sentido estricto, obtener una solución aproximada.

6

Page 27: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

1.2. El método de los elementos finitos aplicado al problema deelasticidad.

El método de los elementos finitos (MEF) es un procedimiento de resolución numérica deproblemas cuyas ecuaciones constitutivas están formuladas en derivadas parciales sobre undominio Ω.

El dominio (en nuestro caso el sólido elástico) se divide en una serie de subdominios (losllamados elementos) cuyos interiores tienen intersección vacía y cuya unión (la de todos lossubdominios) da lugar a la adherencia de Ω.

Por otra parte, sobre cada elemento se colocan los llamados nodos. El número de estos ysu posición dentro de cada elemento depende del tipo de elemento que se use. Al conjunto denodos y elementos que conforman la partición del sólido original se conoce como malla.

Los cálculos se realizan sobre la malla de nodos en la que se ha hecho la subdivisióndel dominio en elementos. Así, tras una manipulación de las ecuaciones de la elasticidad,estas dan lugar a un sistema del tipo A~x = ~b, que permite calcular una aproximación delos desplazamientos en los nodos que se han colocado sobre la triangulación. La matriz decoeficientes de dicho sistema de ecuaciones se llama matriz de rigidez del sistema, el vector deincógnitas son los desplazamientos nodales y el vector de datos se denomina vector de cargas.Cabe destacar que el número de ecuaciones de dicho sistema es siempre proporcional al númerode nodos de la malla.

El método de los elementos finitos aplicado a un sólido elástico se programa computacio-nalmente para calcular (al menos en el presente estudio) el campo de desplazamientos y, poste-riormente, a través de las ecuaciones de compatibilidad y comportamiento se obtiene el campode deformaciones y de tensiones respectivamente.

La propiedad que probablemente sea más importante del método es la convergencia.Recuérdese que en la sección anterior se comentaba que “si el método se aplica sobre una mallalo suficientemente fina (...), pueden obtenerse soluciones con un muy bajo error con respecto ala solución real del problema” y, es ahora cuando puede cobrar sentido la frase. Si se consideranparticiones de elementos sucesivamente más finas (el diámetro de las particiones tiende a cero),la solución numérica calculada converge a la solución exacta del sistema de ecuaciones.

Si bien ya se ha comentado que una malla suficientemente fina proporciona (en general)resultados aceptables, también hay que tener en cuenta que el número de nodos hace crecerproporcionalmente el número de ecuaciones del sistema lineal. Además, hay que tener muypresente que el número de operaciones requeridas para resolver un sistema de ecuaciones linealespuede, en ocasiones, crecer como una potencia del número de ecuaciones de exponente mayorque la unidad.

Por esto, es necesario colocar los nodos convenientemente sobre el dominio para obteneruna aproximación lo más precisa posible a la solución real con un bajo costo computacional.

7

Page 28: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Una de las formas de conseguirlo es mediante el uso de mallas adaptadas (también llamadasadaptativas). Su generación se hace, típicamente, a través de estimaciones de errores a posteriori.

1.3. Generación de mallas mediante estimaciones de errores aposteriori.

Este procedimiento consiste en partir de una malla inicial (gruesa, con pocos elementos),que junto a las condiciones de contorno y las propiedades del material, permiten obtener unaprimera aproximación de la solución del problema. Evidentemente, al haber partido de unamalla gruesa, la estimación obtenida dista de la solución exacta.

Posteriormente, mediante un cierto algoritmo (que en nuestro caso será el algoritmo deAinsworth-Rankin), se obtiene una estimación del error cometido en cada uno de los elementosque conforman el dominio (en definitiva, una estimación de la mejora que podría aportar lasubdivisión de cada elemento a la solución numérica).

Más tarde, se seleccionan (con respecto a un cierto criterio) algunos de los elementos de lamalla para ser subdivididos de nuevo de alguna manera. Posteriormente, una vez que estos sehan subdividido, se subdividen otros ciertos elementos adyacentes para evitar la aparición delos nodos colgantes.

Un nodo colgante es un nodo perteneciente a más de un elemento finito que es de distintotipo para dos o más de ellos. Por ejemplo, un nodo puede ser el vértice de un elemento, peroestar situado en la mitad del lado de otro elemento. Se pueden eliminar los nodos colgantesreparticionando de nuevo la malla apropiadamente.

116

6

32

6

32331

412

Figura 2: Nodos colgantes marcados en rojo (izda.) y subdivisión del triángulo 116 en lostriángulos 331 y 412 para su eliminación (dcha.).

Así pues, una vez eliminados los nodos colgantes, se obtiene una malla más fina que la mallade la que se partió inicialmente.

Repitiendo este mismo procedimiento un cierto número de veces, se termina obteniendo una

8

Page 29: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

malla que, con el número de nodos que contiene, es capaz de distribuirlos de tal manera que lasolución numérica final satisfaga un cierto criterio (típicamente que el error estimado sea menorque una tolerancia fijada de antemano).

Mallado inicial.Condiciones de contorno:

Tensiones

DesplazamientosMáximo número de iteraciones.Tolerancia del error estimado, e.

Resolución del problemade elementos finitos,obtención del campo~u en los nodos.

Obtención del estimadore en cada elemento enfunción del campo ~u.

¿Los estimadores de todoslos elementos son menoresque e (la tolerancia delerror estimado) o se haalcanzado el máximo

número de iteraciones?.

Refinamiento de la malla.

Fin del algoritmo.

Eliminación de losnodos colgantes.

No

Figura 3: Diagrama de flujo del proceso de refinamiento adaptativo.

9

Page 30: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

2. Resolución del problema de elasticidad de deforma-ción plana mediante elementos finitos cuadráticos.

Una vez comentados (de forma muy breve y general) el problema de elasticidad y sudiscretización para el método de los elementos finitos, se da paso ahora a la explicación del tipode problema específico que se va a abordar en el Proyecto y cómo se procede en su resoluciónnumérica.

2.1. Elasticidad plana: estados de deformación plana y de tensiónplana.

En general, las ecuaciones del problema de elasticidad están escritas para un sólidotridimensional. Sin embargo, existen situaciones que permiten obtener la solución deun problema de elasticidad (tridimensional), resolviendo únicamente un cierto problemabidimensional.

Estos ciertos problemas bidimensionales son el resultado de introducir en las ecuacionesdel problema de elasticidad unas suposiciones de antemano que, unidas a una geometríaespecífica, permiten reducir las variables del problema y plantear las ecuaciones sobre un sólidobidimensional.

Ahora, se van a ver en concreto dos conjuntos de suposiciones que permiten obtener lasolución de un problema de elasticidad tridimensional resolviendo unas ecuaciones con menosvariables y sobre una geometría bidimensional.

10

Page 31: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Ecuaciones de equilibrio interno Ecuaciones de compatibilidad Ecuaciones de comportamiento

∀ ~r =

x

y

z

∈ Ω. ∀ ~r =

x

y

z

∈ Ω. ∀ ~r =

x

y

z

∈ Ω.

σij,j + fi = 0, εij = 12 (ui,j + uj,i) , εij = 1+ν

E σij − νEσkkδij ,

∂σxx∂x + ∂σxy

∂y + ∂σxz∂z + fx = 0, εxx = ∂ux

∂x , εxx = 1+νE σxx − ν

E (σxx + σyy + σzz) ,∂σyx∂x + ∂σyy

∂y + ∂σyz∂z + fy = 0, εxy = 1

2

(∂ux∂y + ∂uy

∂x

)= εyx, εxy = 1+ν

E σxy,

∂σzx∂x + ∂σzy

∂y + ∂σzz∂z + fz = 0. εxz = 1

2

(∂ux∂z + ∂uz

∂x

)= εzx, εxz = 1+ν

E σxz,

εyx = 12

(∂uy∂x + ∂ux

∂y

)= εxy, εyx = 1+ν

E σyx,

σij = σji, εyy = ∂uy∂y , εyy = 1+ν

E σyy − νE (σxx + σyy + σzz) ,

εyz = 12

(∂uy∂z + ∂uz

∂y

)= εzy, εyz = 1+ν

E σyz,

σxy = σyx, εzx = 12

(∂uz∂x + ∂ux

∂z

)= εxz, εzx = 1+ν

E σzx,

σxz = σzx, εzy = 12

(∂uz∂y + ∂uy

∂z

)= εyz, εzy = 1+ν

E σzy,

σyz = σzy. εzz = ∂uz∂z . εzz = 1+ν

E σzz − νE (σxx + σyy + σzz) .

Condiciones de contorno

∀ ~r =

x

y

z

∈ ∂Ω.

Si se dan condiciones Dirichlet en ese punto en la dirección ~v:ukvk = d0,

uxvx + uyvy + uzvz = d0.

Si se dan condiciones Neumman en ese punto en la dirección ~v:(σijnj) vi = q0,

σxxnxvx + σxynyvx + σxznzvx + σyxnxvy + σyynyvy + σyznzvy + σzxnxvz + σzynyvz + σzznzvz = q0.

Tabla 1: Ecuaciones y condiciones de contorno del problema de elasticidad.

11

Page 32: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

2.1.1. El estado de tensión plana.

El primero de estos casos es el problema conocido como estado de tensión plana. En estetipo de situaciones se cumple que, para una geometría constante a lo largo de un ciertoeje (supongamos a partir de ahora el eje z), en cualquier punto del interior del sólido Ω,σxz = σyz = σzz = 0. Esto implica que en cualquier sección del sólido Ω perpendicular al eje z,no se transmiten cargas a sus secciones vecinas.

Por tanto, tomando cualquier sección (perpendicular al eje z) y resolviendo las ecuacionesdel problema de elasticidad (reducidas), se puede obtener cualquier variable del problema encualquier sección del sólido.

Veamos ahora qué implicaciones conlleva asumir que en el sólido Ω, se dé

σxz = σyz = σzz = 0.

Según las ecuaciones de equilibrio interno,

σxy = σyx,

σxz︸︷︷︸=0

= σzx,

σyz︸︷︷︸=0

= σzy.

σxy = σyx,

σzx = 0,σzy = 0.

σαβ = σβα,

σzx = 0,σzy = 0.

∂σxx∂x

+ ∂σxy∂y

+ ∂σxz∂z︸ ︷︷ ︸=0

+fx = 0,

∂σyx∂x

+ ∂σyy∂y

+ ∂σyz∂z︸ ︷︷ ︸=0

+fy = 0,

∂σzx∂x︸ ︷︷ ︸=0

+ ∂σzy∂y︸ ︷︷ ︸=0

+ ∂σzz∂z︸ ︷︷ ︸=0

+fz = 0.

∂σxx∂x

+ ∂σxy∂y

+ fx = 0,

∂σxy∂x

+ ∂σyy∂y

+ fy = 0,

fz = 0.

σαβ,β + fα = 0,fz = 0.

Estas condiciones vienen a reflejar que si las tensiones relativas al eje z son nulas, no puedenexistir fuerzas por unidad de volumen no compensadas en esta dirección.

Cabe destacar que si bien hasta ahora se habían tomado en la notación de índices i = 1, 2, 3y j = 1, 2, 3 (relacionados con x, y y z respectivamente), ahora se ha hecho uso de α = 1, 2 yβ = 1, 2 (relacionados con x e y respectivamente).

Según la ley de comportamiento,

12

Page 33: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

εxx =1 + ν

Eσxx −

ν

E

σxx + σyy + σzz︸︷︷︸=0

,

εxy =1 + ν

Eσxy ,

εxz =1 + ν

Eσxz︸︷︷︸=0

,

εyx =1 + ν

Eσyx,

εyy =1 + ν

Eσyy −

ν

E

σxx + σyy + σzz︸︷︷︸=0

,

εyz =1 + ν

Eσyz︸︷︷︸=0

,

εzx =1 + ν

Eσzx︸︷︷︸=0

,

εzy =1 + ν

Eσzy︸︷︷︸=0

,

εzz =1 + ν

Eσzz︸︷︷︸=0

−ν

E

σxx + σyy + σzz︸︷︷︸=0

.

εxx =1 + ν

Eσxx −

ν

E(σxx + σyy) ,

εxy =1 + ν

Eσxy ,

εxz = 0,

εyx =1 + ν

Eσyx,

εyy =1 + ν

Eσyy −

ν

E(σxx + σyy) ,

εyz = 0,εzx = 0,εzy = 0,

εzz = −ν

E(σxx + σyy) .

εαβ =1 + ν

Eσαβ −

ν

Eσχχδαβ ,

εxz = 0,εyz = 0,εzx = 0,εzy = 0,

εzz = −ν

E(σxx + σyy) .

Por último, en lo relativo a la ecuación de compatibilidad,

εxx = ∂ux∂x

,

εxy = 12

(∂ux∂y

+ ∂uy∂x

)= εyx,

εxz︸︷︷︸=0

= 12

(∂ux∂z

+ ∂uz∂x

)= εzx︸︷︷︸

=0

,

εyx = 12

(∂uy∂x

+ ∂ux∂y

)= εxy,

εyy = ∂uy∂y

,

εyz︸︷︷︸=0

= 12

(∂uy∂z

+ ∂uz∂y

)= εzy︸︷︷︸

=0

,

εzx︸︷︷︸=0

= 12

(∂uz∂x

+ ∂ux∂z

)= εxz︸︷︷︸

=0

,

εzy︸︷︷︸=0

= 12

(∂uz∂y

+ ∂uy∂z

)= εyz︸︷︷︸

=0

,

εzz = ∂uz∂z

.

εxx = ∂ux∂x

,

εxy = 12

(∂ux∂y

+ ∂uy∂x

)= εyx,

0 = ∂ux∂z

+ ∂uz∂x

,

εyx = 12

(∂uy∂x

+ ∂ux∂y

)= εxy,

εyy = ∂uy∂y

,

0 = ∂uy∂z

+ ∂uz∂y

,

0 = ∂uz∂x

+ ∂ux∂z

,

0 = ∂uz∂y

+ ∂uy∂z

,

εzz = ∂uz∂z

.

εαβ = 12 (uα,β + uβ,α) ,

0 = ∂ux∂z

+ ∂uz∂x

,

0 = ∂uy∂z

+ ∂uz∂y

,

0 = ∂uz∂x

+ ∂ux∂z

,

0 = ∂uz∂y

+ ∂uy∂z

,

εzz = ∂uz∂z

.

Finalmente, con respecto a las condiciones de contorno, para que se verifique la condición

13

Page 34: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

σxz = σyz = σzz = 0, es necesario que se cumpla lo siguiente:

Una de las caras laterales (contenidas en un plano perpendicular al eje z), debe estarcompletamente empotrada en la dirección del eje z pero libre en las otras dos direcciones.

La otra cara lateral externa debe estar completamente libre.

Cada sección perpendicular al eje z debe tener las mismas condiciones de contorno.

En el contorno del sólido (excluyendo las caras laterales), en cualquier dirección noparalela al plano perpendicular al eje z, las condiciones de contorno han de ser libres, estoes, no puede imponerse ningún desplazamiento ni ninguna tensión no nula en cualquierdirección no contenida en el plano perpendicular al eje z.

En cada punto del contorno de cualquier sección perpendicular al eje z, pueden existircondiciones Neumman o Dirichlet (en cualquier dirección contenida en dicho plano).

Por tanto, el problema puede quedar reducido a un sólido bidimensional Ω′ (una seccióncualquiera paralela al plano z) en la que se plantea el siguiente problema:

14

Page 35: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Ecuaciones de equilibrio interno Ecuaciones de compatibilidad Ecuaciones de comportamiento

∀ ~r =

xy

∈ Ω′. ∀ ~r =

xy

∈ Ω′. ∀ ~r =

xy

∈ Ω′.

σαβ,β + fα = 0, εαβ = 12 (uα,β + uβ,α) , εαβ = 1+ν

E σαβ − νEσχχδαβ,

∂σxx∂x + ∂σxy

∂y + fx = 0, εxx = ∂ux∂x , εxx = 1+ν

E σxx − νE (σxx + σyy) ,

∂σyx∂x + ∂σyy

∂y + fy = 0. εxy = 12

(∂ux∂y + ∂uy

∂x

)= εyx, εxy = 1+ν

E σxy,

εyx = 12

(∂uy∂x + ∂ux

∂y

)= εxy, εyx = 1+ν

E σyx,

σαβ = σβα, εyy = ∂uy∂y . εyy = 1+ν

E σyy − νE (σxx + σyy) .

σxy = σyx.

Condiciones de contorno

∀ ~r =

xy

∈ ∂Ω′.

Si se dan condiciones Dirichlet en ese punto en la dirección ~v:uχvχ = d0,

uxvx + uyvy = d0.

Si se dan condiciones Neumman en ese punto en la dirección ~v:(σαβnβ) vα = q0,

σxxnxvx + σxynyvx + σyxnxvy + σyynyvy = q0.

Tabla 2: Ecuaciones y condiciones de contorno del problema de tensión plana.

Como se puede comprobar, en el estado de tensión plana, las ecuaciones del problemabidimensional poseen la misma forma que las ecuaciones propias de la elasticidad. Si bienintervienen menos variables, la forma de escribir las ecuaciones sigue siendo exactamente la

15

Page 36: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

misma.

Existe un aspecto importante que destacar antes de concluir esta exposición del estado detensión plana. Hay problemas en los que el sólido elástico tiene una de sus longitudes muchomenor que las otras dos (canto) y las dos caras laterales (que poseen las longitudes mayores) sonplanas y paralelas. En este caso, cuando sólo existen cargas en el canto del sólido y, además, sonperpendiculares a la normal exterior de una de las caras laterales, se puede resolver el problemade elasticidad en media aplicando las ecuaciones anteriores.

Este es el llamado estado de tensión plana generalizada. En él, se identifica el sólidotridimensional con un sólido bidimensional que resulta de tomar una de las caras externasy tomar como cargas en cada punto, la media de las cargas externas a lo largo del canto.

Si bien las ecuaciones coinciden, hay dos diferencias sutiles entre ambos estados. En primerlugar, en el estado de tensión plana se intenta resolver un problema tridimensional mediantela solución de otro problema bidimensional, y en el estado de tensión plana generalizada no sebusca resolver un problema tridimensional, sino simplemente obtener la solución de un problemabidimensional y asumir que el comportamiento en cualquier sección perpendicular al canto seráparecido al de la solución obtenida.

En segundo lugar, las cargas que aparecen en el problema bidimensional del estado de tensiónplana son las que realmente existen en ese punto, mientras que en el problema de tensión planageneralizada esas no son las cargas, sino una media de las cargas que aparecen en el canto.

2.1.2. El estado de deformación plana.

El segundo estado es conocido como estado de deformación plana. Ahora, se sigue teniendouna geometría constante a lo largo de un cierto eje (supongamos de nuevo el eje z), y, enparticular, en cualquier punto del interior del sólido Ω, se cumple que uz = 0, ux = ux(x, y) yuy = uy(x, y). Esto implica que para cualquier sección del sólido Ω perpendicular al eje z noexisten desplazamientos transversales y para cada punto del sólido, cualquier desplazamientoperpendicular al eje z es independiente de su coordenada z. Esto último quiere decir que todoslos puntos contenidos en un cierto eje paralelo al eje z, tendrán los mismos desplazamientos uxy uy.

De nuevo, veamos qué implicaciones tiene estas condiciones sobre las ecuaciones.

En primer lugar, en cuanto a la ley de compatibilidad,

16

Page 37: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

εxx = ∂ux∂x

,

εxy = 12

(∂ux∂y

+ ∂uy∂x

)= εyx,

εxz = 12

∂ux∂z︸︷︷︸=0

+ ∂uz∂x︸︷︷︸=0

= εzx,

εyx = 12

(∂uy∂x

+ ∂ux∂y

)= εxy,

εyy = ∂uy∂y

,

εyz = 12

∂uy∂z︸︷︷︸=0

+ ∂uz∂y︸︷︷︸=0

= εzy,

εzx = 12

∂uz∂x︸︷︷︸=0

+ ∂ux∂z︸︷︷︸=0

= εxz,

εzy = 12

∂uz∂y︸︷︷︸=0

+ ∂uy∂z︸︷︷︸=0

= εyz,

εzz = ∂uz∂z︸︷︷︸=0

.

εxx = ∂ux∂x

,

εxy = 12

(∂ux∂y

+ ∂uy∂x

)= εyx,

εxz = 0,

εyx = 12

(∂uy∂x

+ ∂ux∂y

)= εxy,

εyy = ∂uy∂y

,

εyz = 0,εzx = 0,εzy = 0,εzz = 0.

εαβ = 12 (uα,β + uβ,α) ,

εxz = 0,εyz = 0,εzx = 0,εzy = 0,εzz = 0.

En lo relativo a la ley de comportamiento,

17

Page 38: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

εxx =1 + ν

Eσxx −

ν

E(σxx + σyy + σzz) ,

εxy =1 + ν

Eσxy ,

εxz︸︷︷︸=0

=1 + ν

Eσxz ,

εyx =1 + ν

Eσyx,

εyy =1 + ν

Eσyy −

ν

E(σxx + σyy + σzz) ,

εyz︸︷︷︸=0

=1 + ν

Eσyz ,

εzx︸︷︷︸=0

=1 + ν

Eσzx,

εzy︸︷︷︸=0

=1 + ν

Eσzy ,

εzz︸︷︷︸=0

=1 + ν

Eσzz −

ν

E(σxx + σyy + σzz) .

εxx =1 + ν

Eσxx −

ν

E(σxx + σyy + σzz) ,

εxy =1 + ν

Eσxy ,

0 = σxz ,

0 = σyx,

εyy =1 + ν

Eσyy −

ν

E(σxx + σyy + σzz) ,

εyz =1 + ν

Eσyz ,

0 = σzx,

0 = σzy ,

σzz = ν (σxx + σyy) .

εαβ =1 + ν

Eσαβ −

ν(1 + ν)E

σχχδαβ ,

σxz = 0,σyz = 0,σzx = 0,σzy = 0,σzz = ν (σxx + σyy) .

De estas ecuaciones resultantes han de hacerse varios comentarios. En primer lugar, seobserva la ausencia de tensiones tangenciales y el valor (en general) no nulo de σzz. Esto últimose debe a la condición de que no existan desplazamientos transversales, lo que conlleva laexistencia de una tensión transversal que impida la aparición de dichos desplazamientos.

En segundo lugar, observamos un hecho inédito: la ley de comportamiento toma una formadistinta con respecto a la formulación tridimensional. Hasta ahora, al aplicar las condicionesimpuestas según el caso de tensión plana o deformación plana, podíamos reescribir las variablespropias del problema bidimensional en ecuaciones que tomaban la misma forma que en elproblema de elasticidad tridimensional, pero ahora, a la vista de las ecuaciones anteriores, estoya no sucede.

Finalmente, en cuanto a la ley de equilibrio interno,

σxy = σyx.

σxz︸︷︷︸=0

= σzx︸︷︷︸=0

,

σyz︸︷︷︸=0

= σzy︸︷︷︸=0

.

σαβ = σβα.

18

Page 39: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

∂σxx∂x

+ ∂σxy∂y

+ ∂σxz∂z︸ ︷︷ ︸=0

+fx = 0,

∂σyx∂x

+ ∂σyy∂y

+ ∂σyz∂z︸ ︷︷ ︸=0

+fy = 0,

∂σzx∂x︸ ︷︷ ︸=0

+ ∂σzy∂y︸ ︷︷ ︸=0

+ ∂σzz∂z︸ ︷︷ ︸=0

+fz = 0.

∂σxx∂x

+ ∂σxy∂y

+ fx = 0,

∂σxy∂x

+ ∂σyy∂y

+ fy = 0,

fz = 0.

σαβ,β + fα = 0,fz = 0.

Como se puede observar, la ley de equilibrio interno se escribe de igual manera para elcaso de tensión plana que para el de deformación plana. De igual modo, en este caso no sepueden tener fuerzas por unidad de volumen en la dirección del eje z en todo el sólido. Sinembargo, si en el caso de tensión plana era debido a la nulidad de σzx, σzy y σzz, aquí es debidoa que σzz = ν (σxx + σyy) (según la ley de comportamiento), y, debido a que σxx y σyy sonindependientes de la coordenada z, su derivada parcial con respecto a z se anula y ofrece elmismo resultado de fz = 0 que en el caso de tensión plana.

Con respecto a las condiciones de contorno, para que se verifiquen la condiciones uz = 0,ux = ux(x, y) y uy = uy(x, y), es necesario que se cumpla lo siguiente:

Ambas caras laterales (contenidas en un plano perpendicular al eje z), deben estarcompletamente empotradas en la dirección z pero libre en las otras dos direcciones.

Cada sección perpendicular al eje z debe tener las mismas condiciones de contorno.

En el contorno del sólido (excluyendo las caras laterales), en cualquier dirección noparalela al plano perpendicular al eje z, las condiciones de contorno han de ser libres, estoes, no puede imponerse ningún desplazamiento ni ninguna tensión no nula en cualquierdirección no contenida en el plano perpendicular al eje z.

En cada punto del contorno de cualquier sección perpendicular al eje z, pueden existircondiciones Neumman o Dirichlet (en cualquier dirección contenida en dicho plano).

Los requisitos que deben cumplir las condiciones de contorno son casi iguales que en elcaso de tensión plana salvo por el hecho de que en este caso ambas caras laterales deben estarcompletamente empotradas en dirección z (y no sólo una de ellas).

Del mismo modo que en el caso de tensión plana, el problema puede quedar reducido a unsólido bidimensional Ω′ (una sección cualquiera perpendicular al eje z) en la que se plantea elsiguiente problema:

19

Page 40: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Ecuaciones de equilibrio interno Ecuaciones de compatibilidad Ecuaciones de comportamiento

∀ ~r =

xy

∈ Ω′. ∀ ~r =

xy

∈ Ω′. ∀ ~r =

xy

∈ Ω′.

σαβ,β + fα = 0, εαβ = 12 (uα,β + uβ,α) , εαβ = 1+ν

E σαβ − ν(1+ν)E σχχδαβ,

∂σxx∂x + ∂σxy

∂y + fx = 0, εxx = ∂ux∂x , εxx = 1+ν

E σxx − ν(1+ν)E (σxx + σyy) ,

∂σyx∂x + ∂σyy

∂y + fy = 0. εxy = 12

(∂ux∂y + ∂uy

∂x

)= εyx, εxy = 1+ν

E σxy,

εyx = 12

(∂uy∂x + ∂ux

∂y

)= εxy, εyx = 1+ν

E σyx,

σαβ = σβα, εyy = ∂uy∂y . εyy = 1+ν

E σyy − ν(1+ν)E (σxx + σyy) .

σxy = σyx.

Condiciones de contorno

∀ ~r =

xy

∈ ∂Ω′.

Si se dan condiciones Dirichlet en ese punto en la dirección ~v:uχvχ = d0,

uxvx + uyvy = d0.

Si se dan condiciones Neumman en ese punto en la dirección ~v:(σαβnβ) vα = q0,

σxxnxvx + σxynyvx + σyxnxvy + σyynyvy = q0.

Tabla 3: Ecuaciones y condiciones de contorno del problema de deformación plana.

20

Page 41: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

2.1.3. Equivalencia entre los estados de tensión plana y deformación plana.

Tal y como se ha visto hasta ahora, resolver cualquiera de los problemas de tensión planao deformación plana consiste en tomar una sección cualquiera perpendicular al eje z del sólidoy resolver sobre ella las ecuaciones en x e y del problema correspondiente y, más tarde, con lasolución calculada sobre la sección, obtener el resto de variables del problema.

Si uno revisa las ecuaciones de uno y otro tipo de problema se dará cuenta de que la únicadiferencia existente entre ambos conjuntos de ecuaciones es la ley de comportamiento.

Recordando:

Ley de comportamiento en tensión plana, εαβ = 1+νEσαβ − ν

Eσχχδαβ,

Ley de comportamiento en deformación plana, εαβ = 1+νEσαβ − ν(1+ν)

Eσχχδαβ.

Además de esto, las constantes E y ν no aparecen en ninguna otra ecuación o condición decontorno. Así pues, aprovechando este hecho, es posible resolver un tipo de problema usandolas ecuaciones del otro tomando una cierta pareja de valores E ′ y ν ′ distinta a la pareja E y νsobre la que esté formulado el problema original.

Así, supongamos que se tiene un problema de deformación plana y se desea resolver mediantelas ecuaciones de tensión plana. En primer lugar, se calculan E ′ y ν ′ de la siguiente forma,

E ′ = E

1− ν2 , ν′ = ν

1− ν .

Donde, por cierto,

E = E ′1 + 2ν ′

(1 + ν ′)2 , ν = ν ′

1 + ν ′.

Sustituimos en la ecuación de comportamiento del problema de deformación plana,

εαβ = 1 + ν

Eσαβ −

ν(1 + ν)E

σχχδαβ,

εαβ =1 + ν′

1+ν′

E ′ 1+2ν′(1+ν′)2

σαβ −1− ν2

E︸ ︷︷ ︸= 1E′

ν

1− ν︸ ︷︷ ︸=ν′

σχχδαβ,

εαβ = 1 + ν ′

E ′σαβ −

ν ′

E ′σχχδαβ.

21

Page 42: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

De esta manera se puede, mediante el uso de E ′ y ν ′, resolver un problema de deformaciónplana haciendo uso de las ecuaciones del problema de tensión plana.

Lo mismo ocurre el el caso contrario, es decir, si se desea resolver un problema de tensiónplana usando las ecuaciones de deformación plana, han de tomarse:

E ′ = E1 + 2ν

(1 + ν)2 , ν′ = ν

1 + ν.

La utilidad de este hecho reside en que todos los estudios, resultados y conclusiones que seobtengan de un tipo de problema puede extrapolarse al otro tomando, simplemente, un valordistinto de las constantes elásticas.

En el presente documento se hará el estudio (del mismo modo que en la obra [1]), so-bre el problema de deformación plana. Sin embargo, mediante la simple variación de lasconstantes elásticas puede abordarse, estudiarse y tratarse el problema de tensión plana sinmayor complicación.

2.2. Discretización del dominio.

Como ya se comentó anteriormente, para resolver un problema de elasticidad mediante elmétodo de los elementos finitos, es necesario realizar una subdivisión del dominio.

En el presente documento, en el cual se trabaja sobre un problema plano (deformaciónplana), se va a tomar una subdivisión triangular del dominio con elementos cuadráticos.

Que se tome una subdivisión triangular del dominio quiere decir que este será subdivididoúnica y exclusivamente por triángulos.

22

Page 43: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Partición con elementosrectangulares.

Partición con elementostriangulares.

Partición con elementosrectangulares y triangulares(mixtos).

Figura 4: Ejemplos de particiones bidimensionales.

Por otro lado, que se tomen elementos cuadráticos conlleva que sobre cada triángulo secolocarán tres nodos en los vértices y otros tres en los puntos medios de cada lado, es decir, seusarán en cada triángulo funciones base cuadráticas (que ya se definirán en la siguiente sección).

Figura 5: Ejemplos de partición con elementos triángulares cuadráticos (nodos en vértices ypuntos medios de cada lado).

Se comienza ahora exponiendo cómo se lleva a cabo la implementación computacional delmallado del dominio.

23

Page 44: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

2.2.1. Triangulación del dominio.

En primer lugar, dada una subdivisión del dominio en elementos triangulares, es necesariocomenzar a numerar los triángulos y los nodos. Los triángulos se numeran asignándole a cadauno, un número natural entre 1 y nT (ambos inclusive), siendo nT el número total de triángulosen los que se subdivide el dominio. El número que se le asigna a cada triángulo es irrelevantesiempre y cuando se cumpla que a cada número natural entre 1 y nT le corresponde un sólotriángulo (y viceversa, evidentemente).

Por otro lado, es necesario numerar también los nodos. Como se comentó anteriormente, enelementos triangulares cuadráticos, en cada vértice y en cada punto medio de cada lado de cadatriángulo se coloca un nodo. Si en un mismo punto confluyen varios vértices o puntos mediosde dos lados de distintos triángulos, sólo se coloca un nodo en cada caso.

Los nodos se numeran de manera similar a los triángulos, asignándole a cada uno un númeronatural entre 1 y nz (ambos inclusive), siendo nz el número de nodos totales presentes en eldominio. De nuevo, el número que se le asigna a cada nodo es irrelevante siempre y cuandose cumpla que a cada número natural entre 1 y nz le corresponde un sólo nodo (y viceversa,evidentemente).

Por otro lado, es necesario recopilar los datos necesarios para generar la partición del sólido,que se condensan en dos matrices: z (de dimensiones 2 × nz) y T (de dimensiones 6 × nT )haciendo uso de la numeración ya establecida de triángulos y nodos.

La matriz z es una matriz que en la columna j-ésima contiene las coordenadas x e y delnodo j-ésimo en las componentes 1 y 2 respectivamente. Así, la primera columna tendría lascoordenadas del nodo 1, la segunda las del nodo 2, y así sucesivamente.

1

2

3

4

5

x

y

Figura 6: Ejemplo de nodos identificados como z =0 1 1 2 2

0 1 2 1 0

.24

Page 45: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Por otro lado, la matriz T contiene en la columna j-ésima los índices de los nodos queconforman el triángulo j-ésimo según el siguiente convenio: las tres primeras componentes de lacolumna j-ésima de T son los índices de los nodos situados en los vértices del triángulo j-ésimoordenados en sentido antihorario. Las tres últimas componentes de la columna j-ésima de Tson los índices de los nodos situados en puntos medios de cada lado del triángulo j-ésimo, demodo que, las componentes 4, 5 y 6 son los puntos medios del lado situado entre los vértices 1y 2, 2 y 3 y 3 y 1 respectivamente.

Es irrelevante cuál sea el nodo asignado a la primera componente de la columna j-ésima,aunque las dos siguientes deben ser los índices de los nodos situados en los restantes vérticesdispuestos en sentido antihorario.

1 2

3

1 2

3

Figura 7: Ejemplos de ordenamiento antihorario (izda.), T =

123

y horario (dcha.), T =

132

.

1 2

3

4

56

1

2

3

45

67

15 43

235

42

Figura 8: Ejemplos de ordenamiento antihorario, T1 =

123456

, T2 =

123456

y T3 =

5743235421

.

25

Page 46: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Cabe destacar que, cuando se haga referencia explícita a un sólo triángulo, al nodo cuyoíndice es la primera componente de la fila correspondiente de la matriz T al triángulo encuestión, se le nombra como nodo 1, al segundo como nodo 2 y así sucesivamente (a pesar deque los índices de dichos nodos no concuerden, en general, con estas numeraciones). Por otraparte, al lado formado por los vértices 1 y 2 se le nombra como lado 1, al formado por losvértices 2 y 3 se le nombra como lado 2 y al formado por los vértices 3 y 1 se le nombra comolado 3.

1 2

3

4

56

1

2

3

262 22

2

4

137

Figura 9: Número de cada nodo dentro del triángulo (rojo) y número de cada lado (azul) parael triángulo T =

[262 22 2 4 13 7

]t.

Así, con ambas matrices z y T , se puede generar la subdivisión del dominio como seejemplifica en la figura 10.

26

Page 47: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

−0.5 0 0.5 1 1.5 2 2.5 3 3.5−0.5

0

0.5

1

1.5

x

y

Figura 10: Ejemplo de triangulación con:

z =0 1 2 3 2 1 0 0,5 0,5 0 0,5 1 1,5 1,5 2 1,5 2,5 2,5

0 0 0 0 1 1 1 0,5 1 0,5 0 0,5 0 0,5 0,5 1 0 0,5

y

T =

1 1 2 3 36 2 3 5 47 6 6 6 58 11 13 15 179 12 14 16 1810 8 12 14 15

.

Cabe destacar que en general hace falta únicamente asignar índices a los nodos que sonvértices y denotar de qué triángulos lo son, ya que a partir de esta información se puedenasignar los índices a los nodos de los lados medios de cada triángulo.

2.2.2. La transformación afín al triángulo de referencia.

Al aplicar el algoritmo del método de los elementos finitos a problemas de deformaciónplana (o de tensión plana), es necesario hacer uso de una transformación (cambio de variable)

27

Page 48: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

que permita pasar un cierto triángulo (llamado triángulo de trabajo, definido en variables x ey) al triángulo de referencia (definido en variables ξ y η y de vértices [0 0]t, [1 0]t y [0 1]t).

La utilidad principal de este cambio reside en su aplicación a las integrales de cubatura,ya que permite realizar los cálculos siempre sobre la misma geometría, independientemente deltriángulo sobre el que se trabaje.

ξ

η

1

1

01 4 2

5

3

6

x

y

36

1

4

2

5

x1x3x2

y3

y1

y2

Figura 11: Triángulo de trabajo (izda.) y su paso al triángulo de referencia (dcha.) mediante latransformación afín.

Los cambios necesarios para llevar a cabo la transformación afín (x, y) ↔ (ξ, η) son lossiguientes:

xy

=x1

y2

+x2 − x1 x3 − x1

y2 − y1 y3 − y1

ξη

yξη

= 1J

y3 − y1 −(x3 − x1)−(y2 − y1) x2 − x1

x− x1

y − y1

,siendo J el jacobiano de la transformación del triángulo de referencia al triángulo de trabajo,

J = (x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1).

En realidad, es irrelevante qué vértice se tome como 1, 2 ó 3 (siempre que se respete el sentidoantihorario), ya que el triángulo de referencia final seguirá siendo geométricamente idéntico(e incluso el jacobiano de la transformación también será el mismo). Si bien las ecuacionesdel cambio no son las mismas, sí que son equivalentes a efectos prácticos en su uso para laintegración (por cubatura).

Programas recomendados:• refex.m, (ver página 249).• refxe.m, (ver página 253).

28

Page 49: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

2.2.3. Funciones base.

En dominios bidimensionales3, las funciones base escalares φi son funciones φi : Ω′ ⊂ R2 → Rpolinómicas a trozos sobre la partición en las que se cumple que su valor es unidad en el nodoi-ésimo y nulo en el resto de los nodos. El grado de los polinomios en cada elemento de laparticion es el menor de aquellos que permite conseguir esta condición.

En nuestro caso, al trabajar con triángulos de seis nodos, usaremos las funciones baseescalares cuadráticas, que son de grado 2 en aquellos elementos que poseen un nodo en elque la función base vale 1.

La forma funcional de la función base dentro de un cierto elemento K es la siguiente,

φi = c1 + c2x+ c3y + c4x2 + c5y

2 + c6xy.

Donde c1, c2, c3, c4, c5 y c6 son constantes a determinar según la posición de los vértices yde en qué vértice valga 1 la función.

En la práctica, los cálculos se hacen sobre el triángulo de referencia (mediante latransformación afín descrita en la sección 2.2.2). Las seis funciones base escalares cuadráticasestán ya definidas en dicho triángulo, es decir, los coeficientes c1, c2, c3, c4, c5 y c6 toman unosvalores determinados para cada una de las funciones base.

ξ

η

1

1

01 4 2

5

3

6

Figura 12: Triángulo de referencia con la numeración de nodos recuadrada.3Recuérdese que Ω′ denota el dominio bidimensional del problema.

29

Page 50: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Las funciones base escalares cuadráticas sobre el triángulo de referencia son las siguientes:

N1 = 1− 3ξ − 3η + 2ξ2 + 2η2 + 4ξη,N2 = −ξ + 2ξ2,

N3 = −η + 2η2,

N4 = 4ξ − 4ξ2 − 4ξη,N5 = 4ξη,N6 = 4η − 4η2 − 4ξη.

Las funciones base se han denotado como Ni(ξ, η) por tratarse de las funciones base sobreel triángulo de referencia.

La razón de tomar las funciones base con una notación distinta (Ni(ξ, η) en vez de φi(x, y))para este caso particular es poder expresar de forma inequívoca la regla de la cadena al calcularlas derivadas parciales de las funciones base en un triángulo de trabajo haciendo uso de lasderivadas parciales de las funciones base en el triángulo de referencia.

Así,

∂φi∂x

= ∂Ni

∂ξ

∂ξ

∂x+ ∂Ni

∂η

∂η

∂x,

∂φi∂y

= ∂Ni

∂ξ

∂ξ

∂y+ ∂Ni

∂η

∂η

∂y.

Y, tal y como se vio en la sección 2.2.2,

ξη

= 1(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1)

y3 − y1 −(x3 − x1)−(y2 − y1) x2 − x1

x− x1

y − y1

.Por lo tanto,

∂ξ

∂x= y3 − y1

(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1) ,

∂ξ

∂y= −(x3 − x1)

(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1) ,

∂η

∂x= −(y2 − y1)

(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1) ,

∂η

∂y= x2 − x1

(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1) .

Por otro lado,

30

Page 51: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

∂N1∂ξ

= −3 + 4ξ + 4η, ∂N1∂η

= −3 + 4ξ + 4η,∂N2∂ξ

= 4ξ − 1, ∂N2∂η

= 0,∂N3∂ξ

= 0, ∂N3∂η

= 4η − 1,∂N4∂ξ

= 4− 8ξ − 4η, ∂N4∂η

= −4ξ,∂N5∂ξ

= 4η, ∂N5∂η

= 4ξ,∂N6∂ξ

= −4η, ∂N6∂η

= 4− 4ξ − 8η.

Por tanto, se estaría ya en disposición de calcular las derivadas parciales de las funcionesbase en cualquier triángulo de trabajo.

31

Page 52: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Figura 13: Funciones base escalares cuadráticas en el triángulo de referencia.

Programas recomendados:• coeficua.m, (ver página 166).• ficua.m, (ver página 199).• coefilin.m, (ver página 167).• filin.m, (ver página 200).• derifi.m, (ver página 177).

Por otro lado, las funciones base vectoriales ~φi son funciones ~φi : Ω′ ⊂ R2 → Rn polinómicasa trozos sobre la triangulación en las que se cumple que una cierta componente del vector ~φi

32

Page 53: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

tiene valor unidad en el nodo i-ésimo, nulo el resto de componentes en ese mismo nodo, y unvalor nulo para todas componentes en el resto de nodos. El grado de los polinomios dentro decada elemento K, es el menor de aquellos que permita conseguir esta condición.

Por ejemplo, las funciones base vectoriales cuadráticas sobre el triángulo de referencia son:

~N1 =1− 3x− 3y + 2x2 + 2y2 + 4xy

0

,~N2 =

−x+ 2x2

0

,~N3 =

−y + 2y2

0

,~N4 =

4x− 4x2 − 4xy0

,~N5 =

4xy0

,~N6 =

4y − 4y2 − 4xy0

,~N7 =

01− 3x− 3y + 2x2 + 2y2 + 4xy

,~N8 =

0−x+ 2x2

,~N9 =

0−y + 2y2

,~N10 =

04x− 4x2 − 4xy

,~N11 =

04xy

,~N12 =

04y − 4y2 − 4xy

.

33

Page 54: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

2.2.4. Entes geométricos derivados de la triangulación.

Una vez planteada la discretización del dominio mediante las matrices z y T , es posibleobtener ciertos entes geométricos necesarios para la ejecución del algoritmo. Entre los entesgeométricos podrían encontrarse el área de cada triángulo, la medida de cada lado de cadatriángulo o el jacobiano propio de la transformación de cada triángulo al triángulo de referencia,por citar algunos.

No se va a tratar cómo hallar los parámetros más simples porque sería añadir volumen alProyecto innecesariamente. Por ejemplo, se piensa innecesario exponer cómo calcular el áreade cada triángulo a partir de las coordenadas de los vértices o cuál es el vector unitario normalexterior a cada lado γ.

Los únicos dos aspectos que van a tratarse por ser no triviales es cómo saber si un nodoestá situado en la frontera del dominio o en el interior y, en caso de estar en la frontera y serun nodo vértice, cuáles son los índices de los nodos vértice situados en la frontera que son susvecinos.

Para tratar si un nodo está situado en la frontera o no, se crea un vector~i de nz componentesen la que se recoge un 1 en la componente j-ésima si el nodo de índice j está situado en la fronteray un 0 en caso contrario. Se comienza analizando si cada uno de los nodos situados en los puntosmedios de los lados de la partición son compartidos por uno o dos elementos4.

Así, para saber si un nodo j situado en un punto medio de un lado está situado en la fronteradel dominio, se busca en cuántas columnas de la matriz T 5 aparece su índice (j). Si aparece enuna sola columna, se trata de un nodo situado en la frontera (~i(j) = 1) y si aparece en dos, setrata de un nodo situado en el interior del dominio (~i(j) = 0).

Una vez que se han analizado todos los nodos situados en los puntos medios de cada lado,se procede a analizar los nodos situados en los vértices de los elementos. Para ello, supóngaseque se va a analizar el nodo de índice j. En primer lugar, se busca en qué columnas de la matrizT aparece su índice (j).

Más tarde, se busca si, para cada elemento K-ésimo al que pertenece, los nodos 6 y 4, 4 y5 ó 5 y 6 son nodos exteriores, en el caso de que el nodo j sea el nodo 1, 2 ó 3 respectivamentedel elemento K-ésimo.

En caso de que algún elemento al que pertenece posea alguno de esos nodos exteriores, setrata de un nodo vértice exterior. Se trata de un nodo vértice interior en caso contrario.

Por otra parte, para saber, dado un nodo vértice situado en la frontera, cuáles son los otrosdos nodos vértices exteriores vecinos al mismo, hay que proceder como sigue.

4Este algoritmo es sólo válido en ausencia de nodos colgantes.5Al tratarse de un nodo situado en un punto medio, su índice sólo puede aparecer en las tres últimas filas

de la matriz T .

34

Page 55: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

En primer lugar, hay que recopilar todos los elementos que poseen ese nodo vértice (mediantelas columnas de la matriz T en las que aparece el índice j).

Más tarde, se recopilan, para cada elemento K-ésimo al que pertenece, los índices de losotros dos nodos vértice del mismo. Una vez que se tienen todos estos índices recopilados, losnodos vértice vecinos al nodo j son aquellos cuyos índices no se repiten.

Sin más, se referencian a continuación ciertos programas diseñados para obtener todos losentes geométricos necesarios únicamente a partir de las matrices z y T .

Programas recomendados:• geometria.m, (ver página 213).• vectores.m, (ver página 266).• ladomayor.m, (ver página 224).• cambio.m, (ver página 164).• informacion.m, (ver página 216).• nodotri.m, (ver página 236).• exteriores.m, (ver página 191).

2.2.5. Solución del método de los elementos finitos.

Como ya se introdujo anteriormente, la solución al método de los elementos finitos se obtienetras resolver un sistema del tipo A~x = ~b. En nuestro caso, el vector de incógnitas contiene losdesplazamientos (en x e y) de los nodos del mallado. Así pues, cuando se habla de “resolver elmétodo de los elementos finitos aplicado a problemas de elasticidad plana” lo que se dice endefinitiva es calcular aproximaciones a los desplazamientos en los nodos del mallado.

Sin embargo, eso no quiere decir que no se puedan calcular aproximaciones de losdesplazamientos en cualquier otro punto del sólido (recuérdese que el método de los elementosfinitos proporciona en general una solución aproximada). Del mismo modo en que se hace en lasecuaciones y algoritmos que conducen a la solución aproximada, se toma que el desplazamientodentro de un triángulo es una combinación lineal de los desplazamientos en los nodos, másespecíficamente,

~u =nz∑i=1

φi~ui.

Teniendo en cuenta que dentro de cada elemento las funciones base no nulas son aquellasrelativas a nodos situados en la frontera de los mismos,

~u ((x, y) ∈ K) =6∑i=1

φi~ui,

35

Page 56: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

donde, en este último caso, i es el índice del nodo i-ésimo triángulo K que contiene al punto(x, y).

Si por ejemplo en un cierto triángulo (el triángulo de referencia, por simplificar el ejemplo)

se tuviera ~u1 =0

0

, ~u2 = 1

2,2

, ~u3 =3,02

0,7

, ~u4 =−0,02−0,47

, ~u5 = 3,4

1,63

y ~u6 =−0,22

1,2

, eldesplazamiento en el punto x = 0,1, y = 0,3 se calcularía, por componentes, como:

ux(0,1, 0,3) = φ1(0,1, 0,3)ux1 + φ2(0,1, 0,3)ux2 + φ3(0,1, 0,3)ux3 + φ4(0,1, 0,3)ux4 + φ5(0,1, 0,3)ux5 + φ6(0,1, 0,3)ux6

= 0,12 · 0− 0,08 · 1− 0,12 · 3,02 + 0,24 · −0,02 + 0,12 · 3,4 + 0,72 · −0,22 = −0,1976,uy(0,1, 0,3) = φ1(0,1, 0,3)uy1 + φ2(0,1, 0,3)uy2 + φ3(0,1, 0,3)uy3 + φ4(0,1, 0,3)uy4 + φ5(0,1, 0,3)uy5 + φ6(0,1, 0,3)uy6

= 0,12 · 0− 0,08 · 2,2− 0,12 · 0,7 + 0,24 · −0,47 + 0,12 · 1,63 + 0,72 · 1,22 = 0,7012.

Con respecto al cálculo de los desplazamientos de los puntos situados en la frontera de dostriángulos, no existe ningún problema en calcularlos teniendo en cuenta los desplazamientosnodales de un triángulo u otro porque las funciones base de dos triángulos adyacentes quevalen 1 en el mismo nodo son continuas en la frontera pero, en general, no derivables.

Que sean continuas asegura que el desplazamiento en un punto interior a un lado de untriángulo compartido con otro va a ser el mismo cuando se calcule teniendo en cuenta eldesplazamiento de los nodos de cualesquiera de los dos triángulos.

Sin embargo, dado que en general no son derivables, las magnitudes dependientes de lasderivadas parciales de los desplazamientos serán distintas a uno y otro lado de la frontera. Estees el caso de deformaciones y tensiones. Estas dos magnitudes, en la frontera de dos elementos,toman valores distintos con respecto a cada uno de ellos. Esto acarrea, por ejemplo, que no serespete, en general, el equilibrio interno en la frontera de los elementos.

Sin embargo, a medida que el mallado se va haciendo más fino, la diferencia entre nivelestensionales y de deformación en la frontera de dos elementos adyacentes va decreciendo.

2.3. Resolución del problema de deformación plana medianteelementos finitos cuadráticos.

Se da paso ahora a explicar cómo se procede en la resolución del problema de deformaciónplana mediante el método de los elementos finitos (usando elementos triangulares cuadráticos).

No se va a resolver el problema completo, ya que va a haber dos limitaciones (osimplificaciones): la primera es que frontera del dominio va a tener exclusivamente condicionesNeumman (en dos direcciones perpendiculares) o condiciones Dirichlet (en dos direccionesperpendiculares). Esto quiere decir que ningún lado del contorno exterior puede tenercondiciones Neumman en una dirección pero Dirichlet en la perpendicular.

Esto responde al hecho de que en la obra [2], no se trabaja con un problema de deformación

36

Page 57: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

plana (ni siquiera sobre un problema de elasticidad), sino que se trabaja sobre un problemaelíptico. Este tipo de problemas tiene como incógnita una variable escalar, por lo que elalgoritmo ahí descrito en está desarrollado para problemas cuya frontera puede tener (a trozos),únicamente condiciones Neumman o Dirichlet.

Así pues, únicamente se define una parte de ∂Ω′6, en la que se dan condiciones Neumman, ΓNy la otra parte de la frontera ∂Ω′ en la que se dan condiciones Dirichlet, ΓD, donde ΓN∪ΓD = ∂Ω′y ΓN ∩ ΓD = ∅.

La segunda es que las cargas aplicadas y los desplazamientos prescritos variarán de formapolinómica y a lo sumo cuadrática en los lados frontera de la partición del dominio. La razónde esta decisión reside en que en los casos de interés práctico, las cargas (cuya forma funcionalpuede llegar a ser bastante compleja) se pueden llegar a modelar como cargas puntuales y/ofunciones cuadráticas a trozos.

Esto permite que al tomar la tensión aplicada en tres puntos (en vértices y punto medio)sobre cada lado Neumman, se pueda calcular de forma exacta la contribución de las cargasaplicadas al vector de cargas que provocan dichas distribuciones cuadráticas en los lados fronterade la partición (la regla de Simpson es exacta para polinomios de grado menor o igual a 3).

Una vez restringida la casuística de las condiciones de contorno y la forma funcional de lasmismas a lo largo de la frontera, se procede a seguir con la explicación general del algoritmode resolución.

La idea fundamental del método es partir de que en cada elemento puede establecerse unarelación del tipo A~x = ~b relacionando desplazamientos en los nodos (vector de incógnitas) yfuerzas aplicadas (vector de datos). La matriz de coeficientes es la llamada matriz de rigidezelemental para cada triángulo. Así, sumando para cada nodo la rigidez que aporta cadaelemento a ese nodo, se puede establecer una relación global del tipo A~x = ~b que relacionalos desplazamientos de todos los nodos con las fuerzas aplicadas en cada uno de ellos.

Sin embargo, hay tener en cuenta que existen ciertos nodos cuyos desplazamientos estánprescritos y no es necesario calcularlos. Además, como se verá más adelante, sin la prescripciónde dichos nodos el sistema global del tipo A~x = ~b quedaría indeterminado. Por ello, es precisomodificar la matriz de rigidez y el vector de cargas (teniendo en cuenta los desplazamientosprescritos) para que el problema pueda resolverse sin indeterminaciones.

Finalmente, es conveniente destacar que si bien las condiciones de contorno en desplaza-miento se verifican de forma fuerte, las condiciones de contorno en tensiones lo hacen en formadébil. Esto se tratará más a fondo en la sección 2.3.4.

Comencemos ahora con la deducción matemática del método.6Recuérdese que Ω′ es el dominio bidimensional sobre el que se resuelve el problema de deformación plana.

Se usa Ω′ y no Ω porque se reserva el uso de Ω para dominios tridimensionales.

37

Page 58: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Partamos de la ley de equilibrio interno,∂σxx∂x+ ∂σxy

∂y∂σyx∂x

+ ∂σyy∂y

+fxfy

=0

0

.Multipliquemos escalarmente la expresión anterior por una función ~ρ = [ρx ρy]t, cuyo

dominio es el sólido elástico y que, en principio, es una función cualquiera,∂σxx∂x

ρx + ∂σxy∂y

ρx + fxρx + ∂σyx∂x

ρy + ∂σyy∂y

ρy + fyρy = 0.

Aplicando la regla de la derivada del producto en los términos del tipo ∂σab∂bρa,(

∂ (σxxρx)∂x

− σxx∂ρx

∂x

)+(∂ (σxyρx)

∂y− σxy

∂ρx

∂y

)+ fxρx +

(∂ (σyxρy)

∂x− σyx

∂ρy

∂x

)+(∂ (σyyρy)

∂y− σyy

∂ρy

∂y

)+ fyρy = 0.

Integrando en el dominio Ω′,∫Ω′

∂ (σxxρx)∂x

+∂ (σxyρx)

∂y+∂ (σyxρy)

∂x+∂ (σyyρy)

∂ydΩ′−

∫Ω′σxx

∂ρx

∂x+σxy

∂ρx

∂y+σyx

∂ρy

∂x+σyy

∂ρy

∂ydΩ′+

∫Ω′fxρx+fyρydΩ′ = 0.

Aplicando el teorema de la divergencia a la primera integral7, se tiene,∫∂Ω′

([σxx σxy

σyx σyy

][nx

ny

])·[ρx

ρy

]d(∂Ω′)−

∫Ω′σxx

∂ρx

∂x+ σxy

∂ρx

∂y+ σyx

∂ρy

∂x+ σyy

∂ρy

∂ydΩ′ +

∫Ω′fxρx + fyρydΩ′ = 0.

Donde ~n = [nx ny]t es el vector normal a ∂Ω′.

Así pues, definiendo la operación matricial A : B sobre dos matrices de dimensiones m× ncomo

A : B =m∑i=1

n∑j=1

aijbij,

se puede escribir

∫∂Ω′

σxx σxy

σyx σyy

nxny

·ρxρy

d(∂Ω′)−∫

Ω′

σxx σxy

σyx σyy

:∂ρx∂x ∂ρx

∂y∂ρy∂x

∂ρy∂y

dΩ′+∫

Ω′

fxfy

·ρxρy

dΩ′ = 0.

El segundo término se puede escribir también como∫Ω′

[σxx σxy

σyx σyy

]:[∂ρx∂x

∂ρx∂y

∂ρy

∂x

∂ρy

∂y

]dΩ′ =

∫Ω′

[σxx σxy

σyx σyy

]:

12

[ 2∂ρx∂x

∂ρx∂y

+ ∂ρy

∂x∂ρy

∂x+ ∂ρx

∂y2 ∂ρy

∂y

]+[σxx σxy

σyx σyy

]:

12

[0 ∂ρx

∂y− ∂ρy

∂x∂ρy

∂x− ∂ρx

∂y0

]dΩ′.

7Para dar este paso de la forma en la que aquí se ha expuesto, es necesario que se cumpla la simetría deltensor de tensiones, algo que ocurre siempre según la ley de equilibrio interno.

38

Page 59: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Sin embargo, σxx σxy

σyx σyy

: 12

0 ∂ρx∂y− ∂ρy

∂x∂ρy∂x− ∂ρx

∂y0

= 0,

ya que se trata de la suma término a término de una matriz simétrica (σ) y otra antisimétrica.Por tanto,

∫∂Ω′

([σxx σxy

σyx σyy

][nx

ny

])·[ρx

ρy

]d(∂Ω′)−

∫Ω′

[σxx σxy

σyx σyy

]:

∂ρx∂x

12

(∂ρx∂y

+ ∂ρy

∂x

)12

(∂ρy

∂x+ ∂ρx

∂y

)∂ρy

∂y

dΩ′+∫

Ω′

[fx

fy

]·[ρx

ρy

]dΩ′ = 0.

Al realizar esta manipulación sobre el segundo término, se ha conseguido que, si se toma ~ρcomo un campo de desplazamientos (sin definir por ahora), la matriz ∂ρx

∂x12

(∂ρx∂y

+ ∂ρy∂x

)12

(∂ρy∂x

+ ∂ρx∂y

)∂ρy∂y

,representa las deformaciones que se tendrían en el dominio en caso de que los desplazamientosfueran ~ρ.

Así, la expresión puede reescribirse como:∫∂Ω′

(σ~n) · ~ρd(∂Ω′)−∫

Ω′σ(~u) : ε(~ρ)dΩ′ +

∫Ω′~f · ~ρdΩ′ = 0.

Reordenando términos,∫Ω′σ(~u) : ε(~ρ)dΩ′ =

∫∂Ω′

(σ~n) · ~ρd(∂Ω′) +∫

Ω′~f · ~ρdΩ′.

Esta es la ecuación básica del método de los elementos finitos para problemas de elasticidadplana.

Si se impone que la función ~ρ sea una cierta función base relativa a un cierto nodo deíndice p (ya sea aquella que posee la primera componente nula en todos los nodos menos endicho nodo (que valdría 1) y la segunda nula en todos los puntos del dominio o viceversa)y que el campo de desplazamientos dentro de un elemento es una combinación lineal de losdesplazamientos nodales del elemento (como se vio en 2.2.5), se consigue una ecuación querelaciona los desplazamientos (en x o y, dependiendo de la componente de la función base quevale 1 en el nodo p) de todos los nodos que pertenecen a los elementos que contienen al nodop con las fuerzas que actúan en ese nodo (segundo y tercer término de la igualdad anterior).

Supongamos que el nodo p-ésimo lo contienen los elementos [K1, K2, ..., KR], entoncespodrían calcularse:

39

Page 60: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

∫Ω′σ(~u) : ε(~ρ)dΩ′ =

∫K1σ(~u) : ε(~ρ)dK1 +

∫K2σ(~u) : ε(~ρ)dK2 + ...+

∫KR

σ(~u) : ε(~ρ)dKR,∫Ω′~f · ~ρdΩ′ =

∫K1

~f · ~ρdK1 +∫K2

~f · ~ρdK2 + ...+∫KR

~f · ~ρdKR.

Por otro lado, la integral∫∂Ω′ (σ~n) · ~ρd(∂Ω′) podría ser no nula únicamente en el caso en

el que el nodo p estuviese situado en un lado γ frontera. Si se trata de un lado Neumman(γ ∈ ΓN), en ese caso σ~n = ~q, es decir, la tensión exterior está impuesta. En caso de que setrate de un lado Dirichlet, no hace falta realizar ningún cálculo relativo al nodo p porque eldesplazamiento del mismo estaría prescrito (como se verá más adelante).

Así pues, el interés ahora reside en poder expresar las integrales sobre los elementos K,∫K σ(~u) : ε(~ρ)dK, en función de los desplazamientos nodales para poder establecer una ecuaciónlineal con todos los nodos que están presentes en los elementos que comparten el nodo p-ésimo.

Posteriormente, se recopilan todas las ecuaciones (obtenidas tras imponer ~ρ igual a lasfunciones base que poseen alguna componente no nula en cada nodo) y se establece un sistemade tipo A~x = ~b que permite obtener (tras la imposición de las condiciones de contorno endesplazamientos), todos los desplazamientos nodales.

Si bien este proceso quedará mejor explicado más adelante, la forma de conseguir la matrizde coeficientes (en nuestro caso llamada la matriz de rigidez S), es calcular por separado, paracada elemento la matriz de rigidez elemental Se e ir añadiendo todas las componentes de todaslas matrices Se como sumandos en la matriz S, es decir, ir obteniendo las integrales sobre eltodo dominio para cada función base como suma de aquellas integrales que son no nulas (sobreaquellos elementos que poseen el nodo en el que la función base no se anula en una ciertacomponente).

En nuestro caso, la matriz Se de cada elemento tendría dimensiones 12×12. La componente(i-ésima, j-ésima) sería el coeficiente del desplazamiento en x del nodo j-ésimo (para j ≤ 6)o el coeficiente del desplazamiento en y del nodo (j − 6)-ésimo (para j ≥ 7) en la expresión∫K σ(~u) : ε(~φi)dK al asumir que cualquier desplazamiento en el interior deK es una combinaciónlineal de los desplazamientos nodales del elemento K.

Así pues, supongamos que se está interesado en expresar en función de los desplazamientosnodales,

∫Kσ(~u) : ε(~φj)dK,

donde φj es la función base escalar cuadrática j-ésima en el elemento K.

En primer lugar se tiene que, según la ley de comportamiento (transformada para obtenertensiones en función de deformaciones) y la ley de compatibilidad,

40

Page 61: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

σαβ = E

1 + ν

(εαβ + ν

1− 2ν εχχδαβ),

εαβ = 12 (uα,β + uβ,α) .

En forma desarrollada,

σ = E

1+ν

(εxx

1−ν1−2ν + εyy

ν1−2ν

)E

1+ν εxyE

1+ν εyxE

1+ν

(ε11

ν1−2ν + εyy

1−ν1−2ν

) y

ε = ∂ux

∂x12

(∂ux∂y

+ ∂uy∂x

)12

(∂uy∂x

+ ∂ux∂y

)∂uy∂y

.Uniendo estas dos expresiones,

σ = E

1+ν

(∂ux∂x

1−ν1−2ν + ∂uy

∂yν

1−2ν

)E

1+ν12

(∂ux∂y

+ ∂uy∂x

)E

1+ν12

(∂uy∂x

+ ∂ux∂y

)E

1+ν

(∂ux∂x

ν1−2ν + ∂uy

∂y1−ν1−2ν

) .

Por otro lado, la matriz ε(~ρ) (con ~ρ = ~φj), se calcula como8

ε = ∂φjx

∂x12

(∂φjx∂y

+ ∂φjy∂x

)12

(∂φjy∂x

+ ∂φjx∂y

)∂φjy∂y

.8Un apunte sobre la notación: ~φi es la función base vectorial cuadrática i-ésima del elemento K (de las 12

existentes), φix es la componente x de la función base ~φi y φiy la componente y de la función base ~φi. Por otrolado, φi es la función base escalar cuadrática i-ésima del elemento K (de las 6 existentes). Se verifica, además,que:

~φ1 =[φ1

0

], ~φ2 =

[φ2

0

], ~φ3 =

[φ3

0

], ~φ4 =

[φ4

0

], ~φ5 =

[φ5

0

], ~φ6 =

[φ6

0

],

~φ7 =[

0φ1

], ~φ8 =

[0φ2

], ~φ9 =

[0φ3

], ~φ10 =

[0φ4

], ~φ11 =

[0φ5

], ~φ12 =

[0φ6

],

41

Page 62: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Por tanto,∫Kσ(~u) : ε(~φj)dK =

∫K

E

1 + ν

(∂ux∂x

1− ν1− 2ν + ∂uy

∂y

ν

1− 2ν

)∂φjx∂x

+

+ E

1 + ν

12

(∂ux∂y

+ ∂uy∂x

)12

(∂φjx∂y

+ ∂φjy∂x

)+

+ E

1 + ν

12

(∂uy∂x

+ ∂ux∂y

)12

(∂φjy∂x

+ ∂φjx∂y

)+

+ E

1 + ν

(∂ux∂x

ν

1− 2ν + ∂uy∂y

1− ν1− 2ν

)∂φjy∂y

dK.

Reordenando términos,

∫Kσ(~u) : ε(~φj)dK =

∫K

∂ux∂x

E

1 + ν

(1− ν1− 2ν

∂φjx∂x

+ ν

1− 2ν∂φjy∂y

)+

+∂uy∂y

E

1 + ν

(1− ν1− 2ν

∂φjy∂y

+ ν

1− 2ν∂φjx∂x

)+

+∂ux∂y

E

2(1 + ν)

(∂φjx∂y

+ ∂φjy∂x

)+

+∂ux∂y

E

2(1 + ν)

(∂φjx∂y

+ ∂φjy∂x

)dK.

Por otro lado, dado que los desplazamientos se toman, en cada elemento, como unacombinación lineal de los desplazamientos nodales,

~u ((x, y) ∈ K) =6∑i=1

φi~ui,

42

Page 63: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

entonces,

∂ux∂x

∂ux∂y∂uy∂y∂uy∂x

=

∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

0 0 0 0 0 0∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

0 0 0 0 0 00 0 0 0 0 0 ∂φ1

∂x∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

0 0 0 0 0 0 ∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

ux1

ux2

ux3

ux4

ux5

ux6

uy1

uy2

uy3

uy4

uy5

uy6

.

Usando este campo de desplazamientos dentro del elemento K-ésimo, se puede expresar

∫Kσ(~u) : ε(~φj)dK =

∫K~st

ux1

ux2

ux3

ux4

ux5

ux6

uy1

uy2

uy3

uy4

uy5

uy6

dK,

43

Page 64: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

donde

~st = E

1 + ν

(1− ν1− 2ν

∂φjx∂x

+ ν

1− 2ν∂φjy∂y

) [∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

0 0 0 0 0 0]

+

+ E

1 + ν

(1− ν1− 2ν

∂φjy∂y

+ ν

1− 2ν∂φjx∂x

) [∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

0 0 0 0 0 0]

+

+ E

2(1 + ν)

(∂φjx∂y

+ ∂φjy∂x

) [0 0 0 0 0 0 ∂φ1

∂x∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

]+

+ E

2(1 + ν)

(∂φjx∂y

+ ∂φjy∂x

) [0 0 0 0 0 0 ∂φ1

∂x∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

].

Repitiendo este proceso para cada uno de los elementos K que poseen el nodo en el quealguna de las componentes de la función ~φj vale 1, podría establecerse

∫Ω′ σ(~u) : ε(~φj)dΩ′ como

una combinación lineal de los desplazamientos de los nodos situados sobre los elementos quecomparten el nodo en el que alguna de las componentes de la función ~φj vale 1.

Finalmente, efectuando este proceso 2nz veces, podrían obtenerse todas las componentes dela matriz de rigidez S. Veamos como obtener esta matriz de rigidez de una manera sistemáticay eficiente.

2.3.1. Matriz de rigidez.

Para obtener la matriz de rigidez de una manera sistemática y eficiente, es necesario construirla matriz de rigidez global del sistema S a partir de las matrices de rigidez elementales Se. Así,empecemos por el principio y veamos cómo se calculan las matrices de rigidez elementales.

Para cada triángulo K de la partición se define la matriz de rigidez elemental como

Se =

S(1,1) S(1,2)

S(2,1) S(2,2)

,

44

Page 65: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

donde:

S(1,1) = E (1− ν)(1 + ν) (1− 2ν)

∫K

∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

[∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

]dxdy +

+ E

2(1 + ν)

∫K

∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

[∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

]dxdy,

S(1,2) = Eν

(1 + ν) (1− 2ν)

∫K

∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

[∂φ1∂y

∂φ2∂y

∂φ3∂x

∂φ4∂y

∂φ5∂y

∂φ6∂y

]dxdy +

+ E

2(1 + ν)

∫K

∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

[∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

]dxdy,

45

Page 66: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

S(2,1) = Eν

(1 + ν) (1− 2ν)

∫K

∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

[∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

]dxdy +

+ E

2(1 + ν)

∫K

∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

[∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

]dxdy =

(S(2,1)

)t,

S(2,2) = E (1− ν)(1 + ν) (1− 2ν)

∫K

∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

[∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

]dxdy +

+ E

2(1 + ν)

∫K

∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂y

[∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

]dxdy.

Las derivadas parciales que aparecen en las expresiones tienen sus formas funcionalesdefinidas en el triángulo de referencia, por lo que podrían ser calculadas en cualquier puntodel triángulo de trabajo según se vio en la sección 2.2.3.

Es ahora cuando cristaliza la importancia de la transformación afín al triángulo de referencia,ya que todas las integrales de cubatura que aparecen en las matrices anteriores pueden ser

46

Page 67: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

calculadas fácilmente aplicando dicha transformación afín.

El siguiente paso sería calcular las matrices que aparecen en la expresión anterior en eltriángulo de referencia (mediante la transformación afín). En realidad, debido a que sus formasfuncionales están bien definidas (entendiendo por bien definidas como definidas en función delas variables de integración), no es necesario recurrir a fórmulas de cubatura para ejecutarlasnuméricamente, sino que pueden hallarse mediante la función primitiva.

Se comienza aplicando la regla de la cadena a los integrandos (para trabajar con las funcionesbase en el triángulo de referencia):

∂φi∂x

∂φj∂x

=(∂Ni

∂ξ

∂ξ

∂x+ ∂Ni

∂η

∂η

∂x

)(∂Nj

∂ξ

∂ξ

∂x+ ∂Nj

∂η

∂η

∂x

)=

=(∂ξ

∂x

)2∂Ni

∂ξ

∂Nj

∂ξ+(∂η

∂x

)2∂Ni

∂η

∂Nj

∂η+ ∂ξ

∂x

∂η

∂x

(∂Ni

∂ξ

∂Nj

∂η+ ∂Ni

∂η

∂Nj

∂ξ

),

∂φi∂y

∂φj∂y

=(∂Ni

∂ξ

∂ξ

∂y+ ∂Ni

∂η

∂η

∂y

)(∂Nj

∂ξ

∂ξ

∂y+ ∂Nj

∂η

∂η

∂y

)=

=(∂ξ

∂y

)2∂Ni

∂ξ

∂Nj

∂ξ+(∂η

∂y

)2∂Ni

∂η

∂Nj

∂η+ ∂ξ

∂y

∂η

∂y

(∂Ni

∂ξ

∂Nj

∂η+ ∂Ni

∂η

∂Nj

∂ξ

).

∂φi∂x

∂φj∂y

=(∂Ni

∂ξ

∂ξ

∂x+ ∂Ni

∂η

∂η

∂x

)(∂Nj

∂ξ

∂ξ

∂y+ ∂Nj

∂η

∂η

∂y

)=

= ∂ξ

∂x

∂ξ

∂y

∂Ni

∂ξ

∂Nj

∂ξ+ ∂ξ

∂x

∂η

∂y

∂Ni

∂ξ

∂Nj

∂η+ ∂η

∂x

∂ξ

∂y

∂Ni

∂η

∂Nj

∂ξ+ ∂η

∂x

∂η

∂y

∂Ni

∂η

∂Nj

∂η.

47

Page 68: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Ahora, se exponen las matrices calculadas sobre el triángulo de referencia (K0):

S1 =∫K0

∂N1∂ξ

∂N2∂ξ

∂N3∂ξ

∂N4∂ξ

∂N5∂ξ

∂N6∂ξ

[∂N1∂ξ

∂N2∂ξ

∂N3∂ξ

∂N4∂ξ

∂N5∂ξ

∂N6∂ξ

]dξdη =

16

3 1 0 −4 0 01 3 0 −4 0 00 0 0 0 0 0−4 −4 0 8 0 0

0 0 0 0 8 −80 0 0 0 −8 8

,

S12 =∫K0

∂N1∂ξ

∂N2∂ξ

∂N3∂ξ

∂N4∂ξ

∂N5∂ξ

∂N6∂ξ

[∂N1∂η

∂N2∂η

∂N3∂η

∂N4∂η

∂N5∂η

∂N6∂η

]dξdη =

16

3 0 1 0 0 −41 0 −1 −4 4 00 0 0 0 0 0−4 0 0 4 −4 4

0 0 4 −4 4 −40 0 −4 4 −4 4

,

S21 =∫K0

∂N1∂η

∂N2∂η

∂N3∂η

∂N4∂η

∂N5∂η

∂N6∂η

[∂N1∂ξ

∂N2∂ξ

∂N3∂ξ

∂N4∂ξ

∂N5∂ξ

∂N6∂ξ

]dξdη = St12,

S2 =∫K0

∂N1∂ξ

∂N2∂ξ

∂N3∂ξ

∂N4∂ξ

∂N5∂ξ

∂N6∂ξ

[∂N1∂η

∂N2∂η

∂N3∂η

∂N4∂η

∂N5∂η

∂N6∂η

]+

∂N1∂η

∂N2∂η

∂N3∂η

∂N4∂η

∂N5∂η

∂N6∂η

[∂N1∂ξ

∂N2∂ξ

∂N3∂ξ

∂N4∂ξ

∂N5∂ξ

∂N6∂ξ

]dξdη = S12 + S21,

S3 =∫K0

∂N1∂η

∂N2∂η

∂N3∂η

∂N4∂η

∂N5∂η

∂N6∂η

[∂N1∂η

∂N2∂η

∂N3∂η

∂N4∂η

∂N5∂η

∂N6∂η

]dξdη =

16

3 0 1 0 0 −40 0 0 0 0 01 0 3 0 0 −40 0 0 8 −8 00 0 0 −8 8 0−4 0 −4 0 0 8

.

Así pues, las integrales sobre el triángulo de trabajo podrían expresarse como:

48

Page 69: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

∫K

∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

[∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

]dxdy = J

(∂ξ∂x

)2

S1 + ∂ξ

∂x

∂η

∂xS2 +

(∂η

∂x

)2

S3

,

∫K

∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

[∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

]dxdy = J

(∂ξ∂y

)2

S1 + ∂ξ

∂y

∂η

∂yS2 +

(∂η

∂y

)2

S3

,

∫K

∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

[∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

]dxdy = J

(∂ξ

∂x

∂ξ

∂yS1 + ∂ξ

∂x

∂η

∂yS12 + ∂ξ

∂y

∂η

∂xSt12 + ∂η

∂x

∂η

∂yS3

),

∫K

∂φ1∂y

∂φ2∂y

∂φ3∂y

∂φ4∂y

∂φ5∂y

∂φ6∂y

[∂φ1∂x

∂φ2∂x

∂φ3∂x

∂φ4∂x

∂φ5∂x

∂φ6∂x

]dxdy = J

(∂ξ

∂x

∂ξ

∂yS1 + ∂ξ

∂x

∂η

∂ySt12 + ∂ξ

∂y

∂η

∂xS12 + ∂η

∂x

∂η

∂yS3

).

Y, por tanto, la matriz de rigidez elemental podría calcularse mediante

49

Page 70: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Se =S(1,1) S(1,2)

S(2,1) S(2,2)

,siendo:

S(1,1) =

JE (1− ν)(1 + ν) (1− 2ν)

(S1

((∂ξ

∂x

)2+

12 (1− ν)

(∂ξ

∂y

)2)+ S2

(∂ξ

∂x

∂η

∂x+

12 (1− ν)

∂ξ

∂y

∂η

∂y

)+ S3

((∂η

∂x

)2+

12 (1− ν)

(∂ξ

∂y

)2)),

S(1,2) =

JE (1− ν)(1 + ν) (1− 2ν)

(S1

(1 + ν

2∂ξ

∂x

∂ξ

∂y

)+ S12

1− ν∂ξ

∂x

∂η

∂y+

12 (1− ν)

∂ξ

∂y

∂η

∂x

)+ S21

(1

2 (1− ν)∂ξ

∂x

∂η

∂y+

ν

1− ν∂ξ

∂y

∂η

∂x

)+ S3

(1 + ν

2∂η

∂x

∂η

∂y

)),

S(2,1) =

JE (1− ν)(1 + ν) (1− 2ν)

(S1

(1 + ν

2∂ξ

∂x

∂ξ

∂y

)+ S12

(1

2 (1− ν)∂ξ

∂x

∂η

∂y+

ν

1− ν∂ξ

∂y

∂η

∂x

)+ S21

1− ν∂ξ

∂x

∂η

∂y+

12 (1− ν)

∂ξ

∂y

∂η

∂x

)+ S3

(1 + ν

2∂η

∂x

∂η

∂y

)),

S(2,2) =

JE (1− ν)(1 + ν) (1− 2ν)

(S1

(1

2 (1− ν)

(∂ξ

∂x

)2+(∂ξ

∂y

)2)+ S2

(1

2 (1− ν)∂ξ

∂x

∂η

∂x+∂ξ

∂y

∂η

∂y

)+ S3

(1

2 (1− ν)

(∂η

∂x

)2+(∂ξ

∂y

)2)).

Así pues, ya se estaría en disposición de calcular la matriz de rigidez de cada elemento dela partición.

Supongamos que se encuentran todas las matrices elementales calculadas9. Para ensamblarla matriz de rigidez global, se parte, en primer lugar de una matriz S llena de ceros de tamaño2nz × 2nz.

Fijémonos en la componente (i-ésima, j-ésima) de una matriz de rigidez elemental Se delelemento K-ésimo:

Si i ≤ 6 y j ≤ 6, se trata del coeficiente del desplazamiento en dirección x del nodoi-ésimo del elemento K en la ecuación que relaciona todos los desplazamientos nodalesdel elemento K con la fuerza en dirección x del nodo j-ésimo.

Si i ≥ 7 y j ≤ 6, se trata del coeficiente del desplazamiento en dirección y del nodo (i−6)-ésimo del elemento K en la ecuación que relaciona todos los desplazamientos nodales delelemento K con la fuerza en dirección x del nodo j-ésimo.

Si i ≤ 6 y j ≥ 7, se trata del coeficiente del desplazamiento en dirección x del nodoi-ésimo del elemento K en la ecuación que relaciona todos los desplazamientos nodalesdel elemento K con la fuerza en dirección y del nodo (j − 6)-ésimo.

Si i ≥ 7 y j ≥ 7, se trata del coeficiente del desplazamiento en dirección y del nodo (i−6)-ésimo del elemento K en la ecuación que relaciona todos los desplazamientos nodales delelemento K con la fuerza en dirección y del nodo (j − 6)-ésimo.

Supongamos, en principio, que el nodo i-ésimo del elemento K tiene índice r. Para cadamatriz de rigidez elemental Se, se va sumando la componente (i-ésima, j-ésima) a la componentede la matriz de rigidez global del siguiente modo:

9A pesar de que computacionalmente no se hallan todas las matrices elementales Se y después se obtiene lamatriz de rigidez global S (en ese orden) por ser muy costoso numéricamente, se expone aquí de esta manerapara que sea para el lector más sencillo comprender el proceso de ensamblado.

50

Page 71: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Si i ≤ 6 y j ≤ 6, dicha componente de la matriz Se se suma a la componente de S quesea el coeficiente del desplazamiento en dirección x del nodo r-ésimo en la ecuación querelaciona todos los desplazamientos nodales del dominio Ω con la fuerza en dirección xdel nodo r-ésimo.

Si i ≥ 7 y j ≤ 6, dicha componente de la matriz Se se suma a la componente de S quesea el coeficiente del desplazamiento en dirección y del nodo r-ésimo en la ecuación querelaciona todos los desplazamientos nodales del dominio Ω con la fuerza en dirección xdel nodo r-ésimo.

Si i ≤ 6 y j ≥ 7, dicha componente de la matriz Se se suma a la componente de S quesea el coeficiente del desplazamiento en dirección x del nodo r-ésimo en la ecuación querelaciona todos los desplazamientos nodales del dominio Ω con la fuerza en dirección ydel nodo r-ésimo.

Si i ≥ 7 y j ≥ 7, dicha componente de la matriz Se se suma a la componente de S quesea el coeficiente del desplazamiento en dirección y del nodo r-ésimo en la ecuación querelaciona todos los desplazamientos nodales del dominio Ω con la fuerza en dirección ydel nodo r-ésimo.

Expongamos todas estas ideas sobre el ejemplo de la figura 14:

1

8

2

9

3

10

411

18

17

16

1514

7

13

6

12

5

1

2 3

4

5

x

y

Figura 14: Ejemplo de subdivisión del dominio para el ensamblado de la matriz de rigidez. Losnodos están numerados en rojo y los elementos en negro.

51

Page 72: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

La matriz de rigidez de la figura 14 sería de dimensiones 36×36 (nz = 18). Dado que tiene 5elementos triángulo, se debería comenzar hallando las 5 matrices elementales relativas a dichos5 elementos (de dimensiones 12× 12) para poder calcular la matriz de rigidez global.

Para hallar, por ejemplo, la componente (1,1) de la matriz de rigidez global habría quesumar aquellas componentes (situadas en las diagonales) de las matrices de rigidez elementales1 y 2 que sean los coeficientes del desplazamiento del nodo 1 en dirección x en las ecuacionesque relacionen los desplazamientos nodales de cada elemento con la fuerza aplicada en direcciónx del nodo 1.

Para hallar, por ejemplo, la componente (1,2) de la matriz de rigidez global, habría quesumar únicamente la componente de la matriz de rigidez elemental del elemento 2 que seael coeficiente del desplazamiento del nodo 2 en dirección x en la ecuación que relacione losdesplazamientos nodales (del elemento 2) con la fuerza aplicada en dirección x del nodo 1.

Por último ejemplo, para hallar la componente (24,14) de la matriz de rigidez global habríaque sumar aquellas componentes de las matrices de rigidez elementales 3 y 4 que sean loscoeficientes del desplazamiento del nodo 14 en dirección x en las ecuaciones que relacionen losdesplazamientos nodales de cada elemento con la fuerza aplicada en dirección y del nodo 6(24-18=6).

Finalmente, cabe destacar que las matrices de rigidez globales son dispersas, lo quequiere decir que la mayor parte de sus componentes (en este caso, no diagonales) son nulas.Esto permite un mejor almacenamiento en memoria y, evidentemente, un menor tiempo decomputación en operaciones tipo factorización LU en comparación con matrices no dispersas.

2.3.2. Vector de cargas.

El vector de cargas ~p es un vector columna de 2nz componentes que recoge, en sus nzprimeras componentes las integrales de los productos de las cargas en dirección x por lasfunciones base y en sus nz restantes componentes las integrales de los productos de las cargasen dirección y por las funciones base.

En dicho vector ~p se engloban todas las acciones sobre el dominio, es decir, por un ladolas fuerzas por unidad de volumen en el dominio y por otro, la tensión aplicada en los ladosNeumman.

Así pues, veamos en cómo calcular la contribución al vector de cargas de las fuerzas porunidad de volumen.

En primer lugar, sobre cada elemento, se calculan las 12 integrales siguientes:∫K

~f · ~φidxdy.

Para ello se hace uso de la transformación afín al triángulo de referencia (descrito en la

52

Page 73: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

sección 2.2.2) en cada elemento.∫K

~f · ~φidxdy = J∫K0

~f(x(ξ, η), y(ξ, η)) · ~Ni(ξ, η)dξdη.

Ahora, veamos cómo se van a calcular las integrales del segundo miembro de la ecuaciónanterior.

En primer lugar, hay que destacar que estas integrales se hacen siempre sobre el mismorecinto, el triángulo de referencia.

Por ello, se va a hacer uso de una fórmula de cubatura exacta para polinomios de gradomenor o igual a 5 en el triángulo de referencia mediante los siguientes nodos y pesos:

j ξj ηj wj

1 13

13

980

2 (6+√

15)21

(6+√

15)21

(155+√

15)2400

3 (9−2√

15)21

(6+√

15)21

(155+√

15)2400

4 (6+√

15)21

(9−2√

15)21

(155+√

15)2400

5 (6−√

15)21

(6−√

15)21

(155−√

15)2400

6 (9+2√

15)21

(6−√

15)21

(155−√

15)2400

7 (6−√

15)21

(9+2√

15)21

(155−√

15)2400

Tabla 4: Nodos y pesos para la fórmula de cubatura en el triángulo de referencia.

Así, para calcular las integrales anteriores se procede de la siguiente manera:

∫K

~f · ~φidxdy = J∫K0

~f(x(ξ, η), y(ξ, η)) · ~Ni(ξ, η)dξdη ≈ J7∑j=1

wj ~f(x(ξj, ηj), y(ξj, ηj)) · ~Ni(ξj, ηj).

Evidentemente, el cálculo de x(ξj, ηj) e y(ξj, ηj) se hace mediante el cambio de variabledescrito en la sección 2.2.2,

xy

=x1

y2

+x2 − x1 x3 − x1

y2 − y1 y3 − y1

ξη

.

Programas recomendados:• inte.m, (ver página 218).

53

Page 74: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Posteriormente, se toman las seis primeras integrales y se suman, cada una de ellas porseparado, a la componente del vector de cargas cuyo índice coincide con el índice del nodo enel que la primera de las componentes de la función base i-ésima vale 1.

Por otro lado, se toman las seis últimas integrales y se suman, cada una de ellas por separado,a la componente del vector de cargas cuyo índice menos nz coincide con el índice del nodo enel que la segunda de las componentes de la función base i-ésima vale 1.

Tratemos ahora las tensiones aplicadas en los lados Neumman.

En la partición, un lado exterior tiene que ser (obligatoriamente) tipo Neumman, tipoDirichlet o mixto. Cabe destacar que, evidentemente, los lados libres (aquellos en los que no haytensión no nula aplicada ni desplazamientos prescritos) son considerados lados tipo Neummanen los que la tensión aplicada es nula.

Como ya se introdujo anteriormente, únicamente se va a estudiar el caso en el que los ladosfrontera tienen condiciones de contorno puras, es decir, no se trata el caso en el que existanlados con condiciones mixtas.

Así pues, a la hora de implementar computacionalmente el problema es preciso, además dela numeración de nodos y elementos, la numeración de lados frontera y la definición de cargasexternas y desplazamientos prescritos.

En primer lugar, es preciso asignar a cada lado Neumman un número natural entre 1 y elln, donde ln es el número total de lados Neumman que posee la partición. Evidentemente,cada número natural comprendido en ese intervalo debe hacer referencia únicamente a unlado Neumman y viceversa.

Una vez numerados, se define la matriz N , de dimensiones 3 × ln, que contiene en lacolumna i-ésima, los índices de los tres nodos contenidos en el lado Neumman i-ésimo,ordenados en sentido antihorario según el elemento al que pertenecen.

54

Page 75: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

1

8

2

9

3

10

411

18

17

16

1514

7

13

6

12

5

1

2 3

4

5

x

y

1 2 3

4

5

Figura 15: Ejemplo de malla con los lados Neumman marcados en verde y los lados Dirichlet

marcados en azul. N =

1 2 3 4 511 13 17 18 162 3 4 5 6

.

Es turno ahora de definir el valor tensional en cada lado Neumman. Existen múltiplesmaneras de recoger computacionalmente el estado tensional de cada lado. En principio,las tensiones que aparecen sobre cada lado son una función vectorial sobre los mismos ycomo tal, debieran tratarse. Sin embargo, debido a la simplificación hecha en el presenteestudio de considerar variaciones cuadráticas a lo sumo de las cargas impuestas en loslados frontera de la partición, se han tomado únicamente sus valores en los extremos ypuntos medio de cada lado.Se proponen, pues, dos formas de almacenar las cargas que actúan sobre cada lado:

• La primera de ellas es mediante una estructura de datos, C(1)n , de dimensiones

2×3×ln. Cada submatriz k-ésima c(1)nijk

, de dimensiones 2×3, recoge en la primera filalas cargas en dirección tangencial al lado Neumman k-ésimo (en sentido antihorario)en el punto inicial (c(1)

n1,1,k), medio (c(1)

n1,2,k) y final (c(1)

n1,3,k). En la segunda fila se recogen

las cargas en dirección normal al lado Neumman k-ésimo (hacia afuera) en el puntoinicial (c(1)

n2,1,k), medio (c(1)

n2,2,k) y final (c(1)

n2,3,k).

• La segunda de ellas es parecida a la anterior, con la salvedad de que se toman lascargas en sentido del eje x en vez de tangenciales al lado y en sentido del eje yen vez de normales al lado, a saber: una estructura de datos, C(2)

n , de dimensiones2× 3× ln. Cada submatriz k-ésima c(2)

nijk, de dimensiones 2× 3, recoge en la primera

fila las cargas en sentido del eje x en el punto inicial(c(2)n1,1,k

), medio

(c(2)n1,2,k

)y final

55

Page 76: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

(c(2)n1,3,k

). En la segunda fila se recogen las cargas en sentido del eje y en el punto

inicial(c(2)n2,1,k

), medio

(c(2)n2,2,k

)y final

(c(2)n2,3,k

).

1

8

2

9

3

10

411

18

17

16

1514

7

13

6

12

5

1

2 3

4

5

x

y

1 2 3

4

5

Figura 16: Ejemplo de problema de deformación plana con las cargas en los lados Neumman

marcadas en magenta. N =

1 2 3 4 511 13 17 18 162 3 4 5 6

, c(1)ij1 = c

(1)ij2 = c

(1)ij4 = c

(1)ij5 =

0 0 00 0 0

,

c(1)ij3 =

0 0 01 2 3

, c(2)ij1 = c

(2)ij2 = c

(2)ij4 = c

(2)ij5 =

0 0 00 0 0

y c(2)ij3 =

0 0 0−1 −2 −3

.

La razón por la que se va a hacer uso de las dos estructuras de datos conjuntamente,C(1)n y C(2)

n , es que en ciertas ecuaciones del proceso de refinamiento adaptativo serámás conveniente disponer de la primera de ellas y en otras ecuaciones de la segunda.Para pasar de c(1)

nijka c(2)

nijkse realiza el cambio de base descrito a continuación. Si

denotamos ~tγ como el vector unitario tangente al lado γ (lado Neumman k-ésimo)en sentido antihorario y ~nγ como el vector unitario normal exterior al lado γ se tieneque

c(2)nijk

=[~tγ ~nγ

]c(1)nijk

.

56

Page 77: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Programas recomendados:• orientacargas.m, (ver página 242).

Una vez que queda descrito cómo se almacenan las cargas en cada lado en nuestro caso, seva a proceder a explicar cómo se contabilizan estas acciones en el vector de cargas.

En primer lugar, recordemos que definíamos ln como el número total de lados Neummande la partición. En cada lado γ (no necesariamente Neumman), definimos la coordenada sγ.Dicha coordenada sγ recorre cada lado γ según se especifica en la matriz T , es decir, si se tratadel lado 1, 2 ó 3 del elemento K, se toma como vértice inicial el nodo de índice recogido en lacomponente 1, 2 ó 3 de la columna K-ésima de la matriz T respectivamente, donde se verificaque sγ = 0. Además, como vértice final se toma el nodo de índice recogido en la componente 2,3 ó 1 de la columna K-ésima de la matriz T respectivamente, donde se verifica que sγ = ‖γ‖,siendo ‖γ‖ la longitud del lado γ.

Así, una vez definidos estos conceptos, se exponen las 6 integrales que han de calcularsesobre cada lado Neumman,

∫γi~q(sγ) · ~φ(i,j)(sγ)ds.

Donde el índice i se refiere al lado Neumman i-ésimo. Por otra parte, el índice j va de 1 a6, donde:

~φ(i,1) es la función base vectorial sobre el triángulo K al que pertenece el lado Neummani-ésimo en la que la primera componente vale 1 en el nodo inicial y nula en el resto.

~φ(i,2) es la función base vectorial sobre el triángulo K al que pertenece el lado Neummani-ésimo en la que la primera componente vale 1 en el nodo medio y nula en el resto.

~φ(i,3) es la función base vectorial sobre el triángulo K al que pertenece el lado Neummani-ésimo en la que la primera componente vale 1 en el nodo final y nula en el resto.

~φ(i,4) es la función base vectorial sobre el triángulo K al que pertenece el lado Neummani-ésimo en la que la segunda componente vale 1 en el nodo inicial y nula en el resto.

~φ(i,5) es la función base vectorial sobre el triángulo K al que pertenece el lado Neummani-ésimo en la que la segunda componente vale 1 en el nodo medio y nula en el resto.

~φ(i,6) es la función base vectorial sobre el triángulo K al que pertenece el lado Neummani-ésimo en la que la segunda componente vale 1 en el nodo final y nula en el resto.

57

Page 78: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Las integrales anteriores se calculan usando la regla de Simpson,∫γi

~q(sγ) · ~φ(i,j)(sγ)ds ≈ ‖γ‖(1

6~q(0) · ~φ(i,j)(0) + 23~q(‖γ‖

2

)· ~φ(i,j)

(‖γ‖2

)+ 1

6~q(‖γ‖) ·~φ(i,j)(‖γ‖)

).

Por lo tanto10,

∫γi~q(sγ) · ~φ(i,j)(sγ)ds ≈

‖γ‖6 c

(2)1,1,i si j = 1,

2‖γ‖3 c

(2)1,2,i si j = 2,

‖γ‖6 c

(2)1,3,i si j = 3,

‖γ‖6 c

(2)2,1,i si j = 4,

2‖γ‖3 c

(2)2,2,i si j = 5,

‖γ‖6 c

(2)2,3,i si j = 6.

Una vez que se han calculado las 6 integrales anteriores para cada lado Neumman, es precisosumarlas a la componente adecuada del vector de cargas ~p. Para ello se hace lo siguiente sobrecada lado Neumman: para j = 1, 2, 3, se suma la integral

∫γi~q(sγ) · ~φ(i,j)(sγ)ds a la componente

m-ésima donde m es el índice del nodo en el que la primera componente de ~φ(i,j) vale 1. Por otrolado para j = 4, 5, 6, se suma la integral

∫γi~q(sγ) · ~φ(i,j)(sγ)ds a la componente (m+ nz)-ésima

donde m es el índice del nodo en el que la segunda componente de ~φ(i,j) vale 1.

Así pues, se habrían tenido en cuenta las contribuciones al vector de cargas ~p de las fuerzaspor unidad de volumen y las cargas en los lados Neumman.

2.3.3. Condiciones de contorno en desplazamientos.

Si al haber calculado la matriz de rigidez y el vector de cargas (tal y como se ha expuestohasta ahora) se intentase resolver el problema S ~w = ~p, se obtendría un sistema indeterminado,(siendo la componente i-ésima de ~w el desplazamiento del nodo de índice i en dirección x paralas nz primeras componentes y en dirección y para las nz últimas).

El sistema es indeterminado por definición, pues si bien las condiciones de contorno entensiones intervenían en el vector de cargas, las condiciones de contorno en desplazamiento aún

10En nuestro caso, al tratar sólo variaciones de las cargas aplicadas cuadráticas a lo sumo sobre los ladosfrontera de la partición, la regla de Simpson estima el valor de las integrales de forma exacta. Aún así se hadejado el símbolo ≈ para recalcar que se calcula mediante una fórmula de cuadratura y que, en general, lasfórmulas de cuadratura aproximan el valor de las integrales, no las calculan de forma exacta.

58

Page 79: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

no han sido tenidas en cuenta. Así, al no disponer de nodos con desplazamientos prescritos, siun cierto vector ~x es solución del sistema, por ejemplo, ~x + ~c sería también solución, siendo ~cun vector con todas sus componentes iguales.

La explicación física a este hecho es sencilla, el sólido puede desplazarse como sólidorígido, pues aún no se han establecido qué nodos han de permanecer empotrados (o con susdesplazamientos prescritos).

Así, describamos cómo se imponen los desplazamientos prescritos al sistema S ~w = ~p.

En primer lugar, cabe destacar que cuando se dispone de lados con condiciones mixtas endirecciones cualesquiera (pero perpendiculares entre sí), el procedimiento es más complejo queel aquí descrito. Sin embargo, dado que los lados serán o puramente Neumman o puramenteDirichlet, el procedimiento es bastante sencillo.

Por otro lado, describamos cómo se enumeran los nodos Dirichlet y cómo se recogenmatricialmente los desplazamientos prescritos:

Como viene siendo la mecánica habitual, los nodos Dirichlet se numeran asignándole acada uno un número natural entre 1 y nd (ambos inclusive), siendo nd el número totalde nodos Dirichlet presentes en la partición. El número que se le asigna a cada nodoDirichlet es irrelevante siempre y cuando se cumpla que a cada número natural entre 1 ynd le corresponde un sólo nodo Dirichlet (y viceversa, evidentemente). Esta numeraciónse recoge en un vector ~zd de nd componentes cuya componente i-ésima es el índice delnodo Dirichlet i-ésimo.

Por otro lado, el desplazamiento de cada nodo Dirichlet se recoge en una matriz zdes dedimensiones 2×nd que contiene, en la columna i-ésima, el desplazamiento en la direccióndel eje x en la primera componente y el desplazamiento en la dirección del eje y en lasegunda del nodo Dirichlet i-ésimo.

59

Page 80: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

1 2

3 4

56

78

9

11

14

17

19

20

21

10 12

16

15

13

18

Figura 17: Ejemplo de problema de deformación plana con los nodos Dirichlet mar-cados en azul con sus correspondientes desplazamientos. ~zd = [1 9 2 11 4 17 5 20]t,

zdes = 0 0 0 0 2 2 2 0−2 −3 −4 0 0 1 2 0

.

Una vez que queda explicado cómo se recogen matricialmente los nodos Dirichlet es turnode explicar cómo ha de modificarse el sistema S ~w = ~p para contemplar el desplazamiento delos nodos Dirichlet y llegar a otro sistema del tipo S ′ ~w = ~p′ que sea compatible determinado.

Para cada nodo Dirichlet i-ésimo se procede como sigue: se toma la fila j-ésima de la matrizde rigidez (siendo j el índice del nodo Dirichlet i-ésimo, (la componente i-ésima de ~zd es j))y se sustituyen todos sus elementos por un 0 excepto la componente j-ésima, que se sustituyepor un 1. Además de esto, la componente j-ésima del vector de cargas se sustituye por sudesplazamiento en la dirección del eje x.

Posteriormente, se procede igual pero para el desplazamiento en dirección del eje y, es decir,se toma la fila (j + nz)-ésima de la matriz de rigidez (siendo j el índice del nodo Dirichlet i-ésimo, (la componente i-ésima de ~zd es j)) y se sustituyen todos sus elementos por un 0 exceptola componente (j + nz)-ésima, que se sustituye por un 1. Además de esto, la componente

60

Page 81: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

(j+nz)-ésima del vector de cargas se sustituye por su desplazamiento en la dirección del eje y.

Así, tras la modificación de 2nd filas de la matriz de rigidez y 2nd componentes del vectorde cargas se obtiene un sistema compatible determinado S ′ ~w = ~p′ (siempre y cuando en elproblema original se impida el desplazamiento del sólido como sólido rígido).

2.3.4. Solución del sistema lineal S ′ ~w = ~p′. Condiciones de contorno fuertes ydébiles: desplazamientos y cargas.

La resolución del sistema S ′ ~w = ~p′ permite, en general11, la obtención de una aproximaciónal campo de desplazamiento ~u en los nodos del mallado.

Así, la componente i-ésima del vector ~w es la aproximación al desplazamiento en direccióndel eje x del nodo de índice i y la componente (i + nz)-ésima del vector ~w es la aproximaciónal desplazamiento en dirección del eje y del nodo de índice i.

Por la forma de imponer las condiciones de contorno en desplazamientos se tiene que en losnodos Dirichlet las aproximaciones de los desplazamientos calculadas resultan ser exactas. Sinembargo, se tendría una solución exacta para el resto de nodos si, al calcular las tensiones enlos lados Neumman, se obtuviera como resultado las acciones externas y si en el interior delelemento se obtuviera que la divergencia del tensor de tensiones σ fueran de igual módulo y desentido contrario a las fuerzas por unidad de volumen.

Si se verificasen todas las condiciones anteriores se tendría que el problema podría serresuelto en una sola iteración (y no tendría sentido estudiar un posible refinamiento de la malla).Sin embargo, la única condición de contorno que se cumple de forma fuerte es el desplazamientoen los nodos Dirichlet.

Así pues, al proceder sucesivamente en el refinamiento de la malla, es de esperar que lastensiones en los lados Neumman converjan a las acciones externas y que en el interior delelemento la divergencia del tensor de tensiones σ converja también a las fuerzas por unidad devolumen (cambiadas de signo).

Veamos todo esto aplicado a un ejemplo sencillo:11Para todos aquellos casos en los que se impida el desplazamiento como sólido rígido.

61

Page 82: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

1

8

2

9

3

10

411

18

17

16

1514

7

13

6

12

5

1

2 3

4

5

x

y

1 2 3

4

5

Figura 18: Problema de deformación plana.

Donde ~f =0

0

∀ ~r =xy

∈ Ω′, E = 2900 y ν = 0,3.

Las matrices asociadas al problema anterior serían las siguientes:

62

Page 83: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

z =0 1 2 3 2 1 0 0,5 0,5 0 0,5 1 1,5 1,5 2 1,5 2,5 2,5

0 0 0 0 1 1 1 0,5 1 0,5 0 0,5 0 0,5 0,5 1 0 0,5

,

T =

1 1 2 3 36 2 3 5 47 6 6 6 58 11 13 15 179 12 14 16 1810 8 12 14 15

,

N =

1 2 3 4 5 611 13 17 18 16 92 3 4 5 6 7

,

c(1)ij1 = c

(1)ij2 = c

(1)ij4 = c

(1)ij5 =

0 0 00 0 0

,c

(1)ij3 =

0 0 01 2 3

,c

(2)ij1 = c

(2)ij2 = c

(2)ij4 = c

(2)ij5 =

0 0 00 0 0

,c

(2)ij3 =

0 0 0−1 −2 −3

,

~zd =

110796

,

zdes =0 0 0 0 0

0 0 0 0 0

.Si se resuelve este problema mediante el procedimiento descrito, se obtiene la siguiente

solución con 15 cifras significativas:

63

Page 84: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

~u1 =[0 0

]t,

~u2 =[−0,003000186195389 −0,001450309070768

]t,

~u3 =[−0,006995466402028 −0,010190306746531

]t,

~u4 =[−0,008865633115741 −0,027139039033852

]t,

~u5 =[0,003878646429473 −0,009849447010550

]t,

~u6 =[0 0

]t,

~u7 =[0 0

]t,

~u8 =[−0,000383705631611 0,000007743697366

]t,

~u9 =[0 0

]t,

~u10 =[0 0

]t,

~u11 =[−0,001268003337303 −0,000333656196632

]t,

~u12 =[−0,000958497804658 −0,000586372383918

]t,

~u13 =[−0,005237155288536 −0,004568472004165

]t,

~u14 =[−0,001292674964761 −0,004034241677548

]t,

~u15 =[−0,001143806982431 −0,009758354633841

]t,

~u16 =[0,002423958203829 −0,004515839754368

]t,

~u17 =[−0,008252003817138 −0,017591360855829

]t,

~u18 =[−0,000895394296173 −0,017165274808093

]t,

Donde el subíndice de ~uh indica que se trata del desplazamiento en el nodo de índice h.

Se define para este problema la coordenada s, que recorre los lados Neumman en sentido

antihorario partiendo del origen de coordenadas, esto es, s = 0 en ~r =0

0

y s = 4 +√

2 en

~r =1

1

como se ejemplifica en la figura 19.

64

Page 85: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

x

y

s=0 s=1 s=2 s=3

s=3+√2s=4+√2

Figura 19: Coordenada s en el dominio.

Así pues, se va a proceder de la forma descrita a continuación. Se parte de la malla inicialde la figura 18 y se expone la tensión en dirección normal, esto es, ~ntl (σ~nl) a lo largo de lacoordenada s como sigue: se comienza calculando la tension en dirección normal en cada nodoperteneciente a uno o dos lados Neumman con respecto a cada uno de los elementos a los quepertenezca. Más tarde, se representa esta tensión directamente en los en los nodos que sólopertenecen a un lado Neumman, y en los restantes, se representan a su vez las dos tensionesexteriores en el mismo punto. Para cualquier punto intermedio entre dos nodos, se representacomo una recta (azul) entre los valores de tensiones exteriores calculados entre los nodos en losque se encuentra y con respecto al elemento al que pertenece. Finalmente, se representa en rojola tensión exterior que se debía tener en el contorno para la solución exacta del problema.

Una vez hecha la representación, se reparticiona la malla con dos refinamientos sucesivoscongruentes sobre cada elemento, esto es, sobre cada elemento se crean 4 triángulos congruentesal primero y después, cada uno de los 4 triángulos se vuelven a subdividir en otros 4 triánguloscongruentes (por cada triángulo presente en la malla se crean 16). Una vez reparticionada lamalla, se representan las tensiones exteriores del mismo modo que se describió anteriormente.Este proceso se repite en total en cuatro veces.

Las mallas se exponen con los nodos con desplazamientos nulos marcados en rojo y, enaquellos nodos en los que la tensión exterior sea no nula, esta se representa con un vectormagenta.

Veamos pues, los resultados obtenidos:

65

Page 86: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 0.5 1 1.5 2 2.5 3

−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

x

y

Problema de deformaciones planas

Figura 20: Malla para iteración 1.

0 1 2 3 4 5 6−4

−3

−2

−1

0

1

2

3

4

5

s

Ten

sión

en

dire

cció

n no

rmal

, nT·(

σ n)

Figura 21: Tensión en dirección normal para el problema resuelto sobre la malla para iteración1 (figura 20). Las tensiones exteriores según el MEF están representadas en azul y la soluciónexacta en rojo.

66

Page 87: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 0.5 1 1.5 2 2.5 3

−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

x

y

Problema de deformaciones planas

Figura 22: Malla para iteración 2.

0 1 2 3 4 5 6−2

−1

0

1

2

3

4

5

6

7

s

Ten

sión

en

dire

cció

n no

rmal

, nT·(

σ n)

Figura 23: Tensión en dirección normal para el problema resuelto sobre la malla para iteración2 (figura 22). Las tensiones exteriores según el MEF están representadas en azul y la soluciónexacta en rojo.

67

Page 88: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 0.5 1 1.5 2 2.5 3

−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

x

y

Problema de deformaciones planas

Figura 24: Malla para iteración 3.

0 1 2 3 4 5 6−4

−2

0

2

4

6

8

10

12

14

16

s

Ten

sión

en

dire

cció

n no

rmal

, nT·(

σ n)

Figura 25: Tensión en dirección normal para el problema resuelto sobre la malla para iteración3. (figura 24) Las tensiones exteriores según el MEF están representadas en azul y la soluciónexacta en rojo.

68

Page 89: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 0.5 1 1.5 2 2.5 3

−1

−0.5

0

0.5

1

x

y

Problema de deformaciones planas

Figura 26: Malla para iteración 4.

0 1 2 3 4 5 6−5

0

5

10

15

20

25

30

s

Ten

sión

en

dire

cció

n no

rmal

, nT·(

σ n)

Figura 27: Tensión en dirección normal para el problema resuelto sobre la malla para iteración4 (figura 26). Las tensiones exteriores según el MEF están representadas en azul y la soluciónexacta en rojo.

69

Page 90: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Como se puede ver, si bien la solución primera dada por el MEF tiene poco o nada quever con la solución exacta, los refinamientos sucesivos sí permiten obtener una solución que vaconvergiendo a la solución exacta.

No hay que pensar que la tensión en s = 4 +√

2 es errónea, pues en este tipo deconfiguraciones, aquellos puntos en los que confluyen dos condiciones de contorno distintas,son puntos singulares. Por ejemplo, en s = 4 +

√2 se está imponiendo a la vez que ~u = 0

y que σ~n = [0 0]t, es decir, se prescriben a la vez condiciones que no pueden satisfacerseconjuntamente, lo que provoca que σ~n en ese punto según la solución del MEF, vaya tendiendoa infinito en particiones cada vez más finas12.

Se deja además, la geometría final alcanzada en la iteración 3 en la situación deformadae indeformada. Se ha creído conveniente no mostrar la geometría final en la iteración 4 yaque la alta concentración de elementos no permite ver con claridad la diferencia entre las dossituaciones.

0 0.5 1 1.5 2 2.5 3

−0.5

0

0.5

1

1.5

x

y

Geometría final

Figura 28: Geometría final deformada (rojo) para la iteración 3 sobre la situación indeformada(azul).

12Para mayor información sobre este hecho, puede consultarse la obra [7]

70

Page 91: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Programas recomendados:• fem_pd.m, (ver página 193).• fpuv.m, (ver página 212).• trabisn.m, (ver página 259).

71

Page 92: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

3. Algoritmo de Ainsworth-Rankin.

3.1. Descripción general.

El algoritmo de Ainsworth-Rankin es un procedimiento que permite calcular una cota dela norma de la energía del error del campo de desplazamientos sobre cada elemento y sobre eldominio completo tomando la solución en desplazamientos del problema de deformación planaresuelto mediante el MEF.

El algoritmo puede ser aplicado sobre problemas de deformación plana resuelto medianteaproximaciones conformes y no conformes. En nuestro caso, se ha programado y estudiadosolamente para aproximaciones conformes ya que es así como se ha resuelto el problema dedeformación plana.

En lo relativo al procedimiento de subdivisión de los elementos, puede aprovecharse estacota de la norma para tomar un criterio de refinamiento, es decir, reparticionar en cada iteraciónaquellos elementos que presenten una mayor cota de la norma de la energía del error endesplazamientos.

Se define ~e = ~u−~uX donde ~u representa el campo de desplazamientos (exacto) del problemay ~uX representa la solución aproximada del problema usando el MEF. Por otro lado, la normade la energía de los errores en desplazamientos es

|||~e|||Ω′ =(∫

Ω′σ (~e) : ε (~e) dΩ′

) 12.

Donde recuérdese que la operación matricial A : B sobre dos matrices de dimensiones m×nse define como A : B = ∑m

i=1∑nj=1 aijbij.

La cota superior de |||~e|||Ω′ , llamésmosla, |||~es|||Ω′ , se calcula mediante

|||~es|||Ω′ =nT∑K=1

√Φ2K + Ψ2

K .

A su vez, sobre cada triángulo K, ΦK y ΨK se calculan como suma de varios términos,

ΦK = Φ(1)K + Φ(2)

K + Φ(3)K ,

ΨK = Ψ(1)K + Ψ(2)

K .

Así pues, para calcular |||~es|||K , es decir, la cota de la norma del error del desplazamientosobre cada elemento, es necesario calcular 5 términos: Φ(1)

K , Φ(2)K , Φ(3)

K , Ψ(1)K , y Ψ(2)

K .

72

Page 93: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Se expondrán, a continuación, 5 secciones en las que se abordará el cálculo de cada uno delos términos necesarios para computar la cota de la norma de la energía del error del campo dedesplazamientos sobre cada elemento, donde se definirán los términos, cantidades y operacionespertinentes y se describirá al detalle su implementación computacional.

Existen ciertos aspectos que destacar con respecto a las obras [2] y [1]. En primer lugar,si bien sobre cada lado podían existir, en principio, condiciones Neumman o Dirichlet endirecciones perpendiculares entre sí, en la obra [1] se impone que estas dos direccionesperpendiculares entre sí deben ser, para cada lado, la normal exterior y la tangente en sentidoantihorario, esto es:

~u · ~n = q(n) en ΓnD,~u · ~t = q(t) en ΓtD,

(σ~n) · ~n = g(n) en ΓnN ,(σ~n) · ~t = g(t) en ΓtN .

Donde ΓnD es la parte del contorno ∂Ω′ en el que se tienen condiciones Dirichlet en direcciónnormal exterior, ΓtD es la parte del contorno ∂Ω′ en el que se tienen condiciones Dirichleten dirección tangencial antihoraria, ΓnN es la parte del contorno ∂Ω′ en el que se tienencondiciones Neumman en dirección normal exterior y ΓnN es la parte del contorno ∂Ω′ en elque se tienen condiciones Neumman en dirección tangencial antihoraria. En nuestro caso, al notratar condiciones mixtas, se denota ΓD ≡ ΓtD ∩ ΓnD como la parte de la frontera ∂Ω′ en la quese dan condiciones Dirichlet puras y ΓN ≡ ΓtN ∩ ΓnN como la parte de la frontera ∂Ω′ en la quese dan condiciones Neumman puras. Nótese que ∂Ω′ ≡ ΓD ∪ ΓN y ΓD ∩ ΓN ≡ ∅.

Además, en nuestro caso, q(n), q(t), g(n) y g(t) serán funciones polinómicas cuadráticas a losumo sobre cada lado frontera de la partición.

Por último, se recomienda, a medida que se vayan desarrollando los procedimientosnuméricos para ejecutar el algoritmo, ir consultando el código numérico del algoritmo (ar.m)expuesto en la página 145.

73

Page 94: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

3.2. Cálculo del término Φ(1)K .

El término Φ(1)K es una cota superior de (

∫K (E−1σK) : σKdK)1/2 13 14. Es, sin lugar a dudas,

el más complejo de todos para problemas resueltos mediante elementos finitos y aproximacionesconformes con variaciones de las tensiones en la frontera y de los desplazamientos prescritoscuadráticas a lo sumo sobre cada lado frontera de la partición (nuestro caso).

En primer lugar, es preciso hallar los flujos ~gK,γ ∈ P1 (γ) × P1 (γ) en cada lado γ de cadaelemento K que verifican que:

~gK,γ + ~gK′,γ = ~0 si γ = ∂K ∩ ∂K ′, K,K ′ ∈ P ,~gK,γ · ~tγ = Pγ

(g(t)

)si γ ∈ ΓN ,

~gK,γ · ~nγ = Pγ(g(n)

)si γ ∈ ΓN ,∫

K

~PK(~f)· ~pldK −

∫Kσ (~uX) : ε (~pl) +

∑γ∈K

∫γ~gK,γ · ~plds = 0 ∀~pl ∈ P1(K)× P1(K),

donde K ′ es el triángulo vecino al triángulo de trabajo K que comparten el lado γ, P es lapartición del dominio y ~PK

(~f), Pγ

(g(n)

)y Pγ

(g(t)

)son las proyecciones que se describen en

las dos siguientes subsecciones (3.2.1 y 3.2.2).

Para saber cómo calcular los flujos es necesario acudir a la obra [2], según se deriva desde[1]. Sin embargo, si bien tanto en la presente memoria como en [1] se resuelve un problemade deformación plana, la obra [1] versa únicamente sobre un problema elíptico, que se enunciacomo:

13En esta expresión, los términos σ no son los tensores de tensión del problema inicial, (de ser así, su cálculoserá bastante más sencillo), sino que se trata de la función σ ∈ VK que verifica∫

K

~rK · ~vdK +3∑i=1

∫γi

~Rγi,K · ~vdγi =∫K

σ : ε (~v) dK ∀ ~v ∈ H1(Ω),

donde:

~rK = ~PK

(~f)

+∇ · σ(~uX|K) en K,

~Rγ,K = ~gK,γ − σ(~uX|K)~nKγ .

(ver [1] para más información).14E−1 es un operador matricial que actúa sobre matrices cuadradas de orden 2, y se define como

E−1W = 12µ

(W − λ

2 (λ+ µ) tr(W )I),

siendo µ = E2(1+ν) , λ = Eν

(1+ν)(1−2ν) e I =[

1 00 1

].

74

Page 95: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Encontrar el campo u que satisface:

−∆u+ cu = f en Ω,∂u

∂n= g en ΓN ,

u = 0 en ΓD.

Donde c ≥ 0, f ∈ L2 en Ω, g ∈ L2 en ∂Ω, ΓN ∪ ΓD = ∂Ω, ΓN ∩ ΓD = ∅ y ~n es el vectornormal unitario exterior a Ω.

Como se puede comprobar, el problema elíptico es muy distinto al problema de deformaciónplana. De este modo, para poder hallar los flujos ~gK,γ es preciso readaptar todos los cálculos,teoremas y resultados de la obra [2] al problema de deformación plana. Evidentemente al seresta una labor que requiere un trabajo que supera con creces cualquier pretensión dentro unProyecto Fin de Carrera, se tomó la decisión (llegados a este punto del mismo) de realizaraquellas simplificaciones sobre los problemas tratados que permitiesen aplicar el algoritmo de[2] al problema de deformación plana sin una readaptación excesivamente compleja del mismo.

Esta simplificación del problema fue la de no tratar lados frontera con condiciones mixtas, yaque en el problema elíptico, u no es un campo vectorial, sino escalar. Por tanto, en el algoritmodesarrollado en [2] no se contempla la coexistencia de dos tipos de condiciones sobre un mismolado frontera, por lo que se eliminó esta posibilidad en los problemas de deformación plana aquítratados.

3.2.1. Cálculo de ~PK(~f).

~PK(~f)es la proyección sobre el elemento K de las fuerzas por unidad de volumen, que se

define como ∫K

(~f − ~PK

(~f))· ~pldK = 0 ∀~pl ∈ P1(K)× P1(K),

y se calcula expresando~PK

(~f)

=6∑i=1

αi~φi,

donde ~φ1, ~φ2, ~φ3, ~φ4, ~φ5 y ~φ6, son, en este caso, las seis funciones base lineales vectoriales

en el elemento K, que en el caso del triángulo de referencia resultan ser: ~N1 =1− ξ − η

0

,~N2 =

ξ0

, ~N3 =η

0

, ~N4 = 0

1− ξ − η

, ~N5 =0ξ

y ~N6 =0η

.Por otro lado, los αi son escalares que resultan de resolver el sistema

75

Page 96: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

(~φ1, ~φ1

)K

(~φ1, ~φ2

)K

(~φ1, ~φ3

)K

(~φ1, ~φ4

)K

(~φ1, ~φ5

)K

(~φ1, ~φ6

)K(

φ2, ~φ1)K

(~φ2, ~φ2

)K

(~φ2, ~φ3

)K

(~φ2, ~φ4

)K

(~φ2, ~φ5

)K

(~φ2, ~φ6

)K(

~φ3, ~φ1)K

(~φ3, ~φ2

)K

(~φ3, ~φ3

)K

(~φ3, ~φ4

)K

(~φ3, ~φ5

)K

(~φ3, ~φ6

)K(

~φ4, ~φ1)K

(~φ4, ~φ2

)K

(~φ4, ~φ3

)K

(~φ4, ~φ4

)K

(~φ4, ~φ5

)K

(~φ4, ~φ6

)K(

~φ5, ~φ1)K

(~φ5, ~φ2

)K

(~φ5, ~φ3

)K

(~φ5, ~φ4

)K

(~φ5, ~φ5

)K

(~φ5, ~φ6

)K(

~φ6, ~φ1)K

(~φ6, ~φ2

)K

(~φ6, ~φ3

)K

(~φ6, ~φ4

)K

(~φ6, ~φ5

)K

(~φ6, ~φ6

)K

α1

α2

α3

α4

α5

α6

=

(~f, ~φ1

)K(

~f, ~φ2)K(

~f, ~φ3)K(

~f, ~φ4)K(

~f, ~φ5)K(

~f, ~φ6)K

,

donde cabe recordar que se define(~a,~b

)K

=∫K

(~a ·~b

)dK.

Para calcular todas las integrales que aparecen en el sistema anterior, se hace latransformación afín al triángulo de referencia,

J

(~N1, ~N1

)K0

(~N1, ~N2

)K0

(~N1, ~N3

)K0

(~N1, ~N4

)K0

(~N1, ~N5

)K0

(~N1, ~N6

)K0(

N2, ~N1)K0

(~N2, ~N2

)K0

(~N2, ~N3

)K0

(~N2, ~N4

)K0

(~N2, ~N5

)K0

(~N2, ~N6

)K0(

~N3, ~N1)K0

(~N3, ~N2

)K0

(~N3, ~N3

)K0

(~N3, ~N4

)K0

(~N3, ~N5

)K0

(~N3, ~N6

)K0(

~N4, ~N1)K0

(~N4, ~N2

)K0

(~N4, ~N3

)K0

(~N4, ~N4

)K0

(~N4, ~N5

)K0

(~N4, ~N6

)K0(

~N5, ~N1)K0

(~N5, ~N2

)K0

(~N5, ~N3

)K0

(~N5, ~N4

)K0

(~N5, ~N5

)K0

(~N5, ~N6

)K0(

~N6, ~N1)K0

(~N6, ~N2

)K0

(~N6, ~N3

)K0

(~N6, ~N4

)K0

(~N6, ~N5

)K0

(~N6, ~N6

)K0

α1

α2

α3

α4

α5

α6

= J

(~f (x (ξ, η) , y (ξ, η)) , ~N1

)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N2)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N3)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N4)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N5)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N6)K0

.

Calculando las integrales de la matriz de coeficientes y dividiendo ambas expresiones por eljacobiano,

112

124

124 0 0 0

124

112

124 0 0 0

124

124

112 0 0 0

0 0 0 112

124

124

0 0 0 124

112

124

0 0 0 124

124

112

α1

α2

α3

α4

α5

α6

=

(~f (x (ξ, η) , y (ξ, η)) , ~N1

)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N2)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N3)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N4)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N5)K0(

~f (x (ξ, η) , y (ξ, η)) , ~N6)K0

.

Por otro lado, el vector de datos puede calcularse haciendo uso de la fórmula de cubaturaexpuesta en la sección 2.3.2, cuyos nodos de cubatura y pesos son los expuestos en la tabla 4(página 53).

Así pues, cada componente del vector de datos podría calcularse como:

∫K0

~f(x(ξ, η), y(ξ, η)) · ~Ni(ξ, η)dξdη ≈7∑j=1

wj ~f(x(ξj, ηj), y(ξj, ηj)) · ~Ni(ξj, ηj).

76

Page 97: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

La operación anterior es la misma que la realizada en el cálculo de la contribución de lasfuerzas por unidad de volumen en el vector de cargas, con la salvedad de que aquí se usan lasfunciones base lineales y no cuadráticas.

Así, una vez resuelto el sistema expuesto anteriormente para elemento K, se obtienen los 6coeficientes αi que permiten calcular la proyección ~PK

(~f)mediante ~PK

(~f)

= ∑6i=1 αi

~φi.

3.2.2. Cálculo de Pγg(n) y Pγg(t).

Pγg(n) y Pγg(t) son las proyecciones sobre el lado γ de las tensiones aplicadas (normales y

tangenciales respectivamente), que se definen como

∫γ

(g(n) − Pγg(n)

)pldγ = 0 ∀pl ∈ P1(γ),∫

γ

(g(t) − Pγg(t)

)pldγ = 0 ∀pl ∈ P1(γ),

y se calculan mediante

Pγg(n) =

2∑i=1

α(n)i φi,

Pγg(t) =

2∑i=1

α(t)i φi,

donde φ1 y φ2, son, en este caso, las dos funciones base lineales escalares en el lado γ.

Definamos ahora el lado de referencia, γ0, como el segmento que empieza en ξ = 0 y terminaen ξ = 1. Las funciones base lineales escalares en el lado referencia, γ0, son: N1 = 1−ξ y N2 = ξ.

Finalmente, los coeficientes α(n)i y α(t)

i son los escalares que resultan de resolver los sistemas:

(φ1, φ1)γ (φ1, φ2)γ(φ2, φ1)γ (φ2, φ2)γ

α(n)1

α(n)2

=

(g(n), φ1

)γ(

g(n), φ2)γ

,(φ1, φ1)γ (φ1, φ2)γ

(φ2, φ1)γ (φ2, φ2)γ

α(t)1

α(t)2

=

(g(t), φ1

)γ(

g(t), φ2)γ

.De manera similar a como se procedía en la sección anterior, se transforman las integrales

anteriores al lado de referencia,

77

Page 98: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

‖γ‖

(N1, N1)γ0(N1, N2)γ0

(N2, N1)γ0(N2, N2)γ0

α(n)1

α(n)2

= ‖γ‖1

316

16

13

α(n)1

α(n)2

=

(g(n), φ1

)γ(

g(n), φ2)γ

,

‖γ‖

(N1, N1)γ0(N1, N2)γ0

(N2, N1)γ0(N2, N2)γ0

α(t)1

α(t)2

= ‖γ‖1

316

16

13

α(t)1

α(t)2

=

(g(t), φ1

)γ(

g(t), φ2)γ

,donde, como ya se definió, ‖γ‖ es la longitud del lado γ.

Recordando que la coordenada si, definida en la sección 2.3.2, valía 0 en el comienzo dellado i-ésimo y ‖γ‖ en el final del mismo, los vectores de datos pueden hallarse usando la reglade Simpson, esto es,

(g(n), φ1

= ‖γ‖(

16g

(n) (0) + 23

12g

(n)(‖γ‖2

)),

(g(n), φ2

= ‖γ‖(

23

12g

(n)(‖γ‖2

)+ 1

6g(n) (‖γ‖)

),

(g(t), φ1

= ‖γ‖(

16g

(t) (0) + 23

12g

(t)(‖γ‖2

)),

(g(t), φ2

= ‖γ‖(

23

12g

(t)(‖γ‖2

)+ 1

6g(t) (‖γ‖)

).

Además, haciendo uso de la estructura de datos C(1)n

15, los sistemas quedarían como:

13

16

16

13

α(n)1

α(n)2

=1

6c(1)1,1,γ + 2

312c

(1)1,2,γ

23

12c

(1)1,2,γ + 1

6c(1)1,3,γ

,1

316

16

13

α(t)1

α(t)2

=1

6c(1)2,1,γ + 2

312c

(1)2,2,γ

23

12c

(1)2,2,γ + 1

6c(1)2,3,γ

.Finalmente, resolviendo los sistemas anteriores para cada lado, pueden obtenerse Pγg(n) =∑2

i=1 α(n)i φi y Pγg(t) = ∑2

i=1 α(t)i φi.

15Es aquí donde puede verse la importancia de contar con C(1)n y C(2)

n , ya que la primera de ellas es necesariapara calcular las proyecciones sobre el lado γ de las tensiones aplicadas y la segunda se usaba a la hora decalcular el vector de cargas.

78

Page 99: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

3.2.3. Cálculo de los flujos ~gK.

El procedimiento para hallar los flujos ~gK,γ viene descrito en [2] para una partición conelementos lineales (no cuadráticos o cualquier orden superior). Sin embargo, tal y como seespecifica en [2]:

The discussion has thus far been limited to finite element approximation involvingfirst-order elements. However, in the first-order equilibration procedure presentedin Section 6.4, the only property that was really required of the finite elementapproximation uX was the satisfaction of the Galerkin condition (6.29) withrespect to the first-order functions. A Galerkin approximation based on higher-orderelements also possesses this property. It follows that precisely the same proceduredescribed in section 6.4 could be employed to recover fluxes satisfiying the first-orderequilibration conditions (6.32) from a given finite element approximation based onany order elements.

Por tanto, se va a seguir un procedimiento basado en el uso de elementos lineales. Por estarazón, aparecerán en la mayoría de las ocasiones las funciones base (vectoriales o escalares) φio ~φi que serán lineales, no cuadráticas como venía siendo habitual. Aún así se especificará encada caso si corresponde a funciones base lineales o cuadráticas.

Para comenzar con el procedimiento, es necesario calcular el valor de la forma bilinealBK(~uX , ~φi) del problema para cada triángulo, donde, en este caso, las funciones ~φi son las 6funciones base vectoriales lineales sobre el triángulo de trabajo. El valor de la forma bilinealen nuestro problema es, para cada elemento, BK(~uX , ~φi) = S(l)

e we, donde S(l)e es la matriz de

rigidez elemental para elementos lineales de 6 nodos (de dimensiones 6× 12) y we es un vectorde 12 componentes, cuyas 6 primeras son los desplazamiento en dirección del eje x de los 6nodos del elemento y cuyas 6 últimas son los desplazamiento en dirección del eje y de los 6nodos del elemento.

Sin embargo, se pueden aprovechar las matrices de rigidez elementales ya calculadas (paraelementos cuadráticos) en la resolución del MEF sabiendo que,

φl1 = φc1 + 12φ

c4 + 1

2φc6,

φl2 = φc2 + 12φ

c5 + 1

2φc4,

φl3 = φc3 + 12φ

c6 + 1

2φc5,

donde φli es la función escalar lineal i-ésima y φcj es la función escalar cuadrática j-ésima.

Así pues, se calculan, para cada elemento,

79

Page 100: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

s(l)e1,i

= s(c)e1,i

+ 12s

(c)e4,i

+ 12s

(c)e6,i∀i ∈ N, i ∈ [1, 12],

s(l)e2,i

= s(c)e2,i

+ 12s

(c)e5,i

+ 12s

(c)e4,i∀i ∈ N, i ∈ [1, 12],

s(l)e3,i

= s(c)e3,i

+ 12s

(c)e6,i

+ 12s

(c)e5,i∀i ∈ N, i ∈ [1, 12],

s(l)e4,i

= s(c)e7,i

+ 12s

(c)e10,i

+ 12s

(c)e12,i∀i ∈ N, i ∈ [1, 12],

s(l)e5,i

= s(c)e8,i

+ 12s

(c)e11,i

+ 12s

(c)e10,i∀i ∈ N, i ∈ [1, 12],

s(l)e6,i

= s(c)e9,i

+ 12s

(c)e12,i

+ 12s

(c)e11,i∀i ∈ N, i ∈ [1, 12].

Una vez calculadas las nT matrices elementales S(l)e , se opera, para cada elemento,

BK(~uX , ~φ1)BK(~uX , ~φ2)BK(~uX , ~φ3)BK(~uX , ~φ4)BK(~uX , ~φ5)BK(~uX , ~φ6)

= S(l)

e we.

Así pues, a partir de las matrices elementales ya calculadas en el problema de deformaciónplana (según el MEF), se pueden calcular los seis términos BK(~uX , ~φi) para cada elemento.

El siguiente paso es calcular, para cada elemento, las 6 cantidades (~f, ~φi)K donde, en estecaso, de nuevo las funciones ~φi son las 6 funciones base vectoriales lineales sobre el triángulode trabajo.

Si bien para el cálculo de estas cantidades se podría operar de manera similar al caso anterior(usando la contribución de las fuerzas por unidad de volumen al vector de cargas16), es mássencillo incluso calcular estas cantidades mediante la fórmula de cubatura descrita en la sección2.3.2 con los nodos y pesos recogidas en la tabla 4 (página 53). Así pues,

(~f, ~φi)K =∫K

~f · ~φidxdy =

= J∫K0

~f(x(ξ, η), y(ξ, η)) · ~Ni(ξ, η)dξdη ≈ J7∑j=1

wj ~f(x(ξj, ηj), y(ξj, ηj)) · ~Ni(ξj, ηj).

16Durante el cálculo de las componentes del vector de cargas, era necesario calcular los términos (~f, ~φi)K ,pero en ese caso, las funciones base vectoriales eran cuadráticas, no lineales como en el caso que nos ocupa.)

80

Page 101: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Donde se vuelve a hacer hincapié en que las funciones ~Ni son las funciones base vectorialeslineales sobre el triángulo de referencia.

Una vez realizados estos cálculos, se procede a computar, para cada elemento, ∆K(~φi) de lasiguiente forma,

∆K(~φi) = BK(~uX , ~φi)− (~f, ~φi)K

∆K(~φ1) = BK(~uX , ~φ1)− (~f, ~φ1)K ,∆K(~φ2) = BK(~uX , ~φ2)− (~f, ~φ2)K ,∆K(~φ3) = BK(~uX , ~φ3)− (~f, ~φ3)K ,∆K(~φ4) = BK(~uX , ~φ4)− (~f, ~φ4)K ,∆K(~φ5) = BK(~uX , ~φ5)− (~f, ~φ5)K ,∆K(~φ6) = BK(~uX , ~φ6)− (~f, ~φ6)K .

El siguiente paso es calcular, para cada elemento, ∆K(~φi),

∆K(~φi) = ∆K(~φi)−∫∂K〈~q〉 · ~φid(∂K).

Donde17 18 19,

〈~q〉 =

12 (σK + σK′)~nγ en ∂K ∩ ∂K ′,

σK~nγ en ∂K ∩ ΓD,~q en ∂K ∩ ΓN .

La integral∫∂K 〈~q〉 · ~φid(∂K) se calculará mediante la regla de Simpson en cada uno de los

tres lados que componen cada triángulo, por lo que el integrando deberá estar evaluado, encada lado, en el punto inicial, medio y final del mismo.

Un aspecto interesante es cómo encontrar, dado un lado de un cierto triángulo, si existeotro triángulo vecino que comparta también ese lado.

En elementos cuadráticos (y superiores) es algo muy sencillo. Supongamos que queremossaber con qué triángulo comparte el triángulo i-ésimo el lado j-ésimo. Bastaría saber cuál es elíndice del punto medio que se encuentra en el lado j-ésimo del triángulo i-ésimo y buscar esemismo índice en la matriz T .

17Esta definición es válida sólo en ausencia de lados con condiciones mixtas.18~q es, en cada punto perteneciente a un lado Neumman, la tensión externa impuesta, es decir, se trata de un

vector de dos componentes en la que la primera es la tensión en dirección del eje x y la segunda la tensión endirección del eje y.

19σK es el tensor de tensiones calculados en un cierto punto del elemento K con respecto al elemento K. Enla obra [1], σK,n son multiplicadores de Lagrange. Debido a esta coincidencia de notación, en lo que sigue sedenotarán dichos multiplicadores de Lagrange como ΘK,n.

81

Page 102: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Podrían darse dos casos:

En el primero de ellos, que ese índice sólo apareciese una vez en la matriz T . Eso indicaríaque se trata de un lado frontera y no es compartido con ningún otro elemento.

En el segundo de ellos, aparecería en dos ocasiones. En una de ellas estaría en la columnaj-ésima y en la otra se encontraría en la columna m-ésima (ocupando la posición (3+l)-ésima). Así pues, ese lado sería el lado j-ésimo del triángulo i-ésimo y también el ladol-ésimo del triángulo m-ésimo.

En el caso de que la partición estuviese formada por elementos lineales20, no existiríanpuntos medios compartidos exclusivamente por dos lados, por lo que la forma de proceder seríadistinta. Sería necesario tomar los índices de los dos vértices del triángulo i-ésimo situados enel lado j-ésimo (que se desea conocer si es compartido). Después, se buscaría qué columnascontienen los índices de los dos vértices (en este caso la matriz T tendría 3 filas). Si sóloexistiese una columna, (la columna i-ésima), se trataría de un lado frontera. En caso de queexistiesen, (supongamos que son las columnas i-ésima y m-ésima), sería necesario saber quéposición ocupan los índices de los vértices dentro de la columna m-ésima de la matriz T. Siocupasen la posición 1 y 2 (sin importar si el vértice 1 ocupa la posición 1 ó 2 y viceversa)se trataría del lado 1 del elemento m-ésimo, si ocupasen la posición 2 y 3 (sin importar si elvértice 1 ocupa la posición 2 ó 3 y viceversa) se trataría del lado 2 del elemento m-ésimo y siocupasen la posición 3 y 1 (sin importar si el vértice 1 ocupa la posición 3 ó 1 y viceversa) setrataría del lado 3 del elemento m-ésimo.

Programas recomendados:• ladocom.m, (ver página 221).

Se plantea, por otro lado, cómo calcular el tensor de tensiones en un punto cualquieraperteneciente a un cierto elemento K, σK (con respecto al elemento K21). Se trata de uncálculo realmente sencillo cuando se dispone del desplazamiento en cada uno de los nodos delelemento con respecto al que se desea calcular. Así, recordando la ley de comportamiento endeformación plana,

εαβ = 1 + ν

Eσαβ −

ν(1 + ν)E

σχχδαβ = 1 + ν

E(σαβ − νσχχδαβ) .

Reescribiendo la ley anterior para obtener tensiones en función de deformaciones,20No se trata de nuestro caso, pero se deja expuesto por si resulta de interés.21Recuérdese que en los lados γ que pertenecían a dos elementos, las funciones base no eran, en general,

derivables, por lo que el tensor de tensiones varía según se tomen los deplazamientos de los nodos de unelemento u otro.

82

Page 103: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

σαβ = E

1 + νεαβ + E

1 + ν

ν

1− 2ν εχχδαβ = E

1 + ν

(εαβ + ν

1− 2ν εχχδαβ).

Las deformaciones se encuentran en función de los desplazamientos en la ley decompatibilidad,

εαβ = 12 (uα,β + uβ,α) .

Será, por tanto, necesario hallar ∂ux∂x

, ∂ux∂y

, ∂uy∂y

y ∂uy∂x

.

Debido a que se toma que cada componente del campo de desplazamientos dentro delelemento es

ux ((x, y) ∈ K) =6∑i=1

~φi(x, y) · ~ui =6∑i=1

φi(x, y)uxi ,

uy ((x, y) ∈ K) =6∑i=1

~φi+6(x, y) · ~ui =6∑i=1

φi(x, y)uyi ,

podemos calcular las derivadas de los desplazamientos como

∂ux∂x

=6∑i=1

∂φi∂x

uxi ,

∂ux∂y

=6∑i=1

∂φi∂y

uxi ,

∂uy∂x

=6∑i=1

∂φi∂x

uyi ,

∂uy∂y

=6∑i=1

∂φi∂y

uyi .

Para obtener las derivadas parciales de las funciones base escalares cuadráticas en eltriángulo de trabajo se aplica la regla de la cadena a la transformación afín al triángulo dereferencia,

∂φi∂x

= ∂Ni

∂ξ

∂ξ

∂x+ ∂Ni

∂η

∂η

∂x,

∂φi∂y

= ∂Ni

∂ξ

∂ξ

∂y+ ∂Ni

∂η

∂η

∂y.

Recordando lo visto en la sección 2.2.2,

83

Page 104: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

ξη

= 1(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1)

y3 − y1 −(x3 − x1)−(y2 − y1) x2 − x1

x− x1

y − y1

,por lo que,

∂ξ

∂x= y3 − y1

(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1) ,

∂ξ

∂y= −(x3 − x1)

(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1) ,

∂η

∂x= −(y2 − y1)

(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1) ,

∂η

∂y= x2 − x1

(x2 − x1)(y3 − y1) + (x3 − x1)(y3 − y1) ,

siendox1

y1

,x2

y2

yx3

y3

las coordenadas del primer, segundo y tercer vértice del triángulo de

trabajo respectivamente.

Con respecto a las derivadas parciales de las funciones base escalares cuadráticas se tiene,

∂N1∂ξ

= −3 + 4ξ + 4η, ∂N1∂η

= −3 + 4ξ + 4η,∂N2∂ξ

= 4ξ − 1, ∂N2∂η

= 0,∂N3∂ξ

= 0, ∂N3∂η

= 4η − 1,∂N4∂ξ

= 4− 8ξ − 4η, ∂N4∂η

= −4ξ,∂N5∂ξ

= 4η, ∂N5∂η

= 4ξ,∂N6∂ξ

= −4η, ∂N6∂η

= 4− 4ξ − 8η.

Por lo tanto, ya se estaría en disposición de calcular las tensiones de cualquier punto conrespecto a un elemento al que pertenezca en función del desplazamiento de sus nodos.

Programas recomendados:• sigfunu.m, (ver página 254).

84

Page 105: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Así, retomando la definición de 〈~q〉,

〈~q〉 =

12 (σK + σK′)~nγ en ∂K ∩ ∂K ′,

σK~nγ en ∂K ∩ ΓD,~q en ∂K ∩ ΓN .

Se puede observar que ya se estaría en disposición de calcular 〈~q〉 en cualquier punto decualquier lado de cualquier elemento (pues ya se ha tratado cómo calcular cada término queaparece en su definición).

La integral∫∂K 〈~q〉 · ~φid(∂K) será calculada mediante la regla de Simpson en cada lado, esto

es, se resolverá según la regla de Simpson cada sumando de la derecha de la siguiente expresión:

∫∂K〈~q〉 · ~φid(∂K) =

∫γ1〈~q〉 · ~φidγ1 +

∫γ2〈~q〉 · ~φidγ2 +

∫γ3〈~q〉 · ~φidγ3.

Por ello, es necesario evaluar el integrando en cada punto inicial, medio y final del ladosobre el que se integre (haciendo uso de la coordenada si). Así,∫

γj

〈~q〉 · ~φidγj ≈ ‖γj‖(1

6(〈~q〉 (0) · ~φi(0)

)+ 2

3

(〈~q〉(‖γ‖

2

)· ~φi

(‖γ‖2

))+ 1

6(〈~q〉 (‖γ‖) · ~φi (‖γ‖)

)).

Cabe destacar que la integral sobre el lado γj será nula siempre que ambas componentes lafunción base vectorial lineal ~φi sean nulas para los tres nodos del lado γj. Esto ocurre en el casode que alguna componente de la función ~φi valga 1 en el vértice opuesto al lado sobre el que seintegre.

Así pues, una vez calculadas las 6 cantidades∫∂K 〈~q〉 · ~φid(∂K) en cada elemento, se procede

a calcular ∆K(~φi) = ∆K(~φi)−∫∂K 〈~q〉 · ~φid(∂K) en cada elemento.

Llegados a este punto, es preciso calcular las cantidades ΘK,i22. Así pues, es necesario

calcular, para cada elemento K, ΘK,1, ΘK,2, ΘK,3, ΘK,4, ΘK,5, y ΘK,6, relativas a las funcionesbase vectoriales lineales del elemento, ~φ1, ~φ2, ~φ3, ~φ4, ~φ5 y ~φ6 respectivamente.

Para ello es necesario operar sobre lo que en inglés se conoce como patches. Un patch es unconjunto de elementos que comparten un nodo vértice, supongamos, en lo siguiente, el nodo deíndice p.

22Recuérdese que en la obra [2] se denotan como σK,i.

85

Page 106: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

1 24

36

5

7

9 108

Figura 29: Ejemplo de patches. El patch del nodo verde lo forman los elementos 1, 2 y 4 y elpatch del nodo azul lo forman los elementos 8, 5, 6, 7 y 9.

Para proceder en la obtención de los ΘK,i en cada elemento, será preciso establecer encada uno de los patches de la partición, un sistema del tipo AX = B, siendo A la matriz decoeficientes de tamaño np × np, X la matriz de incógnitas de tamaño np × 2, B la matriz dedatos de tamaño np × 2 y np el número de elementos que conforman cada patch.

Dicho sistema del tipo AX = B asociado a cada patch, permitirá obtener aquellos ΘK,i

de los elementos que comparte el nodo de índice p cuyas funciones base vectoriales linealesasociadas tengan alguna componente unidad en el nodo p.

Expongamos esta idea sobre un ejemplo:

86

Page 107: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

21

5

3

8

12

255 6 2

43

24

13

22 24

Figura 30: Patch del nodo 2, que es un nodo situado en en interior del dominio.

La figura 30 representa tres elementos (de una partición con más elementos) que forman unpatch. A modo de ejemplo, supongamos que la matriz T de la partición a la que pertenece elpatch de la figura tiene las siguientes columnas:

t1,13

t2,13

t3,13

t4,13

t5,13

t6,13

=

3255212643

,

t1,22

t2,22

t3,22

t4,22

t5,22

t6,22

=

2555221246

,

t1,24

t2,24

t3,24

t4,24

t5,24

t6,24

=

25324843

.

Las cantidades Θ que podrían obtenerse del sistema del tipo AX = B serían: Θ13,3, Θ13,6,Θ22,3, Θ22,6, Θ24,1 y Θ24,4.

Veamos cómo proceder en cada tipo de patch:

87

Page 108: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Patches de vértice interior. Supóngase que el número de elementos del patch es np. Lamatriz de coeficientes A de dimensiones np × np es

A = 12

2 −1 . . . −1−1 2 −1 . . . 0

... ...0 . . . −1 2 −1−1 . . . −1 2

.

Por otra parte, la matriz de incógnitas posee dos columnas, y en cada una de ellas seencuentran ordenados (en sentido horario según el elemento al que hagan referencia), todos losΘK,i con i = 1, 2, 3 en la primera columna y todos los ΘK,i con i = 4, 5, 6 en la segunda.

Por ejemplo, en el caso del patch de la figura 30, la matriz de incógnitas sería

X =

Θ13,3 Θ13,6

Θ24,1 Θ24,4

Θ22,3 Θ22,6

.

En realidad, el índice del elemento que se coloque en la primera componente es irrelevante.Por ejemplo, son también válidas las siguientes matrices de incónitas

X =

Θ24,1 Θ24,4

Θ22,3 Θ22,6

Θ13,3 Θ13,6

y X =

Θ22,3 Θ22,6

Θ13,3 Θ13,6

Θ24,1 Θ24,4

.

Las matriz de datos es similar a la matriz de incógnitas con la salvedad de que se sustituyenlas ΘK,i por las ∆K(~φi), es decir, se trata de una matriz que posee dos columnas, y en cada unade ellas se encuentran ordenados (en sentido horario según el elemento al que hagan referenciay tomando como primer elemento el mismo que el escogido en la construcción de la matriz deincógnitas), todos los ∆K(~φi) con i = 1, 2, 3 en la primera columna y todos los ∆K(~φi) coni = 4, 5, 6 en la segunda.

Así, en el caso de tomar el elemento 13 como primer elemento, en el ejemplo que venimostratando, se tendría como matriz de datos

B =

∆13(~φ3) ∆13(~φ6)∆24(~φ1) ∆24(~φ4)∆22(~φ3) ∆22(~φ6)

.

88

Page 109: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Así pues, el sistema quedaría,

12

2 −1 −1−1 2 −1−1 −1 2

Θ13,3 Θ13,6

Θ24,1 Θ24,4

Θ22,3 Θ22,6

=

∆13(~φ3) ∆13(~φ6)∆24(~φ1) ∆24(~φ4)∆22(~φ3) ∆22(~φ6)

.

Tal y como el lector puede apreciar (si no lo ha hecho ya), la matriz A es singular (paranp ≥ 3, que es lo que siempre ocurre, ya que un patch interior está siempre formado por 3 omás elementos). El espacio nulo de la matriz A es el vector ~1 (siendo ~1 = [1 1 ..., 1]t), por lo quela solución existe si y solo si la suma de los términos de cada columna por separado es nula.

Sin embargo, eso exactamente es lo que ocurre en la matriz de datos, (cuya demostraciónse recoge en [2]), por lo que para poder resolver el sistema se transforma a

A ~1~1t 0

X

[ϑ1 ϑ2]

= B

[0 0]

.

DondeA ~1~1t 0

ya tiene rango máximo y permite hallar la solución del sistema AX = B para

el caso en que la suma de los términos de cada columna por separado sea nula (obteniéndose,en ese caso [ϑ1 ϑ2] = [0 0]).

Una buena manera de comprobar que el algoritmo está ejecutándose correctamente esverificar que, tras resolver el sistema, se obtiene [ϑ1 ϑ2] = [0 0]. En caso de que esto nosea así, los términos ∆K(~φi) de la matriz de datos no están bien calculados.

Programas recomendados:• MI.m, (ver página 230).

Patches de vértice exterior con lados Neumman-Neumman. Supóngase que el númerode elementos del patch es np. La matriz de coeficientes A de dimensiones np × np es

A = 12

1 −1 . . . 0−1 2 −1 . . . 0

... ...0 . . . −1 2 −10 . . . −1 1

.

89

Page 110: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Los elementos del patch se ordenan en sentido horario, tomando como primer elemento aquelque, teniendo un lado frontera, posee el nodo compartido al final del mismo según el sentidoantihorario.

Por otra parte, al igual que en el caso de los patches interiores, la matriz de incógnitas poseedos columnas, y en cada una de ellas se encuentran ordenados (según se ha explicado), todoslos ΘK,i con i = 1, 2, 3 en la primera columna y todos los ΘK,i con i = 4, 5, 6 en la segunda.

21

5

3

12

255 6 2

43

24

13

22

2

Figura 31: Patch del nodo 2, que es un nodo situado en la frontera, con los lados Neummanmarcados en azul.

Por ejemplo, en el caso del patch de la figura 31, (suponiendo que, para la particióna la que pertenece el patch

[t1,13 t2,13 t3,13 t4,13 t5,13 t6,13

]t=[3 255 2 12 6 43

]ty[

t1,22 t2,22 t3,22 t4,22 t5,22 t6,22

]t=[255 5 2 21 24 6

]t), la matriz de incógnitas sería

X =Θ22,3 Θ22,6

Θ13,3 Θ13,6

.De nuevo, la matriz de datos es similar a la matriz de incógnitas con la salvedad de que se

sustituyen las ΘK,i por las ∆K(~φi), es decir, se trata de una matriz que posee dos columnas,

90

Page 111: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

y en cada una de ellas se encuentran ordenados (en sentido horario según se ha explicado),todos los ∆K(~φi) con i = 1, 2, 3 en la primera columna y todos los ∆K(~φi) con i = 4, 5, 6 en lasegunda.

Así, en el ejemplo de la figura 31, se tendría como matriz de datos

B =∆22(~φ3) ∆22(~φ6)

∆13(~φ3) ∆13(~φ6)

.Así pues, el sistema sería

12

1 −1−1 1

Θ22,3 Θ22,6

Θ13,3 Θ13,6

=∆22(~φ3) ∆22(~φ6)

∆13(~φ3) ∆13(~φ6)

.Como se puede comprobar, se vuelve a obtener una matriz de coeficientes singular. El

espacio nulo de la matriz A es el vector ~1, por lo que la solución existe si y solo si la suma delos términos de cada columna por separado es nula.

Al igual que en el caso anterior, se verifica que la suma de los términos de cada columnapor separado es nula, (cuya demostración se recoge también en [2]), por lo que el sistema seamplía del siguiente modo:

A ~1~1t 0

X

[ϑ1 ϑ2]

= B

[0 0]

.De nuevo, una buena manera de comprobar que el algoritmo está ejecutándose correctamente

para este tipo de patches es verificar que tras resolver el sistema, se obtiene [ϑ1 ϑ2] = [0 0]. Encaso de que esto no sea así, los términos ∆K(~φi) no están bien calculados.

Programas recomendados:• MNN.m, (ver página 234).

Patches de vértice exterior con lados Dirichlet-Neumman. Supóngase que el númerode elementos del patch es np. La matriz de coeficientes A de dimensiones np × np puede ser

91

Page 112: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

A = 12

3 −1 . . . −1−1 2 −1 . . . 0

... ...0 . . . −1 2 −1−1 . . . −1 1

︸ ︷︷ ︸

Tipo 1

o A = 12

1 −1 . . . −1−1 2 −1 . . . 0

... ...0 . . . −1 2 −1−1 . . . −1 3

︸ ︷︷ ︸

Tipo 2

.

Según si el patch de vértice exterior con lados Dirichlet-Neumman es de tipo 1 o de tipo2. Son tipo 1 aquellos casos en los que el triángulo que posee el lado de tipo Neumman tieneel vértice compartido al inicio de dicho lado Neumman (en sentido antihorario) y son de tipo2 aquellos casos en los que el triángulo que posee el lado de tipo Neumman tiene el vérticecompartido al final de dicho lado Neumman (en sentido antihorario).

Por otra parte, la matriz de incógnitas posee dos columnas, y en cada una de ellas seencuentran ordenados todos los ΘK,i con i = 1, 2, 3 en la primera columna y todos los ΘK,i coni = 4, 5, 6 en la segunda. La forma de ordenar los elementos es establecer como primer elementoaquel que posea el lado de tipo Dirichlet (en los casos de patch de tipo 1) o el que posea el ladode tipo Neumman (en los casos de patch de tipo 2) y tomar el resto de elementos en sentidohorario.

21

5

3

12

255 6 2

43

24

13

22

21

5

3

12

255 6 2

43

24

13

22

TIPO 1 TIPO 2Figura 32: Patches del nodo 2, con los lados Neumman marcados en verde y los Dirichlet enazul.

92

Page 113: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Por ejemplo, en el caso de los patches de la figura 32, (suponiendo que en ambos casos, parala partición a las que pertenecen los patches se tiene

[t1,13 t2,13 t3,13 t4,13 t5,13 t6,13

]t=[

3 255 2 12 6 43]t

y[t1,22 t2,22 t3,22 t4,22 t5,22 t6,22

]t=[255 5 2 21 24 6

]t), la

matriz de incógnitas sería

X =Θ22,3 Θ22,6

Θ13,3 Θ13,6

.La matriz de datos es similar a la matriz de incógnitas con la salvedad de que se sustituyen

las ΘK,i por las ∆K(~φi), es decir, se trata de una matriz que posee dos columnas, y en cadauna de ellas se encuentran ordenados (de acuerdo a como se ha explicado), todos los ∆K(~φi)con i = 1, 2, 3 en la primera columna y todos los ∆K(~φi) con i = 4, 5, 6 en la segunda.

En el ejemplo de la figura 32, se tendría como matriz de datos

B =∆22(~φ3) ∆22(~φ6)

∆13(~φ3) ∆13(~φ6)

.Así pues, los sistemas serían:

12

3 −1−1 1

Θ22,3 Θ22,6

Θ13,3 Θ13,6

=∆22(~φ3) ∆22(~φ6)

∆13(~φ3) ∆13(~φ6)

(Tipo 1),

12

1 −1−1 3

Θ22,3 Θ22,6

Θ13,3 Θ13,6

=∆22(~φ3) ∆22(~φ6)

∆13(~φ3) ∆13(~φ6)

(Tipo 2).

En este tipo de patches no hay ningún problema de indeterminación en el sistema, por loque no es necesario modificar en absoluto el sistema para poder obtener la solución.

Programas recomendados:• MDN.m, (ver página 228).

Patches de vértice exterior con lados Dirichlet-Dirichlet. Supóngase que el númerode elementos del patch es np. La matriz de coeficientes A de dimensiones np × np es

93

Page 114: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

A = 12

3 −1 . . . −1−1 2 −1 . . . 0

... ...0 . . . −1 2 −1−1 . . . −1 3

.

Dentro del patch, los elementos se ordenan en sentido horario, tomando como primerelemento aquel que, teniendo un lado frontera, posee el nodo compartido al final del mismosegún el sentido antihorario.

La matriz de incógnitas posee dos columnas, y en cada una de ellas se encuentran ordenados(como se acaba de explicar), todos los ΘK,i con i = 1, 2, 3 en la primera columna y todos losΘK,i con i = 4, 5, 6 en la segunda.

21

5

3

12

255 6 2

43

24

13

22

Figura 33: Patch del nodo 2, que es un nodo situado en la frontera, con los lados Dirichletmarcados en azul.

Por ejemplo, en el caso del patch de la figura 33, (suponiendo que, para la partición

94

Page 115: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

a la que pertenece el patch[t1,13 t2,13 t3,13 t4,13 t5,13 t6,13

]t=[3 255 2 12 6 43

]ty[

t1,22 t2,22 t3,22 t4,22 t5,22 t6,22

]t=[255 5 2 21 24 6

]t), la matriz de incógnitas sería

X =Θ22,3 Θ22,6

Θ13,3 Θ13,6

.La matriz de datos es similar a la matriz de incógnitas con la salvedad de que se sustituyen

las ΘK,i por las ∆K(~φi), es decir, se trata de una matriz que posee dos columnas, y en cadauna de ellas se encuentran ordenados (en sentido antihorario según se ha explicado), todos los∆K(~φi) con i = 1, 2, 3 en la primera columna y todos los ∆K(~φi) con i = 4, 5, 6 en la segunda.

Así, en el ejemplo de la figura 33, se tendría como matriz de datos

B =∆22(~φ3) ∆22(~φ6)

∆13(~φ3) ∆13(~φ6)

.Así pues, el sistema sería

12

3 −1−1 3

Θ22,3 Θ22,6

Θ13,3 Θ13,6

=∆22(~φ3) ∆22(~φ6)

∆13(~φ3) ∆13(~φ6)

.En este tipo de patches tampoco hay ningún problema de indeterminación en el sistema,

por lo que no es necesario modificar en absoluto el sistema para poder obtener la solución.

Programas recomendados:• MDD.m, (ver página 226).

Un aspecto importante en el establecimiento del sistema asociado a los patches es conocer,a través de la matriz T , cuál es la ordenación de los elementos de la forma descrita en cada unode los distintos tipos de patches.

En todos los casos es necesario llevar a cabo la ordenación horaria de los elementos delpatch. Si bien es irrelevante cuál sea el primero de ellos en el caso de los patches interiores, noes así en el resto de casos.

En primer lugar, para saber qué elementos son los que comparten el vértice p-ésimo no haymás que buscar en la matriz T qué columnas contienen el índice p23.

23Cabe destacar que al tratarse de vértices, el índice p nunca aparecerá en las tres últimas filas de la matrizT .

95

Page 116: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Supongamos que se tienen los np elementos del patch. Es hora de ordenarlos según el caso.

Patches interiores: Como es irrelevante qué elemento se tome como primero, se proponeescoger aquel que se desee. Supongamos que resulta escogido el elemento de índice j1. Sebusca entonces si el índice p se encuentra en la primera, segunda o tercera componentede la columna j1-ésima de la matriz T . En caso de que se trate del nodo 1, 2 ó 3, se tomael índice del nodo 4, 5 ó 6 respectivamente. Una vez tomado el índice de este segundonodo, se busca qué columna de la matriz T tiene entre sus tres últimas componentes dichosegundo nodo (además de la columna j1-ésima).Evidentemente, al tratarse de un nodo colocado en el punto medio de un lado, sóloserá compartido por un elemento. Es recomendable buscar este segundo nodo entre lascolumnas de T relativas a los elementos del patch y no en la matriz T completa paraahorrar cálculos.Así pues, el segundo elemento es aquel que comparte dicho segundo nodo con el elementoj1. Se va procediendo de igual manera que en el caso anterior para conseguir ordenar loselementos, hasta que llegar de nuevo al elemento de índice j1.

Programas recomendados:• ordeni.m, (ver página 240).

Patches de nodos en lado frontera: En contraposición al caso anterior, ahora el primerelemento no puede ser cualquiera. Para encontrarlo, se comienza tomando el elemento deíndice más bajo. Se verifica, en primer lugar, que el lado 1, 2 ó 3 (en el caso de que ennodo p sea el vértice 2, 3 ó 1 respectivamente) no es un lado frontera.En caso de que sí lo sea, se toma dicho elemento como elemento primero. En caso de que nolo sea, se procede a realizar esta misma comprobación con el elemento con el que comparteel nodo 6, 5 ó 4 (en el caso de que en nodo p sea el vértice 1, 2 ó 3 respectivamente) yse repite hasta que el lado 1, 2 ó 3 (en el caso de que en nodo p sea el vértice 2, 3 ó 1respectivamente) sea un lado frontera.Este procedimiento va recorriendo los elementos en sentido antihorario partiendo de aquelcon el índice más bajo hasta llegar al elemento primero.Posteriormente, sabiendo qué elemento es el elemento primero, se van ordenando loselementos restantes en sentido horario tal y como se describió en el caso anterior.

Programas recomendados:• ordene.m, (ver página 238).

96

Page 117: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

El siguiente paso, una vez que se han calculado todos los ΘK,i, es calcular todas las cantidadesµγK,i, es decir, µ en cada elemento K, sobre cada función base vectorial lineal ~φi y sobre cadalado γ. Se define como

µγK,i =∫γ

(σK~nγ) · ~φidγ.

Si uno se fija, estas cantidades ya eran calculadas sobre cada lado γ que fuese de tipoDirichlet en la expresión

∫∂K 〈~q〉 · ~φid(∂K).

Por ello, una práctica recomendable para ahorrar cálculos es calcular primero los µγK,i ydespués

∫∂K 〈~q〉 · ~φid(∂K) para aprovechar operaciones ya realizadas.

Su cálculo no tiene complicación ninguna, pues ya se ha explicado cómo llevarlo a cabomediante la regla de Simpson, recordando,

µγK,i =∫γ

(σK(sγ)~nγ) · ~φi(sγ)dγ ≈

≈ ‖γ‖(1

6 (σK(0)~nγ) · ~φi(0) + 23

(σK

(‖γ‖2

)~nγ

)· ~φi

(‖γ‖2

)+ 1

6 (σK (‖γ‖)~nγ) · ~φi (‖γ‖)).

Con todos los elementos obtenidos hasta ahora, es posible calcular µγK,i según el tipo de ladoque se trate,

µγK,i =

12(ΘK,i + µγK,i −

(ΘK′,j + µγK′,j

))en ∂K ∩ ∂K ′,∫

γ~q · ~φidγ en ∂K ∩ ΓN ,

ΘK,i + µγK,i en ∂K ∩ ΓD.

Donde el subíndice j indica que las cantidades ΘK′,j y µγK′,j deben ser aquellas cuya funciónbase vectorial lineal asociada ~φj sea la que vale 1 en la misma componente y mismo nodo en elelemento K ′ que ~φi en K.

Por otro lado, el cálculo de∫γ ~q · ~φidγ para lados Neumman se realiza mediante la regla de

Simpson del mismo modo en que se viene calculando este tipo de integrales,

∫γ~q(sγ) · ~φi(sγ)dγ ≈ ‖γ‖

(16~q(0) · ~φi(0) + 2

3~q(‖γ‖2

)· ~φi

(‖γ‖2

)+ 1

6~q(‖γ‖) ·~φi (‖γ‖)

).

Así pues, se tiene, en cada elemento K, µγK,1, µγK,2, µγK,3, µγK,4, µγK,5 y µγK,6, cada unarelativa a una función base vectorial lineal sobre el elemento.

Para calcular los flujos ~gK,γ, es preciso definir dos funciones:

97

Page 118: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

ψγl : γ ⊂ R → R Se trata de una función definida en cada lado γ, y dependiente de lacoordenada sγ según ψγl (sγ) = 4− 6 sγ

‖γ‖ .

ψγr : γ ⊂ R → R Se trata de una función definida en cada lado γ, y dependiente de lacoordenada sγ según ψγr (sγ) = −2 + 6 sγ

‖γ‖ .

4

2-

ψrγ

ψlγ

||γ||0

Figura 34: ψγl (azul) y ψγr (rojo) en función de la coordenada sγ.

Así, se calculan los flujos ~gK,γ mediante

~gK,γ =µγK,l1ψγl + µγK,r1ψ

γr

µγK,l2ψγl + µγK,r2ψ

γr

.Siendo l1 el índice de la función base vectorial lineal φi cuya primera componente vale 1

en el primer vértice del lado γ, l2 el índice de la función base vectorial lineal φi cuya segundacomponente vale 1 en el primer vértice del lado γ, r2 el índice de la función base vectorial linealφi cuya primera componente vale 1 en el segundo vértice del lado γ y r2 el índice de la funciónbase vectorial lineal φi cuya segunda componente vale 1 en el segundo vértice del lado γ.

Es aquí donde puede verse el carácter lineal de cada componente del flujo ~gK,γ a lo largodel lado γ, ya que se tratan de combinaciones lineales de funciones lineales (ψγl y ψγr ).

Una vez que se encuentran calculados los flujos ~gK,γ, es hora de ejecutar las comprobacionespertinentes para asegurarse de que dichos flujos están bien calculados y cumplen todas laspropiedades exigidas.

98

Page 119: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

La primera de estas comprobaciones consiste en verificar que, efectivamente,

~gK,γ + ~gK′,γ = ~0 si γ = ∂K ∩ ∂K ′, K,K ′ ∈ P .

Para ello, (expresando ~gK,γ como función de sγ) se toman todos los lados compartidos y secalcula, para cada uno de ellos:

v(1)γ = |~gK,γ(0) · [1 0]t + ~gK′,γ (‖γ‖) · [1 0]t|+ |~gK,γ(0) · [0 1]t + ~gK′,γ (‖γ‖) · [0 1]t|+

+|~gK,γ(‖γ‖

2

)· [1 0]t + ~gK′,γ

(‖γ‖2

)· [1 0]t|+ |~gK,γ

(‖γ‖2

)· [0 1]t + ~gK′,γ

(‖γ‖2

)· [0 1]t|+

+|~gK,γ (‖γ‖) · [1 0]t + ~gK′,γ(0) · [1 0]t|+ |~gK,γ (‖γ‖) · [0 1]t + ~gK′,γ(0) · [0 1]t|.

La razón por la que en cada sumando los flujos ~gK,γ y ~gK′,γ están evaluados en coordenadas sγopuestas responde al hecho de que el vértice inicial del lado γ del elemento K es el vértice finaldel lado γ del elemento K ′ y viceversa (estando ambos recorridos en sentido antihorario).

Posteriormente, se toman todos los v(1)γ (nótese que v(1)

γ ≥ 0 por ser suma de términos nonegativos) y se suman. Si la suma es distinta de 0 (o un término del orden de la unidad deredondeo), el algoritmo para el cálculo de los flujos ~gK,γ está mal implementado.

Por otro lado, se puede realizar otra prueba para verificar que∫K

~PK(~f)· ~pldK −

∫Kσ (~uX) : ε (~pl) dK +

∑γ∈K

∫γ~gK,γ · ~plds = 0 ∀~pl ∈ P1(K)× P1(K).

Para ello, se establecen 3 matrices: T (1), T (2) y T (3), de dimensiones 6× nT .

T (1) posee, en la componente (i-ésima, K-ésima) el valor aproximado de∫K~PK

(~f)· ~φidK

24 calculado mediante la fórmula de cubatura de nodos y pesos especificados en la tabla 4(página 53). El valor en los nodos de cubatura de la proyección ~PK

(~f), puede calcularse

mediante el procedimiento para obtener su valor en cualquier punto descrito en la sección3.2.1.

T (2) posee, en la componente (i-ésima, K-ésima) el valor aproximado de −∫K σ (~uX) :

ε(~φi)dK calculado mediante la fórmula de cubatura de nodos y pesos especificados en

la tabla 4 (página 53). Tanto σ (~uX) como ε(~φi)se calculan según se vio en la sección

3.2.3.

T (3) posee, en la componente (i-ésima, K-ésima) el valor de ∑γ∈K∫γ ~gK,γ · ~φids, siendo

cada sumando calculado mediante la regla de Simpson. La variación lineal de todas lascomponentes de ~gK,γ y la variación también lineal de todas las componentes de ~φi a lolargo de cada lado γ del elemento K, (que conlleva una variación a lo sumo cuadráticadel integrando a lo largo de cada lado γ) permiten aproximar de forma exacta dichasintegrales.

24Nótese que ~φi debe ser la función base vectorial lineal i-ésima.

99

Page 120: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Una vez que se encuentran calculadas todas las componentes de las tres matrices T (1), T (2)

y T (3), se calcula

v(2)γ =

6∑i=1

nT∑K=1|t(1)i,K + t

(2)i,K + t

(3)i,K |.

De nuevo, si v(2)γ es distinto de 0 (o un término del orden de la unidad de redondeo), el

algoritmo para el cálculo de los flujos ~gK,γ está mal implementado.

Programas recomendados:• flujos.m, (ver página 201).• misd.m, (ver página 232).• comparti.m, (ver página 168).• prodfunbaslin_tri.m, (ver página 248).

3.2.4. Obtención de Φ(1)K a través de los flujos ~gK,γ.

Obtenidos los flujos ~gK,γ, el siguiente paso es hallar los residuos de contorno ~Rγ,K . Para ello,se calcula

~Rγ,K = ~gK,γ − σK~nKγ .

La obtención del tensor de tensiones en un cierto punto del elemento K con respecto alelemento K ya se trató en la sección 3.2.3.

Cabe destacar que la variación del tensor de tensiones a lo largo del lado γ es lineal (debidoal uso de funciones cuadráticas para aproximar los desplazamientos), por lo que esto, unido a lalinealidad de los flujos (ya vista anteriormente), hace que los residuos de contorno sean linealesen los lados y no sea estrictamente necesario calcular su valor en el punto medio de cada lado(información redundante).

Sin embargo, es aconsejable hacerlo, ya que en cálculos posteriores aparecen integrales delado sobre los residuos de contorno multiplicados por las funciones base, lo que hace convenienteusar la fórmula de Simpson para calcularlas de forma exacta.

Con los residuos de contorno ya calculados, se puede dar paso al cálculo de los vectores~S1,K , ~S2,K y ~S3,K . Estos vectores se definen sobre cada uno de los lados de cada triángulo de lasiguiente manera:

100

Page 121: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

~S1,K =

∫γ1~Rγ1,K · ‖γ1‖~n1ds∫

γ1~Rγ1,K · (‖γ3‖~n3 − ‖γ2‖~n2) ds∫

γ1~Rγ1,K · ‖γ1‖~n1 (φ2 − φ1) ds∫

γ1~Rγ1,K · (‖γ3‖~n3 − ‖γ2‖~n2) (φ2 − φ1) ds

m1,K

,

~S2,K =

∫γ2~Rγ2,K · ‖γ2‖~n2ds∫

γ2~Rγ2,K · (‖γ1‖~n1 − ‖γ3‖~n3) ds∫

γ2~Rγ2,K · ‖γ2‖~n2 (φ3 − φ2) ds∫

γ2~Rγ2,K · (‖γ1‖~n1 − ‖γ3‖~n3) (φ3 − φ2) ds

m2,K

,

~S3,K =

∫γ3~Rγ3,K · ‖γ3‖~n3ds∫

γ3~Rγ3,K · (‖γ2‖~n2 − ‖γ1‖~n1) ds∫

γ3~Rγ3,K · ‖γ3‖~n3 (φ1 − φ3) ds∫

γ3~Rγ3,K · (‖γ2‖~n2 − ‖γ1‖~n1) (φ2 − φ3) ds

m3,K

,

donde φ1, φ2 y φ3 son las funciones base lineales escalares.

En la obra [1] se definen los vectores ~S1,K , ~S2,K y ~S3,K en función de coordenadasbaricéntricas. Aquí se ha preferido usar las funciones base, ya que los resultados son idénticosy permite usar elementos ya definidos, pudiendo así obviar la subsecuente presentación yexplicación de las coordenadas baricéntricas.

En su definición encontramos varios aspectos importantes que destacar:

En primer lugar, la aparición de integrales de linea, que han de efectuarse mediante la reglade Simpson para calcularlas de forma exacta, ya que la variación de los argumentos es (alo sumo) cuadrática (los residuos de contorno son lineales y las funciones base también,ergo, su producto da lugar a funciones cuadráticas).

Los vectores normales que aquí aparecen son unitarios, pero en la obra [1], (tras unaredefinición de las variables), tienen como módulo el valor del lado. Esta es la razón dela aparición aquí de la longitud de los lados como coeficientes de los vectores normalesunitarios.

La notación de la obra de referencia es distinta a la empleada hasta ahora en cuanto a lanumeración de los vértices. Aún así, se presentan aquí las ecuaciones ya adaptadas a lanotación habitual en este documento.

101

Page 122: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Las últimas componentes de ~S1,K , ~S2,K y ~S3,K (esto es, m1,K , m2,K y m3,K) pueden tomarcualquier valor real (mi,K ∈ R) según [1]. El cálculo de los mismos se deja para másadelante, además de ciertas consideraciones adicionales sobre los mismos.

Una vez que se encuentran calculadas las 4 primeras componentes de cada vector ~S1,K , ~S2,K

y ~S3,K , es necesario obtener las matrices τKij , i = 1, 2, 3, j = 1, 2, 3 en cada uno de los elementosde la partición, definidas como

τKij = ‖γi‖‖γj‖2

(~tKi(~tKj)t

+ ~tKj(~tKi)t)

.

Donde el vector ~tKq es el vector tangente unitario en sentido antihorario al lado q-ésimo delelemento K-ésimo.

Una vez calculadas, es necesario obtener también las matrices E−1τij, donde E−1 es eloperador matricial que actúa sobre matrices W de dimensiones 2× 2 tal que

E−1W = 12µ

(W − λ

2 (λ+ µ)tr(W )I),

donde, en este caso25, µ = E2(1+ν) , λ = Eν

(1+ν)(1−2ν) , tr(W ) es la traza de la matriz W (dedimensiones n × n) definida como tr(W ) = ∑n

i=1wii e I es la matriz identidad de orden 2,

I =1 0

0 1

.Como el lector puede apreciar, el operador E−1W no es más que aplicarle a la matriz W la

ecuación de comportamiento del problema de deformación plana (para obtener deformacionesen función de las tensiones).

Así pues, quedaría,

E−1τKij = 12µ

(τKij −

λ

2 (λ+ µ)tr(τKij )I

).

Una vez calculados ambos conjuntos de matrices (E−1τKij y τKij ), se procede a obtener lascantidades BK

11,11, BK22,22, BK

33,33, BK11,22, BK

22,33, BK33,11, BK

11,12, BK22,23, BK

33,31, BK22,12, BK

33,23, BK11,31,

BK12,12, BK

23,23 y BK31,31, definidas como

BKij,kl =

(E−1τKij

): τKij

‖K‖3 .

25No confundir esta µ con los µγK,i o µγK,i relativos al cálculo de los flujos.

102

Page 123: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Donde ‖K‖ es el área del elemento K-ésimo.

Programas recomendados:• fB.m, (ver página 192).

Es turno ahora de calcular, para cada triángulo, sus matrices asociadas EK11, EK

22, EK33, EK

12,EK

23 y EK31 mediante:

EK11 = 1

155520(Q1B

K22,22 +Q2B

K22,33 +Q3B

K22,23 +Q4B

K33,33 +Q5B

K33,23 +Q6B

K23,23

),

EK22 = 1

155520(Q1B

K33,33 +Q2B

K33,11 +Q3B

K33,31 +Q4B

K11,11 +Q5B

K11,31 +Q6B

K31,31

),

EK33 = 1

155520(Q1B

K11,11 +Q2B

K11,22 +Q3B

K11,12 +Q4B

K22,22 +Q5B

K22,12 +Q6B

K12,12

),

EK12 = 1

155520(Q7B

K11,11 +Q8B

K11,22 +Q9B

K11,12 +Q10B

K22,22 +Q11B

K22,12 +Q12B

K12,12

),

EK23 = 1

155520(Q7B

K22,22 +Q8B

K22,33 +Q9B

K22,23 +Q10B

K33,33 +Q11B

K33,23 +Q12B

K23,23

),

EK31 = 1

155520(Q7B

K33,33 +Q8B

K33,11 +Q9B

K33,31 +Q10B

K11,11 +Q11B

K11,31 +Q12B

K31,31

).

Donde las matrices Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11 y Q12 son:

Q1 =

504 135 891 1026 60135 1458 1944 2835 −228891 1944 5346 3159 −684

1026 2835 3159 8424 18060 −228 −684 180 704

, Q2 =

468 0 0 1404 240

0 −324 972 0 00 972 1944 0 0

1404 0 0 11016 1296240 0 0 1296 1024

,

Q3 =

900 1080 324 5616 624

1080 1404 3240 4212 −240324 3240 6804 3888 −1008

5616 4212 3888 25596 2160624 −240 −1008 2160 2176

, Q4 =

504 −135 −891 1026 60−135 1458 1944 −2835 228−891 1944 5346 −3159 6841026 −2835 −3159 8424 180

60 228 684 180 704

,

Q5 =

900 −1080 −324 5616 624

−1080 1404 3240 −4212 240−324 3240 6804 −3888 10085616 −4212 −3888 25596 2160624 240 1008 2160 2176

, Q6 =

2880 0 0 8640 768

0 1296 3888 0 00 3888 11664 0 0

8640 0 0 25920 2304768 0 0 2304 2048

,

103

Page 124: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Q7 =

−306 63 −297 −432 60−306 −927 −1323 −432 60

54 −837 −81 −1296 18054 2133 2997 −1296 180

−192 96 288 −576 32

, Q8 =

−342 −900 −3672 918 −120

900 −990 −1998 −1188 1683672 −1998 −5994 −648 216918 1188 648 1782 −72−120 −168 −216 −72 64

,

Q9 =

−720 −1008 −3996 756 −96−180 −2988 −6048 −1512 1922376 −4104 −6480 −2592 288756 1836 −324 4212 −576−240 −240 −144 −720 256

, Q10 =

−306 306 −54 54 −192−63 −927 −837 −2133 −96297 −1323 −81 −2997 −288−432 432 1296 −1296 −576

60 −60 −180 180 32

,

Q11 =

−720 180 −2376 756 −2401008 −2988 −4104 −1836 2403996 −6048 −6480 324 144756 1512 2592 4212 −720−96 −192 −288 −576 256

y Q12 =

−684 144 −1512 −108 48−144 −1980 −3996 −2376 3361512 −3996 −4212 −3240 432−108 2376 3240 3564 −432

48 −336 −432 −432 128

.

Supongamos que se han computado ya las matrices EK11, EK

22, EK33, EK

12, EK23 y EK

31. Es horade adentrarse en el cálculo de la quinta componente de S1,K , S2,K , S3,K que faltaba por obtener.

En principio, mi,K puede tomar cualquier valor real y, según [1], fueran cuales fueran estosvalores, el algoritmo permitiría seguir obteniendo cotas superiores de la norma de la energía delos errores en desplazamiento.

Así pues, se proponen dos maneras de operar. La primera y más sencilla es tomardirectamente m1,K = m2,K = m3,K = 0 en todos los elementos. La segunda de ellas permitereducir la cota superior al mínimo, es decir, obtener conjunto de mi,K óptimo. Para ello, esnecesario resolver el siguiente sistema de ecuaciones lineales mediante eliminación gaussiana:

EK11(5, 5) EK12(5, 5) EK31(5, 5)EK12(5, 5) EK22(5, 5) EK23(5, 5)EK31(5, 5) EK23(5, 5) EK33(5, 5)

︸ ︷︷ ︸

3×3

m1,K

m2,K

m3,K

︸ ︷︷ ︸

3×1

= −

EK11(5, 1 : 4) EK12(5, 1 : 4)[EK31]t

(5, 1 : 4)[EK12]t

(5, 1 : 4) EK22(5, 1 : 4) EK23(5, 1 : 4)EK31(5, 1 : 4)

[EK23]t

(5, 1 : 4) EK33(5, 1 : 4)

︸ ︷︷ ︸

3×12

~S1,K(1 : 4)~S2,K(1 : 4)~S3,K(1 : 4)

︸ ︷︷ ︸

12×1︸ ︷︷ ︸3×1

,

donde A(5, 5) representa la componente (5, 5) de la matriz A y A(5, 1 : 4) representa las cuatroprimeras componentes de la quinta fila de la matriz A.

Por tanto, independientemente del criterio escogido, para cada triángulo se estaría endisposición de poder calcular todas las componentes de los vectores S1,K , S2,K y S3,K y elconjunto de matrices EK

11, EK22, EK

33, EK12, EK

23 y EK31.

104

Page 125: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Finalmente, se concluye el cálculo del término Φ(1)K , obteniéndolo, en cada triángulo, de la

siguiente manera,

Φ(1)K =

√~St1,KE11 ~S1,K + ~St2,KE22 ~S2,K + ~St3,KE33 ~S3,K + 2

(~St1,KE12 ~S2,K + ~S2,K1tE23 ~S3,K + ~St3,KE

K31~S1,K

).

Cabe destacar, llegados a este punto, que en la obra [1], consta la siguiente expresión:(∫K

E−1σK : σKdK

)1/2

=

√~St

1,KE11~S1,K + ~St

2,KE22~S2,K + ~St

3,KE33~S3,K + 2

(~St

1,KE12~S2,K + ~S2,K1tE23~S3,K + ~St

3,KEK

31~S1,K

).

Si uno se fija, no parece del todo correcta, ya que el miembro de la izquierda es una cantidadfija y el de la derecha es una cantidad variable según los mi,K escogidos26 en los vectores ~S1,K ,~S2,K y ~S3,K .

Parece, por tanto, más sensato escribir(∫KE−1σK : σKdK

)1/2≤[(∫

KE−1σK : σKdK

)1/2]s

(mi,K) = Φ(1)K .

Así pues, sea cual sea la opción escogida sobre los mi,K , se estaría en disposición de calcularuna cota de (

∫K E−1σK : σKdK)1/2, es decir,

[(∫K E−1σK : σKdK)1/2]

s(mi,K).

3.3. Cálculo del término Φ(2)K .

El término Φ(2)K se define como Φ(2)

K = CKosc(~f,K), donde CK será definido en la sección3.3.1 y osc(~f,K) es la oscilación sobre el elemento K de las fuerzas por unidad de volumen(definida también más adelante en la sección 3.3.2).

Este término está relacionado con la variación que sufren las fuerzas por unidad de volumenen el dominio. Su valor, para un elemento K, es no nulo únicamente si la variación de las fuerzaspor unidad de volumen es no lineal (ya que en ese caso osc(~f,K) = 0 como se verá más adelantecuando se defina osc(~f,K)).

Es difícil en la práctica encontrar variaciones en las fuerzas por unidad de volumen nolineales. De hecho, la fuerza por unidad de volumen por autonomasia es la fuerza peso (y estapuede tomarse constante en la casi totalidad de las situaciones). Sin embargo, este términose va a dejar descrito y programado por si resultase de interés académico en la resolución deciertos problemas.

Así pues, se procede a explicar cómo se realiza el cálculo de este término. Para ello, esnecesario hallar las cantidades CK y osc(~f,K) por separado en cada triángulo.

26Si bien, en principio los mi,K podían ser cualquier conjunto de números reales, se proponía tomar mi,K = 0o tomar mi,K resolviendo el sistema que permitía obtener la cota más baja de la norma de energía del error endesplazamientos.

105

Page 126: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

3.3.1. Cálculo de CK.

Para cada triángulo, se define CK como

CK =(

1µπ2

(1 + max

γ∈EK

((1 + ρ2

γ,K

)1/2+ ργ,K

)2))1/2

,

donde ργ,K = max~r∈γ

|~tKγ ·(~r−~rC,K)||~nKγ ·(~r−~rC,K)| , siendo ~rC,K

27 las coordenadas del centroide de cada triánguloK.

Según la definición anterior, ργ,K es el máximo de una función continua en el lado γ deltriángulo K. Se procede a discutir dónde se da dicho máximo.

En primer lugar, el valor de ργ,K es el máximo de un cociente de dos valores absolutos, porlo que, si se demuestra que en cierto punto (o ciertos puntos) del lado, el numerador poseeun máximo y el numerador un mínimo, podremos asegurar que se trata de un máximo de lafunción (o de un candidato a ser máximo de la función) y, en ese punto (o para uno de esospuntos) ~r∗, se verificará

ργ′,K =|~tKγ · (~r∗ − ~rC,K) ||~nKγ · (~r∗ − ~rC,K) | .

x

yrC,K

r

r-rC,K

nγK

tγK

γ

K

Figura 35: Vectores ~tKγ , ~nKγ , ~r, ~rC,K en un lado γ de un elemento K.

En primer lugar, estudiemos el numerador de la definición de ργ,K .27Denotado en [1] como ~xK .

106

Page 127: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

‖~tKγ · (~r − ~rC,K) ‖ es el módulo del producto escalar de los vectores ~tKγ y ~r − ~rC,K . Resulta,que, dado que el vector tangente unitario ~tKγ es constante a lo largo de todo el lado, en cualquierpunto del mismo, la componente perpendicular a este vector no contribuirá al producto escalar.Por lo tanto, sólo importa el valor absoluto de la componente de ~r−~rC,K que es paralela al vectortangente unitario ~tKγ . Así pues, dado que el valor absoluto del producto escalar crecerá a medidaque nos acerquemos a los extremos, podemos asegurar que el máximo de ‖~tKγ · (~r − ~rC,K) ‖ seencontrará en uno de los dos extremos del lado.

Por otro lado, estudiemos el denominador de ργ′,K . En primer lugar, llamemos ~ra,γ y ~rb,γ alos extremos inicial y final respectivamente del lado γ del triángulo K. En segundo lugar, ellado γ del triángulo K está en la recta de ecuación ~nKγ · (~r − ~ra,γ), por lo que en cada punto dellado γ del triángulo K se verifica ~nKγ ·~r = ~nKγ ·~ra,γ. Así pues, ~nKγ · (~r − ~rC,K) = ~nKγ · (~ra − ~rC,K),siendo el término derecho de la igualdad una constante. Por tanto, ~nKγ · (~r − ~rC,K) se trata deuna constante.

Se concluye que el máximo de ‖~tKγ ·(~x−~xK)‖|~nKγ ·(~r−~rC,K)‖ se halla en los extremos del lado, por lo que

ργ,K = max ‖~tKγ · (~ra − ~rC,K) ‖‖~nKγ · (~ra − ~rC,K) ‖ ,

‖~tKγ · (~rb − ~rC,K) ‖‖~nKγ · (~rb − ~rC,K) ‖

.Ahora, una vez que se sabe cómo calcular los elementos ργ′,K , es hora de analizar CK . Cabe

recordar que se trata de una cantidad definida en cada triángulo y en la que, cómo se puedecomprobar en su definición,

CK =(

1µπ2

(1 + max

γ∈EK

((1 + ρ2

γ′,K

)1/2+ ργ′,K

)2))1/2

,

aparece el máximo de una función de ργ,K . Definamos la función F (ργ,K) : γ ⊂ R →

R, F (ργ′,K) =((

1 + ρ2γ,K

)1/2+ ργ,K

)2. Como se puede comprobar la función F (ργ,K), es

estrictamente creciente para ργ,K ≥ 0 (recordemos que siempre se da ργ,K ≥ 0 ya que estádefinida como el cociente de dos números mayores que cero).

Por tanto, para hallar CK en cada triángulo, se calcula el valor de |~tKγ ·(~x−~xK)||~nKγ ·(~x−~xK)| en cada uno

de los tres lados y para cada uno de los dos extremos del mismo (en total, seis cantidades portriángulo) y se toma la mayor de ellas. Llamemos ρ∗γ,K , al mayor de estos seis valores, entonces,en cada triángulo,

CK = 1µπ2

1 +((

1 +(ρ∗γ,K

)2)1/2

+ ρ∗γ,K

)21/2

.

107

Page 128: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

3.3.2. Cálculo del término osc(~f,K).

El término osc(~f,K) se define como

osc(~f,K) = hK‖~f − ~PK(~f)‖~L2(K) = hK

(∫K‖~f − ~PK

(~f)‖2dK

)1/2,

donde hK es la longitud del lado del elemento K con mayor longitud.

El cálculo de ~PK(~f)en cualquier punto de un elemento K quedó explicado en la sección

3.2.1. La integral anterior se puede calcular mediante la fórmula de cubatura de nodos y pesosrecogidos en la tabla 4 (página 53) (haciendo el cambio al triángulo de referencia mediante latransformación afín descrita en la sección 2.2.2). Así pues, el cálculo de la expresión anterior serealiza como

hK

(∫K

‖~f − ~PK

(~f)‖2dK

)1/2= hK

(J

∫K0

‖~f(x(ξ, η), y(ξ, η))− ~PK

(~f(x(ξ, η), y(ξ, η))

)‖2dK0

)1/2≈

≈ hK

J 7∑j=1

wj‖~f(x(ξj , ηj), y(ξj , ηj))− ~PK

(~f(x(ξj , ηj), y(ξj , ηj))

)‖2

1/2

.

En el caso de que ~f sea un campo vectorial lineal, ~f − ~PK(~f)

= ~0, (siendo, en general,~0 = [0, 0..., 0]t y en este caso concreto ~0 = [0, 0]t), ya que las proyecciones están hechas sobrelas funciones base lineales.

Así pues, en cada elemento se computa CKosc(~f,K) para hallar el segundo término delalgoritmo.

3.4. Cálculo del término Φ(3)K .

El término Φ(3)K se define como Φ(3)

K = ∑γN∈K C

Kγ osc

(g(t), g(n)

, γ), donde γN ∈ K son

los lados de tipo Neumman presentes en el elemento K, CKγ será definido en la sección 3.4.1 y

osc(g(t), g(n)

, γ)es la oscilación sobre el lado Neumman γ de las cargas aplicadas (definida

también más adelante en la sección 3.4.2).

De modo similar al caso anterior, el término CKγ osc

(g(t), g(n), γ

)será no nulo únicamente

en aquellos lados Neumman en los que la variación de las cargas externas sea no lineal.

Debido a que se hizo la hipótesis de que la variación de las cargas aplicadas sería a lo sumocuadrática sobre los lados frontera de la partición, se va a describir y programar la obtenciónde este término.

Para ello, de forma similar a cómo se procedió en la sección 3.3, es necesario hallar lascantidades CK

γ y osc(g(t), g(n), γ

)por separado en cada lado Neumman de cada elemento K.

108

Page 129: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

3.4.1. Cálculo de CKγ .

Para cada lado Neumman γ perteneciente a un elemento K, se define CKγ como

CKγ =

(hK

µ‖K‖π

(hKπ

+ maxγ′∈EK :γ′ 6=γ

‖γ′‖)(

1 + maxγ′∈EK

((1 + ρ2

γ′,K

)1/2+ ργ′,K

)2))1/2

,

donde hK y ργ′,K quedaron definidos en la sección 3.3.1. De nuevo aparece la función F (ργ′,K) =((1 + ρ2

γ′,K

)1/2+ ργ′,K

)2, que es estrictamente creciente para ργ′,K > 0. Con todo, CK

γ secalcularía mediante

CKγ =

hKµ‖K‖π

(hKπ

+ ‖γ′′‖)1 +

((1 +

(ρ∗γ′,K

)2)1/2

+ ρ∗γ′,K

)21/2

.

Donde ρ∗γ′,K ya fue descrito en la sección 3.3.1 y ‖γ′′‖ = maxγ′∈EK :γ′ 6=γ

(‖γ′‖), es decir, para unlado Neumman γ perteneciente a un elemento K, ‖γ′′‖ es la longitud del lado de mayor longitudde los otros dos lados del elemento.

3.4.2. Cálculo de osc(g(t), g(n), γ

).

El término osc(g(t), g(n), γ

)28 se define como

osc(g(t), g(n), γ

)=√‖γ‖

(‖g(t) − Pγ(g(t))‖2

L2 + ‖g(n) − Pγ(g(n))‖2L2

)1/2

=√‖γ‖

(∫γ

(g(t) − Pγ

(g(t)

))2dγ +

∫γ

(g(n) − Pγ

(g(n)

))2dγ)1/2

.

El cálculo de Pγ(g(t)

)y Pγ

(g(n)

)en cualquier punto del lado γ quedó explicado en la

sección 3.2.2. Las integrales∫γ

(g(t) − Pγ

(g(t)

))2dγ y

∫γ

(g(n) − Pγ

(g(n)

))2dγ se puede calcular

mediante la regla de Simpson. Así pues, haciendo uso de la estructura de datos C(2)n

29,∫γ

(g(t) − Pγ

(g(t)(sγ)

))2dγ = ‖γ‖

(16

(c(2)1,1,γ − Pγ

(g(t)(0)

))2+

23

(c(2)1,2,γ − Pγ

(g(t)(γ

2

)))2+

16

(c(2)1,3,γ − Pγ

(g(t) (‖γ‖)

))2),∫

γ

(g(n) − Pγ

(g(n)(sγ)

))2dγ = ‖γ‖

(16

(c(2)2,1,γ − Pγ

(g(n)(0)

))2+

23

(c(2)2,2,γ − Pγ

(g(n)

2

)))2+

16

(c(2)2,3,γ − Pγ

(g(n) (‖γ‖)

))2).

28Esta definición es válida sólo para lados Neumman puros (sin condiciones mixtas).29La definición de C(2)

n puede consultarse en la sección 2.3.2.

109

Page 130: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

En el caso de que g(t) o g(n) sean campos escalares lineales sobre el lado γ entonces,g(t) − Pγ

(g(t)(sγ)

)= 0 o g(n) − Pγ

(g(n)(sγ)

)= 0 respectivamente, ya que las proyecciones

Pγ(g(t)

)y Pγ

(g(n)

)están hechas sobre las funciones base lineales.

Así pues, se calcula para cada lado Neumman γ perteneciente a un elemento K,CKγ osc

(g(t), g(n), γ

)para hallar el tercer término del algoritmo,

Φ(3)K =

∑γN∈K

CKγ osc

(g(t), g(n)

, γ).

Es decir, para cada elemento K que posea al menos un lado Neumman, se suman losrespectivos CK

γ osc(g(t), g(n), γ

)de dichos lados Neumman al término Φ(3)

K .

3.5. Cálculo del término Ψ(1)K .

El término Ψ(1)K se define como Ψ(1)

K = ∑γD∈K osc

(q(t), q(n)

, γ), donde γD ∈ K son los

lados de tipo Dirichlet presentes en el elemento K y osc(q(t), q(n)

, γ)es la oscilación sobre

el lado Dirichlet γ de los desplazamientos impuestos (definida más adelante).

De entrada, es conveniente señalar que el término osc(q(t), q(n), γ

)es nulo, bajo la

hipótesis de que la variación de desplazamientos prescritos en cada lado Dirichlet es, a losumo, cuadrática sobre cada lado frontera de la partición. Analicemos por qué.

En primer lugar, se define30

osc(q(t), q(n), γ

)=∣∣∣∣∣∣∣∣∣Eγ,K (q(t) − ~tγ · ~qI

)~tγ + Eγ,K

(q(n) − ~nγ · ~qI

)~nγ∣∣∣∣∣∣∣∣∣K,

donde:

Como se definió en la sección 3.1,

|||~a|||ω =(∫

ωσ (~a) : ε (~a) dΩ′

) 12.

Eγ,K es cualquier función Eγ,K(v) ∈ H1(K) que:

Eγ,K(v) =

v en γ,0 en ∂K\γ.

30Esta definición es para lados Dirichlet puros, pero el mismo razonamiento puede seguirse para lados concondiciones mixtas.

110

Page 131: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

~qI : γ ⊂ R → R2, ~qI,γ ∈ P2(γ) × P2(γ), definida como la función vectorial cuadráticasobre cada lado Dirichlet que verifica:

~tγ · ~qI(~rz) = q(t)(~rz),~nγ · ~qI(~rz) = q(n)(~rz),

donde ~rz son los vectores posición de los tres nodos situados en los vértices y punto mediodel lado Dirichlet γ.

Este último término ~qI es el que nos permite asegurar que, en nuestro caso, siempre se cumpliráque osc

(q(t), q(n), γ

)= 0.

En primer lugar, debido a que, en nuestro caso, las variaciones de los desplazamientos son,a lo sumo cuadráticas sobre cada lado frontera de la partición y las componentes de ~qI tambiénson cuadráticas sobre cada lado frontera de la partición, se cumplirá siempre que:

~tγ · ~qI = q(t) ∀~r ∈ γ,

~nγ · ~qI = q(n) ∀~r ∈ γ.

Por tanto,

osc(q(t), q(n), γ

)=

∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣Eγ,K

q(t) − ~tγ · ~qI︸ ︷︷ ︸=0

~tγ + Eγ,K

q(n) − ~nγ · ~qI︸ ︷︷ ︸=0

~nγ∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣K

.

Lo que conduce a que, en nuestro caso, se cumple siempre que Eγ,K(0) = 0. Entonces,

osc(q(t), q(n), γ

)=∣∣∣∣∣∣∣∣∣0~tγ + 0~nγ

∣∣∣∣∣∣∣∣∣K

=∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣0

0

∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣K

.

Evidentemente, la norma de la energía de un campo de desplazamientos nulo, es nula,

∣∣∣∣∣∣∣∣∣0~tγ + 0~nγ∣∣∣∣∣∣∣∣∣K

=∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣0

0

∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣K

=∫

00

: ε0

0

dK

12

= 0.

Por lo tanto, para variaciones a lo sumo cuadráticas de desplazamientos prescritos en ladosDirichlet se tiene que

osc(q(t), q(n), γ

)= 0.

111

Page 132: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

3.6. Cálculo del término Ψ(2)K .

El término Ψ(2)K

31 puede ser no nulo únicamente para problemas resueltos medianteaproximaciones no conformes. Debido a que sólo se han tratado aproximaciones conformesa lo largo de este Proyecto, se toma

Ψ(2)K = 0.

3.7. Cómputo de todos los términos para el cálculo de la cota dela norma de la energía del error en desplazamientos sobre cadaelemento.

Una vez que se han computado todos los términos por separado se calcula, para cadaelemento K,

|||~es|||K =√

Φ2K + Ψ2

K ,

donde,

ΦK =[(∫

KE−1σK : σKdK

)1/2]s

(mi,K) + CKosc(~f,K

)+

∑γN∈K

CKγ osc

(g(t), g(n)

, γ)

ΨK =∑γD∈K

osc(q(t), q(n)

, γ)

+ Ψ(2)K .

En nuestro caso,

ΨK =∑γD∈K

osc(q(t), q(n)

, γ)

︸ ︷︷ ︸=0

+ Ψ(2)K︸︷︷︸

=0

= 0,

por lo que,

|||~es|||K =[(∫

KE−1σK : σKdK

)1/2]s

(mi,K) + CKosc(~f,K

)+

∑γN∈K

CKγ osc

(g(t), g(n)

, γ).

Finalmente, para obtener la cota |||~es|||Ω′ simplemente se hace el siguiente sumatorio:

|||~es|||Ω′ =nT∑K=1|||~es|||K

31Definido en [1] como Ψ(2)K = |||S (uX)− uX |||K

112

Page 133: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Una vez ejecutado el algoritmo de Ainsworth-Rankin sobre un problema de deformaciónplana, es aconsejable asegurarse de que |||~es|||K ≥ 0 y que Im(|||~es|||K) = 0 ∀K para verificarque el algoritmo está bien implementado (evidentemente se trata de una condición necesariapero no suficiente).

Programas recomendados:• ar.m, (ver página 145).• prodfunbaslin_lad.m, (ver página 246).

113

Page 134: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

4. Refinamiento del mallado.

El refinamiento de una malla de elementos finitos consiste en crear una segunda mallacon mayor número de elementos y nodos que la primera32. El objetivo del método para elegirqué elementos de la malla son subdivididos reside en lograr una convergencia más rápida a lasolución real subdividiendo el menor número posible de estos.

Para refinar la malla del problema se van a tomar como estimadores del error las cotas dela norma de la energía del error del campo de desplazamientos en cada elemento. Se va a haceruso de un criterio, conocido en inglés como “bulk criterion”, usado en [1] y descrito en [6].

Así, se ordenan los elementos K de la partición en orden descendente según el valor de su|||~es|||K asociado, es decir, [K1, K2, ...KnT ] donde el subíndice j indica la posición del elementoK dentro del ordenamiento.

|||~es|||K1≥ |||~es|||K2

...,≥ |||~es|||KnT

Posteriormente se calcula el primer número R para el que

R∑j=1|||~es|||2Kj ≥

12

nT∑j=1|||~es|||2Kj ,

y se marcan para refinar K1, K1... KR.

Así pues, supóngase que quedan marcados los elementos [K1, K2, ...KR]. El proceso pararefinar toda la malla consiste en, primero, subdividir cada uno de esos triángulos en otros4 triángulos congruentes al anterior (refinamiento rojo) y posteriormente, se van realizandorefinamientos de bisectriz de lado mayor (refinamientos verdes) para eliminar todos los nodoscolgantes generados al ejecutar los refinamientos rojos.

1 2 3Figura 36: Refinamiento rojo del triángulo central y posteriores refinamientos verdes paraeliminar los nodos colgantes (representados en azul y naranja).

32Cabe destacar que, al menos en nuestro caso, todos y cada uno de los nodos de la primera malla estántambién presentes en la segunda.

114

Page 135: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

En el ejemplo de la figura 36, al realizar un refinamiento rojo quedan nodos colgantes(representados en azul y naranja) (situación 1). Para eliminarlos, se realiza un refinamientoverde en los triángulos adyacentes (situación 2). Sin embargo, debido a que siguen quedandonodos colgantes, se realiza otro refinamiento verde en el triángulo de la derecha para eliminarlos(situación 3).

4.1. Refinamientos rojos sobre los elementos marcados.

Supongamos que se tiene una lista de los elementos a los que se le va a practicar unrefinamiento rojo, [K1, K2, ...KR]. Se describe el proceso que se sigue con cada uno de lostriángulos a los que se le realiza dicho refinamiento.

1 2

3

56

4

K

1

K

nT+1 nT+2

nT+3

4 2

6 5

3

3 6 1

45

23

1

2 5

4 6

1

23

4

5

6

Figura 37: Refinamiento rojo y numeración de triángulos subsecuentes.

4.1.1. Modificación de z, T e ~i.

En primer lugar, supongamos que se va a realizar un refinamiento rojo sobre el elementoK-ésimo. La numeración de los triángulos y de los nodos dentro de cada triángulo se hará comose indica en la figura 37.

Así, se comienza creando una matriz M , de dimensiones 6 × 4. Con respecto a las tresprimeras filas, la componente (i-ésima, j-ésima) contiene el índice del vértice i-ésimo deltriángulo j-ésimo, (siendo el triángulo 1 el que posee el vértice 1 del triángulo padre (magentaen la figura 37), el triángulo 2 el que posee el vértice 2 del triángulo padre (verde en la figura37), el triángulo 3 el que posee el vértice 3 del triángulo padre (oliva en la figura 37), y eltriángulo 4 el que no posee ningún vértice del triángulo padre (negro en la figura 37).

115

Page 136: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Ahora, para cada triángulo j-ésimo (j = 1, 2, 3, 4), se busca si en la matriz z existe un nodocon las coordenadas iguales a las coordenadas de cada nodo i-ésimo situado en cada puntomedio de cada lado (i = 4, 5, 6). En caso de que no exista, se numera como nz + 1 (siendo nzel número de nodos justo antes de la creación de este último) y se añaden sus coordenadas ala matriz z en la columna (nz + 1)-ésima. Más tarde, se añade el índice del nodo a M , en lacomponente (i-ésima, j-ésima).

Para ampliar la matriz T , se sustituye la columna K-ésima por la cuarta columna de My se anexionan las tres primeras columnas de M al final de la matriz T , de tal manera quelos elementos quedan numerados como se indica en la figura 37, donde nT es el número deelementos de la partición antes de realizar la subdivisión.

Un aspecto importante es saber si los nuevos nodos generados están situados en la fronterao no. Se podría pensar que puede aplicarse el mismo algoritmo que el explicado en la sección2.2.4. Sin embargo, la (previsible) generación de nodos colgantes impide que el algoritmo seaválido33.

Un buen procedimiento es, a medida que se aumenta la matriz z en una columna (por laadición de un nodo a la malla) se aumente a su vez en una componente el vector ~i.

Así, al añadir la columna (nz + 1)-ésima (siendo nz el número de nodos antes de la adicióndel nuevo nodo) a la matriz z, se crea la componente (nz + 1)-ésima del vector ~i.

Para determinar si el nuevo nodo creado está situado en la frontera, hay que tener en cuentaque sólo se están generando nodos situados en puntos medios de cada lado. Por tanto, sólo setrataría de un nodo situado en la frontera si los nodos vértices del lado al que pertenece estánambos situados en la frontera, se trata del lado 1 ó 3 del triángulo nuevo generado y perteneceal triángulo nuevo creado 1, 2 ó 334.

4.1.2. Modificación de N , C(1)n , ~zd y zdes para lados frontera.

En caso de que alguno de los lados del elemento que deba ser subdividido sean frontera, hayque modificar la matriz N y C(1)

n si alguno de los lados es de tipo Neumman y el vector ~zd y lamatriz zdes si alguno de los lados es de tipo Dirichlet.

Para ello, se parte de triángulo original (sin subdividir) y se consulta en el vector ~i si losnodos situados en los puntos medios de los lados del triángulo original estaban situados en lafrontera o no. En caso de que alguno de ellos estuviera en la frontera, sería necesario ampliarla matriz N y C(1)

n o el vector ~zd y la matriz zdes.

Para saber si se trata de un lado Neumman o Dirichlet, se consulta si el índice del nodocentral (que es exterior), está incluído en el vector ~zd. En caso de estarlo habrá que modificar

33Debido a que un nodo situado en el punto medio de un lado podría aparecer en una sola columna de lamatriz T , siendo, en realidad, un nodo interior.

34De acuerdo al convenio adoptado según la figura 37.

116

Page 137: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

el vector ~zd y la matriz zdes y en caso contrario habrá que modificar la matriz N y C(1)n .

Supongamos el caso en el que se está analizando el lado j-ésimo del elemento antes desubdividir, que es de tipo Dirichlet. En este caso, hay que añadirle dos componentes al vector~zd, siendo cada una de ellas el índice de cada uno de los dos nodos creados en ese lado.

Por otro lado, a la matriz zdes se le añaden dos columnas. Cada una de ellas35, son elresultado de interpolar los desplazamientos originales para crear los nuevos. Así supongamosque el nodo nd + 1 está situado entre los nodos na y nb y el nodo nd + 2 entre los nodos nb ync, entonces las columnas nuevas de zdes son:

zdes(1, nd + 1)zdes(2, nd + 1)

=3

8zdes(1, na) + 34zdes(1, nb)−

18zdes(1, nc)

38zdes(2, na) + 3

4zdes(2, nb)−18zdes(2, nc)

,zdes(1, nd + 2)zdes(2, nd + 2)

=−1

8zdes(1, na) + 34zdes(1, nb) + 3

8zdes(1, nc)−1

8zdes(2, na) + 34zdes(2, nb) + 3

8zdes(2, nc)

.Lo que se consigue así es interpolar los desplazamientos para poder seguir reproduciendo la

variación cuadrática de los desplazamientos en los lados frontera de la partición en refinamientossucesivos.

A modo de ejemplo, supongamos que el elemento K-ésimo (izda.) de la figura 37 va a sersubdividido (según refinamiento rojo) y el lado 2 es un lado Dirichlet (son nodos Dirichlet el2, 5 y 3). Así pues, el desplazamiento asignado al nodo nuevo 4 del elemento nT + 2 sería 3

8del desplazamiento del nodo 1 del elemento nT + 2 más 3

4 del desplazamiento del nodo 2 delelemento nT + 2 menos 1

8 del desplazamiento del nodo 1 del elemento nT + 3. Por otra parte,el desplazamiento asignado al nodo nuevo 6 del elemento nT + 3 sería 3

8 del desplazamiento delnodo 1 del elemento nT + 3 más 3

4 del desplazamiento del nodo 2 del elemento nT + 3 menos 18

del desplazamiento del nodo 1 del elemento nT + 2.

En el caso de que el lado j-ésimo fuese de tipo Neumman, sería necesario modificar la matrizN y C(1)

n .

La matriz N se modifica cambiando la columna relativa al lado original j-ésimo de tipoNeumman y añadiéndole una nueva. La razón de esta modificación reside en que un ladoNeumman se subdivide en otros dos, así, es necesario incluir dos nuevas columnas (relativas alos dos lados generados) y eliminar la columna antigua (ya que ese lado ya no existe como talen la nueva partición).

Así, para reemplazar la columna relativa al lado Neumman y generar la nueva, se procedecomo sigue (siendo mij la componente (i-ésima, j-ésima) de la matriz M definida en la sección4.1.1):

35Las columnas (nd + 1)-ésima y (nd + 2)-ésima, siendo 2 × nd las dimensiones de la matriz zdes antes deañadirle las dos columnas.

117

Page 138: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Si el lado j del elemento K (antes de subdividirlo) era el número 1, se cambia la columnarelativa al lado Neumman por el vector [m11,m41,m21]t y se le añade como columna finalel vector [m32,m62,m12]t.

Si el lado j del elemento K (antes de subdividirlo) era el número 2, se cambia la columnarelativa al lado Neumman por el vector [m12,m42,m22]t y se le añade como columna finalel vector [m33,m63,m13]t.

Si el lado j del elemento K (antes de subdividirlo) era el número 3, se cambia la columnarelativa al lado Neumman por el vector [m13,m43,m23]t y se le añade como columna finalel vector [m31,m61,m11]t.

Lo que se consigue así es recopilar uno de los dos lados en la columna de la matriz N relativaal lado Neumman j y el otro en la nueva columna añadida.

La modificación de C(1)n sigue un proceso similar. Recordemos que C(1)

n es una estructura dedatos de tamaño 2× 3× ln y que cada submatriz k-ésima c(1)

nilk36, de dimensiones 2× 3, recoge

en la primera fila las cargas en dirección tangencial al lado Neumman k-ésimo (en sentidoantihorario) en el punto inicial (c(1)

n1,1,k), medio (c(1)

n1,2,k) y final (c(1)

n1,3,k). En la segunda fila se

recogen las cargas en sentido normal al lado Neumman k-ésimo (hacia afuera) en el puntoinicial (c(1)

n2,1,k), medio (c(1)

n2,2,k) y final (c(1)

n2,3,k).

Supongamos que el lado j-ésimo (del elemento antes de subdividirse), es el lado Neummank-ésimo. Entonces, es necesario modificar la submatriz c(1)

nilky crear la submatriz c(1)

nil(ln+1)donde

ln en este caso es el número de submatrices presentes en C(1)n antes de la creación de esta última.

De manera similar a como se transformaba la matriz zdes, se modifica la matriz c(1)nilk

y se creala matriz c(1)

nil,ln+1. Supongamos que c(1)′

nilkes la matriz de dimensiones 2 × 3 antes de modificar,

entonces las nuevas matrices pasan a ser:

c(1)nilk

=c(1)′

n1,1,k38c

(1)′n1,1,k

+ 34c

(1)′n1,2,k

− 18c

(1)′n1,3,k

c(1)′n1,2,k

c(1)′n2,1,k

38c

(1)′n2,1,k

+ 34c

(1)′n2,2,k

− 18c

(1)′n2,3,k

c(1)′n2,2,k

,c(1)nil,ln+1

=c(1)′

n1,2,k−1

8c(1)′n1,1,k

+ 34c

(1)′n1,2,k

+ 38c

(1)′n1,3,k

c(1)′n1,3,k

c(1)′n2,2,k

−18c

(1)n2,1,k

+ 34c

(1)′n2,2,k

+ 38c

(1)′n2,3,k

c(1)′n2,3,k

.Así, se consigue reproducir en cada nodo creado el carácter cuadrático a lo sumo sobre cada

lado frontera de las cargas aplicadas en los lados Neumman.

Finalmente, este mismo procedimiento se va ejecutando sobre todos y cada uno de loselementos para conseguir unas nuevas z, T , ~i, N , C(1)

n , ~zd y zdes, que definen una malla más36No escribimos c(1)

nijk como viene siendo habitual porque el índice j está asignado al lado j-ésimo del elementoantes de subdividirse.

118

Page 139: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

fina que la anterior pero con, previsiblemente, ciertos nodos colgantes que deben ser eliminadosmediante sucesivos refinamientos verdes.

Programas recomendados:• tricon.m, (ver página 261).• buscacolu.m, (ver página 162).• buscacoluex.m, (ver página 163).

4.2. Eliminación de los nodos colgantes mediante sucesivos refina-mientos verdes.

Como ya se introdujo en la sección 1.3, un nodo colgante es un punto perteneciente a másde un elemento que es de distinto tipo para dos o más de ellos. Existen dos tipos de nodoscolgantes para particiones triangulares del dominio mediante elementos cuadráticos.

El primer tipo (llamémosle “tipo 1”), es aquel nodo que, perteneciendo a varios elementos,es un vértice para varios de ellos y un nodo situado en el punto medio del lado para otro.Estos nodos se caracterizan porque su índice aparece varias veces en las tres primeras filasde la matriz T y una vez en las tres últimas filas de la matriz T .

El segundo tipo (llamémosle “tipo 2”), es aquel nodo que, perteneciendo a dos elementos,es un nodo situado en el punto medio del lado para uno de ellos y un nodo situado en elpunto medio entre un vértice y un punto medio del lado de otro (situado sobre un ladoγ a ‖γ‖/4 de uno de los vértices). Estos nodos se caracterizan porque su índice apareceuna vez en las las tres últimas filas de la matriz T y ninguna en las tres primeras filas dela matriz T .

Figura 38: Ejemplos de nodos colgantes de tipo 1 (verde) y de tipo 2 (rojo).

Si sólo se ejecutan refinamientos rojos sobre ciertos elementos de la malla, ambos tipos denodos no podrán generarse por separado, es decir, si existe un nodo colgante de tipo 1, por

119

Page 140: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

seguro existirán otros dos de tipo 2 en el mismo lado en el que apareció el nodo de tipo 1 yviceversa.

Así, para proceder a la eliminación de todos ellos se buscan únicamente los nodos de tipo1 (mediante la matriz T ) y se marcan todos los elementos que poseen tales nodos colgantes enel punto medio de un lado. A todos estos elementos se les practica un refinamiento verde sobreel lado mayor, es decir, se divide cada triángulo en otros dos realizándole la bisectriz al vérticeopuesto al lado mayor.

Sin embargo, esto sólo elimina los nodos colgantes en el caso en el que estén situados en ellado mayor del elemento biseccionado. Debido a que no tiene por qué darse tal caso, es necesariorepetir el procedimiento, es decir, volver a marcar los elementos con nodos colgantes de tipo 1en, al menos el punto medio de uno de sus lados y volver a reparticionar los elementos según elrefinamiento verde. Este proceso se repite tantas veces como sea necesario para eliminar todoslos nodos colgantes de la partición.

Por ejemplo, en la figura 36 (página 114), los nodos colgantes de tipo 1 han sido representadosen azul y los de tipo 2 en naranja. Como se puede comprobar, para eliminarlos fueron necesariosun sólo refinamiento en el triángulo de la izquierda (porque el lado mayor contenía los nodoscolgantes) y dos en el de la derecha (porque el lado mayor no contenía los nodos colgantes).

Cabe destacar que, tal y como se ve en la figura 36 (página 114), el primer refinamiento verdesobre el elemento de la derecha crearía otros nodos colgantes si el lado mayor fuese compartido,por lo que es necesario, en general, repetir este algoritmo varias veces para conseguir eliminarlostodos.

Así pues, veamos cómo se ejecuta el refinamiento verde.

4.2.1. Modificación de z, T e ~i.

En primer lugar, supongamos que se va a realizar un refinamiento verde sobre el elementoK-ésimo biseccionando el lado l-ésimo (tal lado es el lado de mayor longitud del elemento K-ésimo). La numeración de los triángulos y de los nodos dentro de cada triángulo se hará comose indica en la figura 39.

La numeración de los nodos se hace en función del vértice del elemento original que hayasido biseccionado, comenzando por numerar como 1 en ambos triángulos nuevos a los vérticesgenerados, y numerando el resto en sentido antihorario.

120

Page 141: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

1 2

3

56

4

K

1

2

3

5

6

4

K nT+1

1 2

3

4

6 5

Figura 39: Refinamiento verde y numeración de triángulos subsecuentes.

Se comienza creando una matriz M , de dimensiones 6× 2. Con respecto a las tres primerasfilas, la componente (i-ésima, j-ésima) contiene el índice del vértice i-ésimo del triángulo j-ésimo,siendo el triángulo 1 el que recorre el lado nuevo creado de punto medio del elemento originalal vértice biseccionado en sentido antihorario, (negro en la figura 39) y el triángulo 2 el querecorre el lado nuevo creado de punto medio del elemento original al vértice biseccionado ensentido horario, (magenta en la figura 39).

Ahora, para cada triángulo j-ésimo, se busca si en la matriz z existe un nodo con lascoordenadas iguales a las coordenadas de cada nodo i-ésimo situado en cada punto medio decada lado (i = 4, 5, 6). En caso de que no exista, se numera como nz + 1 (siendo nz el númerode nodos justo antes de la adición de este úlrimo) y se añaden sus coordenadas a la matrizz (creando la columna (nz + 1)-ésima). Más tarde, se añade el índice del nodo a M , en lacomponente (i-ésima, j-ésima).

Para ampliar la matriz T , se sustituye la columna K-ésima por la primera columna de M yse anexiona la última columna de M al final de la matriz T , de tal manera que los elementosquedan numerados como se indica en la figura 39, donde nT es el número de elementos de lapartición antes de realizar la subdivisión.

De nuevo es necesario saber si los nodos generados están situados en la frontera o no. A pesarde que aquí, tras la eliminación de todos los nodos colgantes si puede aplicarse el algoritmoexpuesto en 2.2.4, es más eficiente volver a modificar el vector ~i a la vez que se van generandolos nodos. Únicamente se trata de un nodo situado en la frontera si el nodo está sobre el lado3 del triángulo 1 o el lado 1 del triángulo 2 y si el nodo 1 de los nuevos elementos generadosestá situado en la frontera.

Así, al añadir la columna (nz + 1)-ésima (siendo nz el número de nodos antes de la adición

121

Page 142: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

del nuevo nodo) a la matriz z, se crea la componente (nz + 1)-ésima del vector ~i.

4.2.2. Modificación de N , C(1)n , ~zd y zdes para lados frontera.

En caso de que el lado de mayor longitud del elemento que se subdivide sea frontera, esnecesario modificar la matriz N y C(1)

n si se trata de un lado de tipo Neumman y el vector ~zdy la matriz zdes si el lado es de tipo Dirichlet.

Para saber si se trata de un lado Neumman o Dirichlet, se consulta si el índice del nodosituado en el punto medio del lado mayor del elemento, está incluído en el vector ~zd. En caso deestarlo, habrá que modificar el vector ~zd y la matriz zdes y en caso contrario habrá que modificarla matriz N y C(1)

n .

Supongamos el caso en el que se trata de un lado tipo Dirichlet. En este caso, hay queañadirle dos componentes al vector ~zd, siendo cada una de ellas el índice de cada uno de los dosnodos generados en ese lado (el nodo 6 del triángulo 1 y el nodo 4 del triángulo 2).

Por otro lado, a la matriz zdes se le añaden dos columnas. Cada una de ellas37, son elresultado de interpolar los desplazamientos originales para crear los nuevos. Así supongamosque el nodo nd + 1 está situado entre los nodos na y nb y el nodo nd + 2 entre los nodos nb ync, entonces las columnas nuevas de zdes son:

zdes(1, nd + 1)zdes(2, nd + 1)

=3

8zdes(1, na) + 34zdes(1, nb)−

18zdes(1, nc)

38zdes(2, na) + 3

4zdes(2, nb)−18zdes(2, nc)

,zdes(1, nd + 2)zdes(2, nd + 2)

=−1

8zdes(1, na) + 34zdes(1, nb) + 3

8zdes(1, nc)−1

8zdes(2, na) + 34zdes(2, nb) + 3

8zdes(2, nc)

.Lo que se consigue así es interpolar los desplazamientos para poder seguir reproduciendo

la variación cuadrática sobre cada lado frontera de la partición de los desplazamientos enrefinamientos sucesivos.

En el caso de que el lado fuese de tipo Neumman, sería necesario modificar la matriz N yC(1)n .

La matriz N se modifica cambiando la columna relativa al lado Neumman original j-ésimoy añadiéndole una nueva. La razón de esta modificación reside en que un lado Neumman sesubdivide en otros dos, así, es necesario incluir dos nuevas columnas (relativas a los dos ladosgenerados) y eliminar la columna antigua (ya que ese lado ya no existe como tal en la nuevapartición).

37Las columnas (nd + 1)-ésima y (nd + 2)-ésima, siendo 2 × nd las dimensiones de la matriz zdes antes deañadirle las dos columnas

122

Page 143: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Para reemplazar la columna relativa al lado Neumman y generar la nueva, se cambia lacolumna relativa al lado original por la columna con los índices de los nodos [3 6 1]t deltriángulo 1 y se le añade al final una nueva columna con los índices de los nodos [1 4 2]t deltriángulo 2.

Lo que se consigue así es recopilar uno de los dos lados en la columna de la matriz N relativaal lado Neumman j y el otro en la nueva columna añadida.

La modificación de la estructura de datos C(1)n sigue un proceso casi idéntico que en el caso

del refinamiento rojo. Supongamos pues, que el lado j (del elemento antes de subdividirse, esdecir, el lado que se subdivide en otros dos), es el lado Neumman k-ésimo. Entonces, es necesariomodificar la submatriz c(1)

nilky crear la submatriz c(1)

nil(ln+1)donde ln en este caso es el número de

submatrices presentes en C(1)n antes de la creación de esta última.

De manera similar a como se modificaba la matriz zdes, se va a asignar a cada nodo creado(situado en el punto medio del lado), una combinación lineal de las cargas de sus nodos vérticesvecinos. Supongamos que c(1)′

nilkes la matriz de dimensiones 2 × 3 antes de modificar, entonces

las nuevas matrices pasan a ser:

c(1)nilk

=c(1)′

n1,1,k38c

(1)′n1,1,k

+ 34c

(1)′n1,2,k

− 18c

(1)′n1,3,k

c(1)′n1,2,k

c(1)′n2,1,k

38c

(1)′n2,1,k

+ 34c

(1)′n2,2,k

− 18c

(1)′n2,3,k

c(1)′n2,2,k

,c(1)nil,ln+1

=c(1)′

n1,2,k−1

8c(1)′n1,1,k

+ 34c

(1)′n1,2,k

+ 38c

(1)′n1,3,k

c(1)′n1,3,k

c(1)′n2,2,k

−18c

(1)n2,1,k

+ 34c

(1)′n2,2,k

+ 38c

(1)′n2,3,k

c(1)′n2,3,k

.Así, se consigue reproducir en cada nodo creado el carácter cuadrático sobre cada lado

frontera de la partición de las cargas aplicadas.

Finalmente, este mismo procedimiento se va ejecutando sobre todos y cada uno de loselementos que tienen nodos colgantes de tipo 1 para conseguir unas nuevas z, T , ~i, N , C(1)

n ,~zd y zdes, que definen una malla más fina que la anterior. La repetición de este proceso tantasveces como sea necesario consigue la eliminación de todos los nodos colgantes.

Programas recomendados:• bisectri.m, (ver página 157).• delhn.m, (ver página 170).• refinamiento.m, (ver página 250).

123

Page 144: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

5. Elementos finitos adaptativos: una visión de conjunto.

Hasta ahora, sólo se ha tratado en profundidad los tres procesos que intervienen en elproceso de refinamiento adaptativo (resolución del problema mediante el MEF, algoritmo deAinsworth Rankin y refinamiento de la malla). Si bien cada uno ha sido tratado profundamente(en especial su implementación computacional), no quiere dejarse pasar por alto la comprensióndel proceso en su conjunto.

Para llevar a cabo el proceso de refinamiento adaptativo en problemas de deformación plana,se parte, en primer lugar, de un mallado del problema (a saber, T , z, N , C(1)

n , ~zd y zdes) y seresuelve según el método de los elementos finitos.

Una vez obtenida la solución en desplazamientos, ~u, se usan estos mismos para obtener unacota de la norma de la energía del error del campo de desplazamientos, |||es|||K .

Una vez que se dispone, en cada elemento de la malla, de esta cota, se usa un “bulk criterion”para marcar un conjunto de elementos para refinar. Posteriormente, se ejecuta un refinamientorojo sobre aquellos elementos que se han quedado marcados, obteniendo unas nuevas T , z, N ,C(1)n , ~zd y zdes. Sin embargo, se crean, en general, ciertos nodos colgantes que hacen que el

mallado no sea apto para llevar a cabo el método de los elementos finitos sobre el mismo (taly como se ha estudiado en el presente documento). Por ello, se eliminan estos nodos colgantesmediante sucesivos refinamientos verdes, obteniendo, unas nuevas T , z, N , C(1)

n , ~zd y zdes.

Posteriormente, se va repitiendo este proceso (con las nuevas T , z, N , C(1)n , ~zd y zdes) bien

hasta que se alcance un determinado número de iteraciones o bien la cota del la norma dela energía de los errores cometidos en desplazamiento en cada elemento, |||es|||K , satisfagan uncierto criterio (típicamente que las estimaciones de los errores sean menores que una cierta cota,en este caso, ∑nT

K=1 |||es|||K = |||es|||Ω′ ≤ e0).

Mostramos, además, un gráfico que resume cómo se interrelacionan entre sí los programascreados a lo largo de la memoria para llevar a cabo proceso de refinamiento adaptativo deproblemas de deformación plana mediante el algoritmo de Ainsworth-Rankin.

Cada flecha que empieza en un programa A y termina en uno B indica que, durante laejecución del programa A es necesario realizar al menos una llamada a la función B.

124

Page 145: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

MD

N.m

busc

acol

uex.

m

delh

n.m

orde

ni.m

lado

com

.m

trico

n.m

refin

amie

nto.

m

prod

funb

aslin

_lad

.mfB

.m

coef

icua

.m

ficua

.m

inte

rdes

p.m

prob

lem

a.m

mar

ca.m

plot

trl.m

flujo

s.m

dist

into

s.m

tenf

ro.m

MI.m

MD

D.m

efad

apt_

ar.m

prod

funb

aslin

_tri.

m

bise

ctri.

m

lado

may

or.m

com

parti

.mM

NN

.m

ar.m

coef

ilin.m

derif

ix.m

mis

din

te.m

busc

acol

u.m

refx

e.m

filin

.m

fem

_pd.

m

sigf

unu.

mor

dene

.m

orie

ntac

arga

s.m

fpuv

.mrefe

x.m

trabi

sn.m

cam

bio.

m

vect

ores

.m

geom

etria

.m

exte

riore

s.m

nodo

tri.m

info

rmac

ion.

m

Page 146: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Programas recomendados:• efadapt_ar.m, (ver página 179).• tenfro.m, (ver página 256).• problema.m, (ver página 244).• plottrl.m, (ver página 243).• marca.m, (ver página 225).• distintos.m, (ver página 178).

126

Page 147: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

6. Estudios, resultados numéricos y conclusiones.

Los estudios numéricos se van a realizar sobre un problema ejemplo. Los objetivos básicosson dos: por un lado estudiar si tienden a anularse los errores en desplazamientos en los sucesivosrefinamientos (convergencia) y, por otro, verificar que realmente, los |||~es|||Ω′ obtenidos son unacota superior de |||~e|||Ω′ .

Para problemas en los que no existe solución analítica conocida (como en nuestro caso), esimposible saber qué error se está cometiendo en cada iteración. Para ello, lo que se hace estomar como solución real aquella obtenida al resolver el problema mediante elementos finitossobre una malla hiperfina con respecto a las mallas (sucesivamente más finas) sobre las que seha ido resolviendo dicho problema.

Una primera malla es hiperfina con respecto a otra segunda si:

La primera de ellas posee un número mucho mayor de nodos, estando típicamente, enrelación 1:10 como máximo (nodos de malla : nodos de malla hiperfina).

Ambas mallas son el resultado de aplicar refinamientos sucesivos sobre una misma mallainicial.

La malla hiperfina es el resultado de aplicar refinamientos rojos recursivamente a cadaelemento de la partición.

Así pues, para saber el error que se comete en un cierto punto de una cierta malla, se calcula

~e = ~uhf − ~uX ,

donde ~uhf es el desplazamiento según el MEF sobre la malla hiperfina y ~uX el desplazamientosegún el MEF sobre la malla actual.

Evidentemente, la obtención de ~uhf resulta del todo ineficiente (computacionamente) ysólo se usa a nivel académico para calcular (estimar en sentido estricto) qué errores se estácometiendo en cada iteración.

Así pues, para calcular la norma de la energía de los errores en desplazamiento se operasegún

|||~e||| =∫

Ω′σ (~uhf − ~uX) : ε (~uhf − ~uX) dΩ′.

Si denotamos K = 1, 2, 3, ..., nThf a los distintos elementos presentes en la malla hiperfina(siendo nThf el número total de ellos), entonces,

|||~e||| =nThf∑K=1

∫Kσ (~uhf − ~uX) : ε (~uhf − ~uX) dK.

127

Page 148: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Para hallar las integrales∫K σ (~uhf − ~uX) : ε (~uhf − ~uX) dK puede usarse la fórmula de

cubatura cuyos nodos y pesos están los expuestos en la tabla 4 (página 53).

Sin embargo, hay que tener mucho cuidado con la expresión anterior, porque si bien ~uhfpuede hallarse en los nodos de cubatura según los desplazamientos nodales del elemento K-ésimo no ocurre así con ~uX , ya que debe ser calculado mediante los desplazamientos nodalesde otro elemento presente en la malla no hiperfina, por lo que es necesario, comprobar, nodode cubatura a nodo de cubatura, en qué elemento de la malla no hiperfina se encuentra dichopunto y calcular, posteriormente, su valor según los desplazamientos nodales del elemento dela malla no hiperfina38.

Sin más, se expone el problema sobre el que se han llevado a cabo los estudios numéricos.

Programas recomendados:• interdesp.m, (ver página 219).

6.1. Problema.

El problema que se pretende resolver consiste en un trapecio de vértices [0 0]t, [3 0]t, [2 1]ty [0 1]t. En el segmento que va desde [2 0]t hasta [3 0]t existen cargas normales exteriores

aplicadas no nulas, ~q = 0−1− 2sn

, (en ejes xy y siendo sn la coordenada que recorre dicho

segmento, valiendo sn = 0 en el punto [2 0]t y sn = 1 en el punto [3 0]t).

Los segmentos que van desde [0 0]t hasta [0 1]t y desde [0 1]t hasta [1 1]t tienen todoslos desplazamientos impedidos (lados empotrados). Por otro lado, las fuerzas por unidad devolumen son nulas en todo el dominio (~f = [0 0]t).

Expongamos la malla inicial:38La forma de hallar computacionalmente, dado un punto del sólido Ω′, el elemento (o elementos) al que

pertenece no se ha tratado porque se usa la rutina inpolygon.m. Por otra parte, el hecho de que un punto puedapertenecer a varios elementos no entraña ninguna complicación porque las funciones base relativas a un nodoson siempre continuas en la frontera de los elementos, lo que conlleva la unicidad de desplazamientos en lafrontera (aunque no ocurra así con las tensiones).

128

Page 149: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 0.5 1 1.5 2 2.5 3

−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

x

yMallado inicial y condiciones de contorno

Figura 40: Malla inicial. Los nodos con desplazamientos impedidos se encuentran en rojo y lascargas Neumman en magenta.

Tal y como se vio en el apartado 2.3.4, sus matrices asociadas son:

129

Page 150: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

z =0 1 2 3 2 1 0 0,5 0,5 0 0,5 1 1,5 1,5 2 1,5 2,5 2,5

0 0 0 0 1 1 1 0,5 1 0,5 0 0,5 0 0,5 0,5 1 0 0,5

,

T =

1 1 2 3 36 2 3 5 47 6 6 6 58 11 13 15 179 12 14 16 1810 8 12 14 15

,

N =

1 2 3 4 5 611 13 17 18 16 92 3 4 5 6 7

,

c(1)ij1 = c

(1)ij2 = c

(1)ij4 = c

(1)ij5 =

0 0 00 0 0

,c

(1)ij3 =

0 0 01 2 3

,c

(2)ij1 = c

(2)ij2 = c

(2)ij4 = c

(2)ij5 =

0 0 00 0 0

,c

(2)ij3 =

0 0 0−1 −2 −3

,

~zd =

110796

,

zdes =0 0 0 0 0

0 0 0 0 0

.Para llevar a cabo el refinamiento, se van a generar 15 mallas subsecuentemente a partir

de la malla inicial, haciendo uso del estimador de Ainsworth-Rankin (y tomando el conjuntoóptimo de mi,K).

Así, tras llevar a cabo el refinamiento adaptativo se obtiene la siguiente malla:

130

Page 151: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 0.5 1 1.5 2 2.5 3

−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

x

yMallado final y condiciones de contorno

Figura 41: Malla final. Los nodos con desplazamientos impedidos se encuentran en rojo y lascargas Neumman en magenta.

El problema planteado posee 4 puntos singulares ([0 0

]t,[1 1

]t,[2 0

]ty[3 0

]t) en los

que se produce un cambio en el tipo de condición de contorno que se impone.

En un entorno de estos puntos es esperable la presencia de derivadas segundas y de ordensuperior no acotadas. Dado que de estas derivadas dependen los errores, es esperable por tantoque sea en torno a dichos puntos singulares donde se presenten los mayores errores del método.

De todos ellos, (tal y como se verá más adelante) aquel en el que la solución del MEF estimaunos niveles tensionales que tienden a infinito en cada iteración es el punto

[1 1

]t, razón por

la cual alrededor de dicho punto se concentra mayor cantidad de elementos en el refinamientoadaptativo.

Veamos ahora cómo ha evolucionado el mallado en cada iteración:

131

Page 152: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

01

23

0

0.51

Itera

ción

1

01

23

0

0.51

Itera

ción

2

01

23

0

0.51

Itera

ción

3

01

23

0

0.51

Itera

ción

4

01

23

0

0.51

Itera

ción

5

01

23

0

0.51

Itera

ción

6

01

23

0

0.51

Itera

ción

7

01

23

0

0.51

Itera

ción

8

01

23

0

0.51

Itera

ción

9

01

23

0

0.51

Itera

ción

10

01

23

0

0.51

Itera

ción

11

01

23

0

0.51

Itera

ción

12

01

23

0

0.51

Itera

ción

13

01

23

0

0.51

Itera

ción

14

01

23

0

0.51

Itera

ción

15

01

23

0

0.51

Itera

ción

16

Figura 42: Evolución del mallado durante las iteraciones.132

Page 153: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Por otro lado, a modo de ejemplo, veamos cómo se efectuó el refinamiento entre la penúltimay la última iteración:

0 0.5 1 1.5 2 2.5 30

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

x

y

Geometría final

Figura 43: Mallado final con los lados nuevos creados en la última iteración marcados en rojo.

0 0.5 1 1.5 2 2.5 30

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

x

y

Elementos con refinamiento rojo y verde

Figura 44: Mallado final con los elementos marcados en rojo si fueron subdivididos medianteel refinamiento rojo y con los elementos marcados en verde si fueron subdivididos mediante elrefinamiento verde en la última interación.

Recuérdese que los refinamientos verdes se realizaban para eliminar los nodos colgantes queresultaban de efectuar los refinamientos rojos.

Por otro lado, la resolución de la última malla reproduce satisfactoriamente las tensionesexteriores impuestas. Representemos las tensiones normales y tangenciales a lo largo de lafrontera mediante la coordenada s definida en la sección 2.3.4 (y de la misma manera que seespecificó en dicha sección):

133

Page 154: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 1 2 3 4 5 6−60

−40

−20

0

20

40

60

80

100

120

140

s

Ten

sión

en

dire

cció

n no

rmal

, nt ·(

σ n)

Según solución MEFImpuesta

Figura 45: Tensión en dirección normal, ~nt (σ~n).

134

Page 155: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 1 2 3 4 5 6−200

0

200

400

600

800

1000

s

Ten

sión

en

dire

cció

n ta

ngen

cial

, tt ·(

σ n)

Según solución MEFImpuesta

Figura 46: Tensión en dirección normal, ~tt (σ~n).

Como se puede ver, exceptuando s = 4 +√

2, que se trata del punto singular[1 1

]t, la

solución dada por el MEF es bastante similar a la solución real. Para visualizar mejor lastensiones en dirección normal en la zona de cargas no nula de la frontera del sólido, hagamosun zoom sobre la figura 45:

135

Page 156: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

1.8 2 2.2 2.4 2.6 2.8 3 3.2

−20

−15

−10

−5

0

5

10

15

20

25

s

Ten

sión

en

dire

cció

n no

rmal

, nt ·(

σ n)

Según solución MEFImpuesta

Figura 47: Tensión en dirección normal, ~nt (σ~n) (zoom sobre la zona de cargas no nulas).

Por otro lado, representemos la evolución de los grados de libertad (2 por cada nodo), encada iteración:

136

Page 157: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 2 4 6 8 10 12 14 1610

1

102

103

104

Iteración

Gra

dos

de li

bert

adEvolución del refinado

Figura 48: Grados de libertad del problema en cada iteración.

Como se puede comprobar, la evolución es, aproximadamente, exponencial. Esta es la tónicageneral en los procesos de refinamiento adaptativo y la razón por la que se busca que losnodos generados estén colocados de tal manera que se minimice el error, ya que los tiemposcomputacionales pueden llegar a crecer exponencialmente en cada iteración.

Es turno ahora de tratar los dos objetivos del estudio numérico: la convergencia del algoritmoy la comprobación de que proporciona cotas superiores a la norma de la energía de los erroresen desplazamiento.

Así pues, se calcula por un lado |||~es|||Ω′ en cada iteración y por otro, se calcula (estima)|||~e|||Ω′ mediante el uso de una malla hiperfina.

En nuestro caso, para generar la malla hiperfina, se realizaron seis iteraciones derefinamiento. Se partió de la malla expuesta en la figura 40 y en cada iteración de refinamientose subdividían mediante refinamiento rojo todos y cada uno de los elementos presentes en la

137

Page 158: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

malla inmediatamente anterior. La malla hiperfina resultante se muestra en la figura 49.

0 0.5 1 1.5 2 2.5 30

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

x

y

Malla hiperfina

Figura 49: Malla hiperfina.

Así pues, sobre cada una de las iteraciones realizadas se han obtenido los siguientesresultados:

138

Page 159: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 2 4 6 8 10 12 14 16

10−0.8

10−0.7

10−0.6

10−0.5

10−0.4

10−0.3

10−0.2

Iteración

|||e s|||

Ω´

Cota de |||e|||Ω´ del problema

Figura 50: |||~es|||Ω′ según el método de Ainsworth-Rankin en cada iteración

Como se puede comprobar, al menos en este problema, el algoritmo de Ainsworth-Rankin esconvergente. Por una parte, el método de los elementos finitos es convergente, es decir, cuantomás fina es la malla sobre la que se resuelve el problema, menos errores se cometen en la soluciónaproximada, por lo tanto, al ir obteniendo cotas cada vez menores sobre mallas cada vez másfinas, se puede asegurar que (al menos en este problema), el algoritmo de Ainsworth-Rankin esconvergente.

Además, puede verse cómo la cota de la norma de la energía de los errores en desplazamientodecrece de forma aproximadamente exponencial en cada iteración.

Ya se ha visto que el algoritmo de Ainsworth-Rankin es convergente, pero, ¿se trata |||~es|||Ω′realmente de una cota superior de |||~e|||Ω′?. Para responder a esta pregunta calculamos |||~e|||Ω′tomando como solución real la obtenida mediante una malla hiperfina.

139

Page 160: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

0 2 4 6 8 10 12 14 16 180

0.1

0.2

0.3

0.4

0.5

0.6

0.7

Iteraciones

|||e|

|| Ω´

Cota de Ainsworth−Rankin con m

i,K=0

Cota de Ainsworth−Rankin con mi,K

óptimo

|||e||| según malla hiperfina

Figura 51: |||~es|||Ω′ según el método de Ainsworth-Rankin (con mi,K = 0 y con mi,K óptimo) y|||~e|||Ω′ calculada tomando como solución real la obtenida al resolver el problema sobre la mallahiperfina.

Para obtener la anterior figura se ha procedido de la siguiente manera: sobre cada malla quese ha ido generando haciendo uso del algoritmo de Ainsworth-Rankin (escogiendo el conjuntode mi,K óptimo), se ha calculado, por otra parte, qué |||~es|||Ω′ se obtendría tomando mi,K = 0y, por otro lado, qué |||~e|||Ω′ se obtiene al tomar como solución real aquella dada según la mallahiperfina.

Los resultados sobre este problema son claros, el algoritmo de Ainsworth-Rankin otorga una|||~es|||Ω′ que es realmente una cota superior. Cabría preguntarse si se trata de una buena o unamala cota, que, a tenor de los resultados, parece una cota demasiado alta.

Por otro lado, se obtienen en este caso valores menores de |||~es|||Ω′ si se toma el conjuntomi,K óptimo. Sin embargo, su uso requiere, a lo largo del algoritmo, multiplicar una matriz detamaño 3× 12 por un vector de 12 componentes y resolver un sistema de tipo A~x = ~b de tresecuaciones y tres incógnitas mediante eliminación gaussiana nT veces. Si bien pudiera pensarse

140

Page 161: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

que no representa mucho costo computacional, tampoco las cotas |||~es|||Ω′ parecen ser muchomejores (a tenor de los resultados en este problema).

Cabe destacar que a lo largo de todas estas iteraciones en las que se realizan cálculos sobremallas hiperfinas, hay que controlar que realmente no se supera la proporción 1:10 en el númerode nodos de la malla con la que se comparan resultados con respecto al número de nodos de lamalla hiperfina.

Se muestra esta proporción en cada malla:

0 2 4 6 8 10 12 14 16 180

0.01

0.02

0.03

0.04

0.05

0.06

0.07

0.08

Iteraciones

Nod

os d

e m

alla

i−és

ima

/ Nod

os d

e m

alla

hip

erfin

a

Figura 52: Relación entre nodos a lo largo de las distintas iteraciones.

Como se puede comprobar, en el presente estudio nunca se aumenta la relación 1:10.

Finalmente, en cuanto al tiempo computacional requerido para llevar a cabo la resoluciónen desplazamientos (según el MEF), el algoritmo de Ainsworth-Rankin y el refinamiento de lamalla, se muestra el siguiente gráfico:

141

Page 162: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

101

102

103

104

10−2

10−1

100

101

102

Grados de libertad

Tie

mpo

com

puta

cion

al [s

]Tiempo computacional

Resolución en desplazamientosResolución estimadorRefinamiento y entes geométricosTiempo total

Figura 53: Tiempos computacionales.

El proceso que posee más costo computacional es, precisamente, el algoritmo de Ainsworth-Rankin. Cabe destacar que este algoritmo no ha sido implementado eficientemente39, yaque se hace un uso constante de bucles en operaciones que podrían resolverse vectorial omatricialmente. Aún así, cabe destacar que el algoritmo, como se ha podido comprobar, eslargo, complejo y requiere de la ejecución de numerosos procesos y cálculos.

Por otro lado, el tiempo de resolución del problema mediante el MEF crece de formaaproximadamente lineal con los grados de libertad del problema.

Por otro lado, la fluctuación del tiempo consumido por el proceso de refinamiento se explicaporque si bien el número de elementos refinados es, en general, mayor en cada malla, lasiteraciones necesarias para eliminar los nodos colgantes varían en cada una de ellas.

39Ya que conseguir también esto conllevaría una carga de trabajo que excede cualquier propósito de unProyecto Fin de Carrera.

142

Page 163: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Programas recomendados:• estudio.m, (ver página 189).• delinacua.m, (ver página 174).

6.2. Conclusiones.

En los estudios numéricos realizados, el algoritmo de Ainsworth-Rankin para la estimaciónde errores a posteriori ofrece cotas superiores de la norma de la energía de los errores cometidosen desplazamientos y dichas cotas convergen a cero a medida que la norma de la energía de loserrores cometidos en desplazamientos tiende también a cero.

Sin embargo, se trata de un algoritmo realmente complejo, con multitud de procesos ycálculos que hacen que su ejecución tome, según se ha programado en el presente estudio,tiempos computacionales de un orden de magnitud superior al tomado en la propia resolucióndel problema mediante el MEF.

Como estudios posteriores y futuras líneas de investigación abiertas destacan su implemen-tación computacional eficiente, la obtención de flujos ~gK,γ en el caso de condiciones de contornomixtas en la frontera y su exportación a otros tipos de problemas (ya sean de elasticidad o deotro tipo).

143

Page 164: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

7. Bibliografía.

Referencias

[1] AINSWORTH, Mark y RANKIN, Richard, Guaranteed computable error bounds forconforming and nonconforming finite element analyses in planar elasticity. InternationalJournal for Numerical Methods in Engineering. Volumen 82, sección 9, 28 de mayo de2010, páginas 1114-1157.

[2] AINSWORTH, Mark y J. TINSLEY, Oden, A posteriori error estimation in finiteelements analysis. Pure and Applied Mathematics. Willey-Interscience, JohnWiley & Sons,New York, 2000.

[3] H. SADD, Martin, Elasticity. Theory, Applications and Numerics, Elsevier Butterworth-Heinemman. ISBN 0-12-605811-3.

[4] PARÍS CARBALLO, Federico, Teoría de la elasticidad, Sevilla, Grupo de elasticidady Resistencia de Materiales. ISBN 84-88783-32-9.

[5] TIMOSHENKO y GOODIER, Theory of Elasticity, United Engineering Trustees Inc.1951.

[6] W. Dörfler, A convergent adaptative algorithm for Poisson’s equations., SIAM J.Numer. Anal., 33(3):1106-1124, 1996.

[7] M. L. Williams, Stress singularities resulting from various boundary conditions inangular cornes of plates in extension, ASME J. Appl. Mech., Volumen 19, 1952, páginas576-528.

144

Page 165: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

8. Anexos.

8.1. Programas y archivos MATLAB.

Código 1: ar.m: Programa para ejecutar el algoritmo de Ainsworth-Rankin para aproximacionesconformes, lados frontera con condiciones puras y variación a lo sumo cuadrática de las tensionesaplicadas y los desplazamientos prescritos en los lados frontera de la partición.

1 function [e,PHI,PSI,T1,T2,T3,T4,T5]=ar(E,nu,T,z,isn,Cneu,zdir,fpuv,u,conjm,Se,ctd,tg,nm,lado,hk,area,J,info,ex,ver,invA,ladon,Tn,Cneu2,vT,pruebaflujos)

2 %3 % DESCRIPCIÓN.4 %5 % Algoritmo de Ainsworth−Rankin para la estimación de errores a posteriori6 % en problemas de deformacion plana resueltos mediante elementos finitos7 % con elementos cuadráticos. No se consideran lados frontera del dominio8 % con condiciones mixtas (condiciones Neumman en una dirección y Dirichlet9 % en la perpendicular a la misma). Sólo válido para problemas con

10 % variaciones de cargas y desplazamientos en los lados frontera de la11 % partición polinómicas y a lo sumo cúadráticas.12 %13 % ENTRADAS.14 %15 % E [N/m^2] [1x1] Módulo elástico del sólido.16 %17 % nu [−] [1x1] Módulo de Poisson del sólido.18 %19 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la20 % partición del dominio. La columna j−ésima recoge en sus tres primeras21 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres22 % últimas los índices de los nodos situados en los puntos medios de cada23 % lado (4, 5 y 6) del triángulo j−ésimo.24 %25 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna26 % j−ésima recoge la coordenada x del nodo en la primera componente y la27 % coordenada y en la segunda del nodo de índice j.28 %29 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de30 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,31 % segunda y tercera componente respectivamente ordenados en sentido32 % antihorario.33 %34 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz35 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y36 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio37 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.38 %39 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice40 % del nodo Dirichlet i−ésimo.

145

Page 166: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

41 %42 % @fpuv [f: R2 −> R2] [N/m^3] Función que para cada punto (x1,y1) devuelve43 % la fuerza por unidad de volumen f(x1,y1).44 %45 % u [m] [2xnz] Matriz que en la columna j−ésima recoge, en la primera46 % componente el desplazamiento según el eje x y según el eje y en la47 % segunda, de la solución aproximada en desplazamientos en cada nodo del48 % problema de deformación plana resuelto mediante elementos finitos con49 % elementos cuadráticos.50 %51 % conj [−] [1x1] Variable que debe tomar el valor 1 en el caso en el que se52 % desee tomar en cada elemento el conjunto [m1 m2 m3]' de manera óptima y 053 % en el caso en el que se desee tomar [m1 m2 m3]'=[0 0 0]'.54 %55 % Se [N/m^2] [12*nx12] Matriz de rigidez por triángulos del problema de56 % deformaciones planas. Las matrices de rigidez elementales están57 % dispuestas verticalmente, es decir, la matriz Se(1:12,:) es la matriz58 % elemental del triángulo 1, la matriz Se(13:24,:) es la matriz59 % elemental del triángulo 2 y así sucesivamente.60 %61 % ctd [m] [2xn] Matriz en la que la columna i−ésima contiene la coordenada62 % x en la primera componente y la coordenada y en la segunda, del centroide63 % del triángulo i−ésimo.64 %65 % tg [−] [2x3xn] Estructura de datos en la que cada submatriz tg(:,:,i)66 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,67 % las coordenadas x e y de los vectores tangenciales unitarios en sentido68 % antihorario a los lados 1, 2 y 3 respectivamente.69 %70 % nm [−] [2x3xn] Estructura de datos en la que cada submatriz nm(:,:,i)71 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,72 % las coordenadas x e y de los vectores normales unitarios exteriores a los73 % lados 1, 2 y 3 respectivamente.74 %75 % lado [m] [3xn] Matriz que recoge en la columna i−ésima la longitud de los76 % lados 1, 2 y 3 del triángulo i−ésimo en la componente 1, 2 y 377 % respectivamente.78 %79 % hk [m] [1xn] Vector que recoge en la componente i−ésima la longitud del80 % lado de mayor longitud de los tres que conforman el triángulo i−ésimo.81 %82 % area [m^2] [1xn] Vector que contiene en la componente i−ésima el área del83 % triángulo i−ésimo.84 %85 % J [m^2] [1xn] Vector que contiene en la componente i−ésima el jacobiano86 % que resulta de la transformación afín del triángulo i−ésimo al triángulo87 % de referencia.88 %89 % info [−] [1xnz] Vector que en la componente i−ésima contiene un 1 si el90 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo91 % i−ésimo pertenece al interior del dominio.92 %

146

Page 167: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

93 % ex [−] [2xnz] Matriz que en cada columna i−ésima recoge, en caso de que94 % el nodo i−ésimo sea un nodo vértice exterior, los índices de los otros95 % dos nodos vértices que son sus vecinos y pertenecen a la frontera del96 % domino. En caso de que el nodo no sea exterior y vertice, la columna97 % i−ésima será [0 0]'.98 %99 % ver [−] [1xnz] Vector que contiene, en su componente i−ésima, un 1 si el

100 % nodo i−ésimo es un vértice y un 0 si se trata de un nodo situado en el101 % punto medio de un lado.102 %103 % invA [1/m] [2x2xn] Estructura de datos en la cada submatriz104 % invA(:,:,i) es la matriz de transformación afín del triángulo i−ésimo al105 % triángulo de referencia, esto es, [e n]'=invA(:,:,i)*[x−x1 y−y1]'.106 %107 % ladon [−] [1xisn] Vector que en la componente i−ésima contiene un 1, 2 ó108 % 3 si el lado i−esimo Neumman es el lado 1, 2 ó 3 respectivamente del109 % elemento al que pertenece.110 %111 % Tn [−] [1xnisn] Vector que en la componente i−ésima, contiene el índice112 % del triángulo al que pertenece el lado Neumman i−ésimo.113 %114 % Cneu2 [N/m^2] [2x3xnisn] Similar a Cneu, en vez de tratar las cargas115 % tangencial y normalmente, las trata en dirección x e y. Cada submatriz116 % Cneu2(2,3,i) contiene la tensión en x (Cneu2(1,1:3,i)) e y117 % (Cneu2(2,1:3,i)), en el punto inicial (Cneu2(1:2,1,i)), medio118 % (Cneu2(1:2,2,i)) y final (Cneu2(1:2,3,i)) del lado Neumman i−ésimo.119 %120 % vT [−] [3x1] Vector que debe contener en la componente i−ésima un 1 si121 % se desea calcular los términos Phi_K^(i) y 0 en el caso en el que se122 % desee tomar Phi_K^(i)=0.123 %124 % pruebaflujos [−] [1x1] Variable que debe tomar el valor 1 si se desea que125 % se realicen la verificaciones sobre los flujos calculados y 0 en caso126 % contrario.127 %128 % SALIDAS.129 %130 % e [N^(1/2)] [1xn] Vector cuya componente i−ésima contiene la estimación131 % (cota superior) de la norma de energía del error en desplazamientos132 % cometido en el elemento i−ésimo.133 %134 % PHI [N^(1/2)] [1xn] Vector cuya componente i−ésima es el valor de PHI135 % para el triángulo i−ésimo.136 %137 % PSI [N^(1/2)] [1xn] Vector cuya componente i−ésima es el valor de PSI138 % para el triángulo i−ésimo. Siempre se devolverá un vector nulo139 % (PSI=zeros(1,n)) ya que se tratan aproximaciones conformes y la variación140 % de desplazamientos prescritos a lo largo de un lado es polinómica a lo141 % sumo cuadrática.142 %143 % T1 [N^(1/2)] [1xn] Vector cuya componente i−ésima es el valor de Phi^(1)144 % para el triángulo i−ésimo.

147

Page 168: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

145 %146 % T2 [N^(1/2)] [1xn] Vector cuya componente i−ésima es el valor de Phi^(2)147 % para el triángulo i−ésimo.148 %149 % T3 [N^(1/2)] [1xn] Vector cuya componente i−ésima es el valor de Phi^(3)150 % para el triángulo i−ésimo.151 %152 % T4 [N^(1/2)] [1xn] Vector cuya componente i−ésima es el valor de Psi^(1)153 % para el triángulo i−ésimo. Siempre se devolverá un vector nulo154 % (T4=zeros(1,n)) ya que variación de desplazamientos prescritos a lo largo155 % de los lados frontera de la partición son polinómicas y a lo sumo156 % cuadráticas.157 %158 % T5 [N^(1/2)] [1xn] Vector cuya componente i−ésima es el valor de Psi^(2)159 % para el triángulo i−ésimo. Siempre se devolverá un vector nulo160 % (T4=zeros(1,n)) ya que sólo se tratan aproximaciones conformes.161 %162 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%163

164 % Se toman el número total de triángulos, nodos, lados Neumman y nodos165 % Dirichlet.166 n=size(T,2);167 nz=size(z,2);168 nneu=size(isn,2);169 ndir=size(zdir,2);170

171 % Transformación de E y nu a mu y lambda.172 mu=E/(2*(1+nu));173 lambda=E*nu/((1+nu)*(1−2*nu));174

175 % Cálculo de T1.176

177 if vT(1)==1,178 % Se hallan los flujos y se obtiene tten, que es una estructura de179 % datos de dimensiones [2x2x6xn], donde la submatriz tten(:,:,j,i) es180 % el tensor de tensiones en el nodo j−ésimo del triángulo i−ésimo.181 [gK,tten]=flujos(T,z,E,nu,zdir,Se,u,invA,isn,Cneu2,lado,nm,ver,ex,info,

ladon,Tn,J,pruebaflujos);182

183 % Se calcula la cantidad que se ha de sustraer a los flujos para184 % obtener los residuos.185

186 % Matriz de índices.187 P=[1 4 2;2 5 3; 3 6 1];188 for i=1:n, % Bucle de tríangulos.189 for j=1:3, % Bucle de lados.190 for q=1:3, % Bucle de punto inicial, medio y final del lado.191 % Esta es la cantidad que es necesario restar a los flujos.192 sn(q,1:2,j,i)=tten(1:2,1:2,P(j,q),i)*nm(1:2,j,i);193 end194 end195 end

148

Page 169: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

196

197 % Computamos los residuos.198 RK=gK−sn;199

200 % Cálculo de los vectores S.201

202 % Matriz de índices.203 w=[3 2;1 3;2 1];204 for i=1:n, % Bucle de triángulos.205 for j=1:3, % Bucle de lados.206 % Los vectores S se han definido como una matriz llamada SS207 % para diferenciarlos de la matriz de rigidez empleada en la208 % resolución de los elementos finitos.209 SS(1,j,i)=lado(j,i).* (RK(1:3,1:2,j,i)* lado(j,i)*nm(1:2,j,i))'

*[1 41]'/6;

210 SS(2,j,i)=lado(j,i).* (RK(1:3,1:2,j,i)*(lado(w(j,1),i)*nm(1:2,w(j,1),i)−lado(w(j,2),i)*nm(1:2,w(j,2),i)))' *[1 41]'/6;

211 SS(3,j,i)=lado(j,i).*((RK(1:3,1:2,j,i)* lado(j,i)*nm(1:2,j,i))'.*([−1 0 1])) *[1 41]'/6;

212 SS(4,j,i)=lado(j,i).*((RK(1:3,1:2,j,i)*(lado(w(j,1),i)*nm(1:2,w(j,1),i)−lado(w(j,2),i)*nm(1:2,w(j,2),i)))'.*([−1 0 1]))*[1 41]'/6;

213 end214 end215

216 % Cálculo de tau y E^−1 tau.217 for i=1:n % Bucle de triángulos.218 for j1=1:3 % Bucle 1 de lados j1.219 for j2=1:3 % Bucle 2 de lados j2.220 tau(1:2,1:2,j1,j2,i)=.5*(lado(j1,i)*lado(j2,i))*(tg(1:2,j1,i)

*tg(1:2,j2,i)'+tg(1:2,j2,i)*tg(1:2,j1,i)');221 etau(1:2,1:2,j1,j2,i)=1/(2*mu)*(tau(1:2,1:2,j1,j2,i)−lambda

/(2*(lambda+mu))*trace(tau(1:2,1:2,j1,j2,i))*eye(2));222 end223 end224 end225

226 % Cálculo de las cantidades B para cada triángulo.227

228 % p es una matriz que en sus filas contiene todos y cada uno de los229 % conjuntos ij,kl de las cantidades B^K_ij,kl que participan en el230 % cálculo de las matrices E.231 p=[ 1 1 1 1;232 2 2 2 2;233 3 3 3 3;234 1 1 2 2;235 2 2 3 3;236 3 3 1 1;237 1 1 1 2;

149

Page 170: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

238 2 2 2 3;239 3 3 3 1;240 2 2 1 2;241 3 3 2 3;242 1 1 3 1;243 1 2 1 2;244 2 3 2 3;245 3 1 3 1];246

247 % Cálculo de las cantidades B^K_ij,kl que intervienen en el cálculo248 % de las matrices E.249 for i=1:n, % Bucle de triángulos.250 for m=1:size(p,1); % Bucle de conjuntos de ij,kl de las cantidades

B^K_ij,kl.251 B(p(m,1),p(m,2),p(m,3),p(m,4),i)=fB(tau(:,:,p(m,3),p(m,4),i),etau

(:,:,p(m,1),p(m,2),i),area(i));252 end253 end254

255 % Carga de matrices Q.256 Q(:,:,1)=[ 504 135 891 1026 60;257 135 1458 1944 2835 −228;258 891 1944 5346 3159 −684;259 1026 2835 3159 8424 180;260 60 −228 −684 180 704];261

262 Q(:,:,2)=[ 468 0 0 1404 240;263 0 −324 972 0 0;264 0 972 1944 0 0;265 1404 0 0 11016 1296;266 240 0 0 1296 1024];267

268 Q(:,:,3)=[ 900 1080 324 5616 624;269 1080 1404 3240 4212 −240;270 324 3240 6804 3888 −1008;271 5616 4212 3888 25596 2160;272 624 −240 −1008 2160 2176];273

274 Q(:,:,4)=[ 504 −135 −891 1026 60;275 −135 1458 1944 −2835 228;276 −891 1944 5346 −3159 684;277 1026 −2835 −3159 8424 180;278 60 228 684 180 704];279

280 Q(:,:,5)=[ 900 −1080 −324 5616 624;281 −1080 1404 3240 −4212 240;282 −324 3240 6804 −3888 1008;283 5616 −4212 −3888 25596 2160;284 624 240 1008 2160 2176];285

286 Q(:,:,6)=[ 2880 0 0 8640 768;287 0 1296 3888 0 0;

150

Page 171: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

288 0 3888 11664 0 0;289 8640 0 0 25920 2304;290 768 0 0 2304 2048];291

292 Q(:,:,7)=[ −306 63 −297 −432 60;293 −306 −927 −1323 −432 60;294 54 −837 −81 −1296 180;295 54 2133 2997 −1296 180;296 −192 96 288 −576 32];297

298 Q(:,:,8)=[ −342 −900 −3672 918 −120;299 900 −990 −1998 −1188 168;300 3672 −1998 −5994 −648 216;301 918 1188 648 1782 −72;302 −120 −168 −216 −72 64];303

304 Q(:,:,9)=[ −720 −1008 −3996 756 −96;305 −180 −2988 −6048 −1512 192;306 2376 −4104 −6480 −2592 288;307 756 1836 −324 4212 −576;308 −240 −240 −144 −720 256];309

310 Q(:,:,10)=[ −306 306 −54 54 −192;311 −63 −927 −837 −2133 −96;312 297 −1323 −81 −2997 −288;313 −432 432 1296 −1296 −576;314 60 −60 −180 180 32];315

316 Q(:,:,11)=[ −720 180 −2376 756 −240;317 1008 −2988 −4104 −1836 240;318 3996 −6048 −6480 324 144;319 756 1512 2592 4212 −720;320 −96 −192 −288 −576 256];321

322 Q(:,:,12)=[ −684 144 −1512 −108 48;323 −144 −1980 −3996 −2376 336;324 1512 −3996 −4212 −3240 432;325 −108 2376 3240 3564 −432;326 48 −336 −432 −432 128];327

328 % Cálculo de matrices E.329

330 % Matrices de índices.331 w=[2 3;3 1;1 2];332 c=[1 2;2 3; 3 1];333

334 for i=1:n % Bucle de triángulos.335 for p=1:3, % Bucle de grupos de matrices E.336 % Se designan mEp a las matrices E_11, E_22 y E_33.337 mEp(1:5,1:5,p,i)=(1/155520)*(Q(:,:, 1)*B(w(p,1),w(p,1),w(p,1),w(p

,1),i)+...

151

Page 172: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

338 Q(:,:, 2)*B(w(p,1),w(p,1),w(p,2),w(p,2),i)+...

339 Q(:,:, 3)*B(w(p,1),w(p,1),w(p,1),w(p,2),i)+...

340 Q(:,:, 4)*B(w(p,2),w(p,2),w(p,2),w(p,2),i)+...

341 Q(:,:, 5)*B(w(p,2),w(p,2),w(p,1),w(p,2),i)+...

342 Q(:,:, 6)*B(w(p,1),w(p,2),w(p,1),w(p,2),i));

343

344 % Se designan mEs a las matrices E_12, E_23 y E_31.345 mEs(1:5,1:5,p,i)=(1/155520)*(Q(:,:, 7)*B(c(p,1),c(p,1),c(p,1),c(p

,1),i)+...346 Q(:,:, 8)*B(c(p,1),c(p,1),c(p,2),c(p

,2),i)+...347 Q(:,:, 9)*B(c(p,1),c(p,1),c(p,1),c(p

,2),i)+...348 Q(:,:,10)*B(c(p,2),c(p,2),c(p,2),c(p

,2),i)+...349 Q(:,:,11)*B(c(p,2),c(p,2),c(p,1),c(p

,2),i)+...350 Q(:,:,12)*B(c(p,1),c(p,2),c(p,1),c(p

,2),i));351

352 % Se trasponen las matrices mEs para el cálculo de las m_1:3.353 mEsT(1:5,1:5,p,i)=mEs(1:5,1:5,p,i)';354 end355 end356

357 % Cálculo de las m_i. Si conjm==1, entonces se calcula según el358 % criterio de optimalidad. Si conjm==0, entonces se calcula como m_i=0.359 if conjm==1,360 % Se opera con las matrices E para obtener sus valores.361 for i=1:n362 % Con MS se hace referencia al vector 12x1 formado por los tres363 % vectores S en cada triángulo dispuestos en columna.364 MS(1:12,i)=[SS(:,1,i);SS(:,2,i);SS(:,3,i)];365 % Con ME se hace referencia a la matriz 3x12 formada por la366 % quinta fila de las matrices E.367 ME(1:3,1:12,i)=[mEp(5,1:4,1,i) mEs(5,1:4,1,i) mEsT(5,1:4,3,i);

mEsT(5,1:4,1,i) mEp(5,1:4,2,i) mEs(5,1:4,2,i) ;mEs(5,1:4,3,i)mEsT(5,1:4,2,i) mEp(5,1:4,3,i) ];

368 % Con MM se hace referencia a la matriz 3x3 formada por la369 % componente (5,5) de cada matriz E.370 MM(1:3,1:3,i)=[mEp(5,5,1,i) mEs(5,5,1,i) mEs(5,5,3,i);mEs(5,5,1,i

) mEp(5,5,2,i) mEs(5,5,2,i) ;mEs(5,5,3,i) mEs(5,5,2,i) mEp(5,5,3,i) ];

371 % Cálculo final del conjunto de m_i (eliminación gaussiana).372 m(1:3,i)=−MM(1:3,1:3,i)\(ME(1:3,1:12,i)*MS(1:12,i));373 end374 % Asignación de valores a la quinta componente de los vectores S.

152

Page 173: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

375 SS(5,1:3,:)=m;376 else377 % Se toman las m_i como nulas directamente.378 SS(5,1:3,:)=0;379 end380

381 % Cómputo de T1.382 for i=1:n, % Bucle de triángulos.383 T1(i)=sqrt(SS(:,1,i)'*mEp(:,:,1,i)*SS(:,1,i)+...384 SS(:,2,i)'*mEp(:,:,2,i)*SS(:,2,i)+...385 SS(:,3,i)'*mEp(:,:,3,i)*SS(:,3,i)+...386 2*(...387 SS(:,1,i)'*mEs(:,:,1,i)*SS(:,2,i)+...388 SS(:,2,i)'*mEs(:,:,2,i)*SS(:,3,i)+...389 SS(:,3,i)'*mEs(:,:,3,i)*SS(:,1,i)));390 end391 end392

393

394 % Para el cálculo de T2 y T3 hace falta el cálculo del máximo valor de rho395 % en los tres lados del triángulo. Basta con calcular tg*(x−xk)/(nm*(x−xk))396 % en cada lado y para sus dos extemos y escoger el mayor de los seis397 % valores.398 if vT(2)==1 || vT(3)==1, % Sólo se calcula en caso de que el primer o segundo

término sean necesarios.399 for i=1:n % Bucle de triángulos.400 crho(1:6,i)=[abs((tg(1:2,1,i)'*(z(:,T(1,i))−ctd(:,i)))/(nm(1:2,1,i)

'*(z(:,T(1,i))−ctd(:,i))));...401 abs((tg(1:2,1,i)'*(z(:,T(2,i))−ctd(:,i)))/(nm(1:2,1,i)

'*(z(:,T(2,i))−ctd(:,i))));...402 abs((tg(1:2,2,i)'*(z(:,T(2,i))−ctd(:,i)))/(nm(1:2,2,i)

'*(z(:,T(2,i))−ctd(:,i))));...403 abs((tg(1:2,2,i)'*(z(:,T(3,i))−ctd(:,i)))/(nm(1:2,2,i)

'*(z(:,T(3,i))−ctd(:,i))));...404 abs((tg(1:2,3,i)'*(z(:,T(3,i))−ctd(:,i)))/(nm(1:2,3,i)

'*(z(:,T(3,i))−ctd(:,i))));...405 abs((tg(1:2,3,i)'*(z(:,T(1,i))−ctd(:,i)))/(nm(1:2,3,i)

'*(z(:,T(1,i))−ctd(:,i))))];406 rho(i)=max(crho(1:6,i));407 end408 end409

410 % Cálculo de T2.411 if vT(2)==1,412 % Se construye la matriz producto de funciones base lineales en el413 % triángulo elemental.414 for i=1:3, % Bucle de funciones base escalares (fila).415 for j=i:3, % Bucle de funciones base escalares (columna).416 % (fi_i,fi_j) se calcula mediante la función prodfunbaslin_tri417 % (producto de funciones base lineales en el triángulo418 % elemental).419 Mt(i,j)=prodfunbaslin_tri(i,j);

153

Page 174: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

420 end421 end422 % Debido a que se trata de una matriz simétrica,423 Mt=Mt+Mt'−diag(diag(Mt));424

425 % Se exponen los nodos de cubatura.426 pe=[1/3 (6+sqrt(15))/21 (9−2*sqrt(15))/21 (6+sqrt(15))/21 (6−sqrt(15))/21

(9+2*sqrt(15))/21 (6−sqrt(15))/21; 1/3 (6+sqrt(15))/21 (6+sqrt(15))/21 (9−2*sqrt(15))/21 (6−sqrt(15))/21 (6−sqrt(15))/21 (9+2*sqrt(15))/21];

427

428 % Ahora, para cada triángulo de trabajo, se pasan los puntos de429 % cubatura del triángulo de referencia al interior del mismo.430 for i=1:n, % Bucle de triángulos.431 px(1:2,1:7,i)=refex(pe,z(:,T(1,i)),z(:,T(2,i)),z(:,T(3,i)));432 end433

434 % Se halla la fuerza por unidad de volumen en cada uno de estos puntos.435 F=fpuv(px);436

437 % Se calcula el valor de las funciones base en los puntos de cubatura del438 % triángulo elemental.439 for i=1:3, % Bucle de funciones base escalares.440 filinpe(:,i)=filin(i,pe);441 end442

443 % Se calculan ahora los (f,fi) donde f son las fuerzas por unidad de444 % volumen y fi es la función base lineal vectorial i−ésima.445 for i=1:n, % Bucle de triángulos.446 bFlin(1:3,1,i)=J(i)*inte(F(1,:,i)',filinpe(1:7,:));447 bFlin(1:3,2,i)=J(i)*inte(F(2,:,i)',filinpe(1:7,:));448 end449

450 % Cálculo de los coeficientes alpha en cada triángulo y de la451 % proyección ortogonal de las fuerzas por unidad de volumen.452 for i=1:n, % Bucle de triángulos.453 % Se hace uso ahora de los bF calculados al principio.454 alfa(:,1,i)=(J(i)*Mt)\bFlin(:,1,i);455 alfa(:,2,i)=(J(i)*Mt)\bFlin(:,2,i);456 PKf(1,1:7,i)=filinpe*alfa(:,1,i);457 PKf(2,1:7,i)=filinpe*alfa(:,2,i);458 end459

460 % Cálculo de los elementos CK en cada triángulo.461 CK=sqrt(1/pi^2/mu*(1+(sqrt(1+rho(:).^2)+rho(:)).^2))';462

463 % Cálculo del integrando en los productos en L2.464 vint=F−PKf;465

466 % Cálculo de la oscilación de las fuerzas por unidad de volumen.467 for i=1:n, % Bucle de triángulos.468 for j=1:7, % Bucle de puntos de cubatura.

154

Page 175: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

469 integ(j,i)=norm(vint(:,j,i))^2;470 end471 Osc(i)=hk(i)*sqrt(J(i)*inte(integ(:,i),ones(7,1)));472 end473

474 % Cómputo de T2.475 T2=CK.*Osc;476 else477 T2=zeros(1,n);478 end479

480

481 % Cálculo de T3.482 if vT(3)==1,483 % Se comienza calculando, para cada lado Neumman, el mayor de los otros484 % dos lados que pertenecen al mismo triángulo que ellos.485 for i=1:nneu,486 if ladon(i)==1,487 g(i)=max(lado(2,Tn(i)),lado(3,Tn(i)));488 else489 if ladon(i)==2,490 g(i)=max(lado(1,Tn(i)),lado(3,Tn(i)));491 else492 g(i)=max(lado(1,Tn(i)),lado(2,Tn(i)));493 end494 end495 end496

497 % Cálculo de los elementos C_Kg conociendo g en cada triángulo con, al498 % menos, un lado Neumman.499 for i=1:nneu, % Bucle de lados Neumman.500 C_Kg(i)=sqrt(hk(Tn(i))/(mu*pi*area(Tn(i)))*(hk(Tn(i))/pi+g(i))*(1+(

sqrt(1+rho(Tn(i))^2)+rho(Tn(i)))^2));501 end502

503 % Cálculo de la matriz de elementos(fi_i,fi_j) donde fi son las504 % funciones base lineales escalares en el lado.505 for i=1:3, % Bucle de filas de Ml.506 for j=i:3, % Bucle de columnas de Ml.507 Ml(i,j)=prodfunbaslin_lad(i,j);508 end509 end510 Ml=Ml+Ml'−diag(diag(Ml));511 for i=1:nneu, % Bucle de lados Neumman.512 % Se calculan ahora los (Cneu,fi) donde donde fi es cualquier513 % función base lineal vectorial sobre los lados.514 bn(1,1:3,i)=lado(ladon(i),Tn(i))*[(Cneu(1,1:3,i).*[1 0 0])*[1/6 2/3

1/6]',(Cneu(1,1:3,i).*[0 1 0])*[1/6 2/3 1/6]',(Cneu(1,1:3,i).*[0 01])*[1/6 2/3 1/6]'];

515 bn(2,1:3,i)=lado(ladon(i),Tn(i))*[(Cneu(2,1:3,i).*[1 0 0])*[1/6 2/31/6]',(Cneu(2,1:3,i).*[0 1 0])*[1/6 2/3 1/6]',(Cneu(2,1:3,i).*[0 01])*[1/6 2/3 1/6]'];

155

Page 176: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

516 Pgg(1,1:3,i)=lado(ladon(i),Tn(i))*Ml\bn(1,:,i)';517 Pgg(2,1:3,i)=lado(ladon(i),Tn(i))*Ml\bn(2,:,i)';518

519 % Nota: los coeficentes alfas son directamente las proyecciones520 % porque la matriz de fis es la matriz identidad521 end522

523 % Cálculo del integrando de la norma en L^2.524 vintn=Cneu−Pgg;525

526 % Cálculo de las oscilaciones para nados Neumman.527 for i=1:nneu, % Bucle de lados Neumman.528 int1n(i)=sqrt(ladon(i)*(vintn(1,1:3,i).^2)*[1/6 2/3 1/6]');529 int2n(i)=sqrt(ladon(i)*(vintn(2,1:3,i).^2)*[1/6 2/3 1/6]');530 Oscn(i)=sqrt(ladon(i)*(int1n(i)^2+int2n(i)^2));531 end532

533 % Se computa T3 en cada lado Neumman numerado en isn.534 T3p=C_Kg.*Oscn;535

536 % Para pasar esta información a los triángulos del dominio se empieza537 % creando un vector de ceros538 T3=zeros(1,n);539

540 % Para cada lado Neumman, se suma su T3p correspondiente al triángulo541 % al que pertenece.542 for i=1:nneu, % Bucle de lados Neumman.543 T3(Tn(i))=T3(Tn(i))+T3p(i);544 end545

546 else547 T3=zeros(1,n);548 end549

550 % Se computa PHI con T1, T2 y T3.551

552 PHI=T1+T2+T3;553

554 % Como se tratan variaciones de los desplazamientos polinómicas,555 % cuadráticas a lo sumo sobre cada lado frontera de la partición, T4=0.556 T4=zeros(size(PHI));557

558 % Como la aproximación es conforme, T5=0.559 T5=zeros(size(PHI));560

561 % Se computa PSI con T4 y T5.562 PSI=T4+T5;563

564 e=sqrt(PHI.^2+PSI.^2);565 comprobacion=(e==abs(e)); if sum(sum(comprobacion))~=numel(e),e, disp('

Warning: e negativos o complejos!!'), pause, end

156

Page 177: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 2: bisectri.m: Programa para realizar un refinamiento verde sobre un cierto número deelementos dados.

1 function [T,z,isn,Cneu,zdir,zdesp,info,padres]=bisectri(T,z,isn,Cneu,zdir,zdesp,info,lista,lados,padres)

2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para refinar ciertos elementos mediante bisectriz de6 % un cierto lado (refinamiento verde). Todos los datos del problema7 % (cargas externas, desplazamientos...) son también adaptados a la nueva8 % geometría.9 %

10 % ENTRADAS.11 %12 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la13 % partición del dominio. La columna j−ésima recoge en sus tres primeras14 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres15 % últimas los índices de los nodos situados en los puntos medios de cada16 % lado (4, 5 y 6) del triángulo j−ésimo.17 %18 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna19 % j−ésima recoge la coordenada x del nodo en la primera componente y la20 % coordenada y en la segunda del nodo de índice j.21 %22 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de23 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,24 % segunda y tercera componente respectivamente ordenados en sentido25 % antihorario.26 %27 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz28 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y29 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio30 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.31 %32 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice33 % del nodo Dirichlet i−ésimo.34 %35 % zdesp [m] [2xnzdir] Matriz que recoge en la columna i−ésima el36 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y37 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.38 %39 % info [−] [1xnz] Vector que en la componente i−ésima contiene un 1 si el40 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo41 % i−ésimo pertenece al interior del dominio.42 %43 % lista [−] [1xR] Vector que en cada componente recoge el índice de un44 % elemento que debe ser refinado mediante bisectriz del lado contenido en45 % lados(i).46 %47 % lados [−] [1xR] Vector que en la componente i−ésima recoge el índice48 % del lado del elemento lista(i) que debe ser subdividido en otros dos

157

Page 178: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

49 % mediante refinamiento verde.50 %51 % padres [−] [1xn] Vector que recoge en la componente i−ésima el índice52 % del triángulo de la malla primera de la que proviene el elemento i−ésimo53 % de la malla segunda. En caso de no poseer ningún padre (por no ser un54 % elemento subdividido), la componente i−ésima será nula.55 %56 % SALIDAS.57 %58 % T [−] [6xn2] Matriz de vértices y puntos medios de los triángulos de la59 % partición del dominio. La columna j−ésima recoge en sus tres primeras60 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres61 % últimas los índices de los nodos situados en los puntos medios de cada62 % lado (4, 5 y 6) del triángulo j−ésimo.63 %64 % z [m] [2xnz2] Matriz de coordenadas de nodos del problema. La columna65 % j−ésima recoge la coordenada x del nodo en la primera componente y la66 % coordenada y en la segunda del nodo de índice j.67 %68 % isn [−] [3xnisn2] Matriz que contiene en la columna j−ésima los índices69 % de los nodos inicial, medio y final del lado Neumman j−ésimo en la70 % primera, segunda y tercera componente respectivamente ordenados en71 % sentido antihorario.72 %73 % Cneu [N/m^2] [2x3xnisn2] Estructura de datos en la que cada submatriz74 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y75 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio76 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.77 %78 % zdir [−] [1xnzdir2] Vector en el que la componente i−ésima es el índice79 % del nodo Dirichlet i−ésimo.80 %81 % zdesp [m] [2xnzdir2] Matriz que recoge en la columna i−ésima el82 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y83 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.84 %85 % info [−] [1xnz2] Vector que en la componente i−ésima contiene un 1 si el86 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo87 % i−ésimo pertenece al interior del dominio.88 %89 % padres [−] [1xn2] Vector que recoge en la componente i−ésima el índice90 % del triángulo de la malla primera de la que proviene el elemento i−ésimo91 % de la malla segunda. En caso de no poseer ningún padre (por no ser un92 % elemento subdividido), la componente i−ésima será nula.93 %94 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%95

96 % Matrices de índices.97 P1=[1 2; 2 3; 3 1];98 P2=[1 4 2;2 5 3; 3 6 1];99 P3=[3 1;1 2;2 3];

100 P4=[2 3; 3 1; 1 2];

158

Page 179: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

101

102 % Se ejecuta el refinamiento verde para cada elemento de lista.103 for k=1:length(lista), % Bucle de triángulos.104 % Obtención de la nuevas T y z.105

106 % Se toma la columna de la matriz T relativa al elemento107 % lista(k)−ésimo y se guarda el tamaño inicial de la matriz z.108 f(1:6)=T(1:6,lista(k));109 nz=size(z,2);110

111 % Se crea la matriz M que contiene en cada fila los índices de los112 % vértices de los nuevos triángulos.113 M=[f(lados(k)+3) f(P3(lados(k),1)) f(P3(lados(k),2)); f(lados(k)+3) f(P4

(lados(k),1)) f(P4(lados(k),2))]';114

115 % Se modifica la matriz M para incluirle los nodos medios y crearlos116 % si no existen.117 cz=1;118 for j1=1:2, % Bucle de triángulos.119 for j2=1:3 % Bucle de lados.120 % Se hallan las coordenadas del punto medio del lado j2 del121 % triángulo j1 (j1 es un triángulo nuevo).122 c=(z(:,M(P1(j2,1),j1))+z(:,M(P1(j2,2),j1)))/2;123 % Se busca si ya existen esas coordenadas.124 s=buscacoluex(z,c);125

126 % Si no existen, se añade a la matriz z.127 if s==0128 z(1:2,nz+cz)=c;129 M(j2+3,j1)=nz+cz;130 if (j2==1 && j1==1) || (j2==3 && j1==2) || info(f(lados(k)+3)

)==0,131 info(nz+cz)=0;132 else133 info(nz+cz)=1;134 end135

136 cz=cz+1;137 else138 M(j2+3,j1)=s;139 end140 end141 end142 % La matriz M está lista para incluirse en la matriz T, pero se hace al143 % final porque hay que recurrir a la T original.144

145 % Modificación de isn, Cneu, zdir y zdesp.146

147 % Se busca si los nodos del triángulo original eran exteriores o no.148 I=info(f);149

150 for j=1:3 % Bucle de lados.

159

Page 180: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

151 % Se busca si el nodo central del lado j del triángulo original era152 % exterior, en caso afirmativo es un lado exterior y hay que153 % modificar las matrices isn y Cneu o zdir y zdesp.154

155 if I(P2(j,2))==1,156

157 s2=find(T(P2(j,2),lista(k))==zdir(1,:)); if size(s2,2)==0, s2=0;end

158

159 if s2==0160 % Se trata de un lado Neumman.161

162 if j==1 && lados(k)==1 || j==2 && lados(k)==2 || j==3 &&lados(k)==3,

163 s=buscacolu(isn([1,3],:),T(P1(j,:),lista(k)));164 % Se amplían la matriz Cneu e isn.165 isn(1:3,s)=[M(3,1),M(6,1),M(1,1)];166 isn(1:3,size(isn,2)+1)=[M(1,2) M(4,2) M(2,2)];167

168 NN(1:2,1:3)=Cneu(1:2,1:3,s);169 Cneu(1:2,1:3,s)=[NN(1:2,1) 3/8*NN(1:2,1)+3/4*NN(1:2,2)

−1/8*NN(1:2,3) NN(1:2,2)];170 Cneu(1:2,1:3,size(isn,2))=[NN(1:2,2) −1/8*NN(1:2,1)+3/4*

NN(1:2,2)+3/8*NN(1:2,3) NN(1:2,3)];171 end172 else173 % Se trata de un lado tipo Dirichlet.174

175 % Se amplía sólo si se está analizando el lado que se176 % subdivide en dos.177 if j==1 && lados(k)==1 || j==2 && lados(k)==2 || j==3 &&

lados(k)==3178 s1=find(T(P2(j,1),lista(k))==zdir(1,:)); if size(s1,2)

==0, s1=0; end179 s3=find(T(P2(j,3),lista(k))==zdir(1,:)); if size(s3,2)

==0, s3=0; end180

181 zdir(1,size(zdir,2)+1)=M(6,1);182 zdir(1,size(zdir,2)+1)=M(4,2);183 D(1:2,1:3)=[zdesp(1:2,s1) zdesp(1:2,s2) zdesp(1:2,s3)];184 zdesp(1:2,size(zdesp,2)+1)=3/8*D(1:2,1)+3/4*D(1:2,2)−1/8*

D(1:2,3);185 zdesp(1:2,size(zdesp,2)+1)=−1/8*D(1:2,1)+3/4*D(1:2,2)

+3/8*D(1:2,3);186 end187 end188 end189 end190

191 % Se amplía la matriz T.192 T(1:6,lista(k))=M(1:6,1);193 T=[T,M(1:6,2)];

160

Page 181: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

194

195 % Se deja constancia de los padres.196 padres(k)=k;197 padres(length(padres)+1)=k;198 end

161

Page 182: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 3: buscacolu.m: Programa que sirve para encontrar la primera columna de una matriz(de dimensiones 2 × n) que es igual a un cierto vector (de dimensiones 2 × 1) o al vector conlas componentes cambiadas.

1 function s=buscacolu(A,v)2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para encontrar dentro una matriz de dimensiones [2xn]6 % cuál es la primera columa igual al vector v o al vector rot90(rot90(v))7 % (los cuales miden ambos [2x1]).8 %9 % ENTRADAS.

10 %11 % A [−] [2xn] Matriz en la que es necesario buscar las columnas iguales a12 % v.13 %14 % v [−] [2x1] Vector con el que comparar las columnas de A.15 %16 % SALIDAS.17 %18 % s [−] [1x1] Primera columna de la matriz A que es igual al vector v o al19 % vector rot90(rot90(v)). Si no existe ninguna, entonces s=0.20 %21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22

23 % Se toma la segunda dimensión de la matriz A.24 b=size(A,2);25

26 % Se establece el contador en 1 y se define s=0 por si no hubiera columnas27 % en A iguales al vector v.28 k=1;29 s=0;30

31 % Se compara columna a columna de A con el vector v (hasta encontrar una32 % coincidencia).33 while k<=b,34 if A(1,k)==v(1) && A(2,k)==v(2) || A(1,k)==v(2) && A(2,k)==v(1),35 s=k; k=b;36 end37 k=k+1;38 end

162

Page 183: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 4: buscacoluex.m: Programa que sirve para encontrar la primera columna de una matriz(de dimensiones 2× n) que es igual a un cierto vector (de dimensiones 2× 1).

1 function s=buscacoluex(A,v)2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para encontrar dentro una matriz de dimensiones [2xn]6 % cuál es la primera columa igual al vector v (el cual mide [2x1]).7 %8 % ENTRADAS.9 %

10 % A [−] [2xn] Matriz en la que es necesario buscar las columnas iguales a11 % v.12 %13 % v [−] [2x1] Vector con el que comparar las columnas de A.14 %15 % SALIDAS.16 %17 % s [−] [1x1] Primera columna de la matriz A que es igual al vector v. Si18 % no existe ninguna, entonces s=0.19 %20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21

22 % Se toma la segunda dimensión de la matriz A.23 b=size(A,2);24

25 % Se establece el contador en 1 y se define s=0 por si no hubiera columnas26 % en A iguales al vector v.27 k=1;28 s=0;29

30 % Se compara columna a columna de A con el vector v (hasta encontrar una31 % coincidencia).32 while k<=b,33 if A(1,k)==v(1) && A(2,k)==v(2),34 s=k; k=b;35 end36 k=k+1;37 end

163

Page 184: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 5: cambio.m: Programa para obtener las matrices y vectores relativos a lastransformaciones afines de cada triángulo de la partición al triángulo de referencia.

1 function [A,b,J,invA]=cambio(X,Y)2 %3 % DESCRIPCIÓN.4 %5 % Programa dedicado a obtener las matrices, vectores y jacobianos para cada6 % triángulo de la partición, relativos a la tranformación afín al triángulo7 % de referencia.8 %9 % ENTRADAS.

10 %11 % X [m] [6xn] Matriz que contiene en la columna i−ésima las 6 coordenadas12 % x de los 6 nodos que componen el triángulo i−ésimo.13 %14 % Y [m] [6xn] Matriz que contiene en la columna i−ésima las 6 coordenadas15 % y de los 6 nodos que componen el triángulo i−ésimo.16 %17 % SALIDAS.18 %19 % A [m] [2x2xn] Estructura de datos en la que cada submatriz A(:,:,i) es20 % la matriz de transformación afín del triángulo de referencia al triángulo21 % de trabajo, esto es, [x y]'=A(:,:,i)*[e nu]'+[x1 y1]'.22 %23 % b [m] [2xn] Matriz que en la columna i−ésima recoge las coordenadas x (en24 % la primera componente) e y (en la segunda componente) del primer vértice25 % del triángulo de trabajo, [x1 y1]'.26 %27 % J [m^2] [1xn] Vector que contiene en la componente i−ésima el jacobiano28 % que resulta de la transformación afín del triángulo i−ésimo al triángulo29 % de referencia.30 %31 % invA [1/m] [2x2xn] Estructura de datos en la cada submatriz32 % invA(:,:,i) es la matriz de transformación afín del triángulo i−ésimo al33 % triángulo de referencia, esto es, [e n]'=invA(:,:,i)*[x−x1 y−y1]'.34 %35 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36

37 % Primero se calcula el jacobiano.38 J=(X(2,:)−X(1,:)).*(Y(3,:)−Y(1,:))−(X(3,:)−X(1,:)).*(Y(2,:)−Y(1,:));39

40 % Se calculan las matrices A.41 A(1,1:2,:)=[X(2,:)−X(1,:);X(3,:)−X(1,:)];42 A(2,1:2,:)=[Y(2,:)−Y(1,:);Y(3,:)−Y(1,:)];43

44 % Se calculan las matrices inversas de A.45 invA(1,1,:)=[Y(3,:)−Y(1,:)]./J;46 invA(1,2,:)=[−(X(3,:)−X(1,:))]./J;47 invA(2,1,:)=[−(Y(2,:)−Y(1,:))]./J;48 invA(2,2,:)=[X(2,:)−X(1,:)]./J;49

164

Page 185: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 % Se calculan los vectores b.51 b=[X(1,:);Y(1,:)];

165

Page 186: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 6: coeficua.m: Programa para obtener los coeficientes de las funciones base escalarescuadráticas en el triángulo de referencia.

1 function c=coeficua(i)2 %3 % DESCRIPCIÓN.4 %5 % Función que devuelve los coeficientes c de la función base escalar6 % cuadrática i−ésima sobre el triángulo de referencia,7 %8 % phi_i=c(1)+c(2)*xi+c(3)*eta+c(4)*xi^2+c(5)*eta^2+c(6)*xi*eta.9 %

10 % ENTRADAS.11 %12 % i [−] [1x1] Número de la función base escalar cuadrática sobre el13 % triángulo de referencia.14 %15 % SALIDAS.16 %17 % c [−] [6x1] Vector que contiene los coeficientes de la función base18 % escalar cuadrática i−ésima.19 %20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21

22 C=[1 −3 −3 2 2 4;...23 0 −1 0 2 0 0;...24 0 0 −1 0 2 0;...25 0 4 0 −4 0 −4;...26 0 0 0 0 0 4;...27 0 0 4 0 −4 −4];28

29 c=C(i,:)';

166

Page 187: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 7: coefilin.m: Programa para obtener los coeficientes de las funciones base escalareslineales en el triángulo de referencia .

1 function c=coefilin(i)2 %3 % DESCRIPCIÓN.4 %5 % Función que devuelve los coeficientes c de la función base escalar6 % lineal i−ésima sobre el triángulo de referencia,7 %8 % phi_i=c(1)+c(2)*xi+c(3)*eta.9 %

10 % ENTRADAS.11 %12 % i [−] [1x1] Número de la función base escalar lineal sobre el triángulo13 % de referencia.14 %15 % SALIDAS.16 %17 % c [−] [6x1] Vector que contiene los coeficientes de la función base18 % escalar lineal i−ésima.19 %20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21

22 C=[1 −1 −1;...23 0 1 0;...24 0 0 1];25

26 c=C(i,:)';

167

Page 188: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 8: comparti.m: Programa que sirve para obtener un vector que en la componente i-ésimacontiene el índice de la función base de un elemento K ′ (que comparte un lado con el elementoK) que vale lo mismo en cualquier punto del lado compartido que la función base i-ésima delelemento K.

1 function k2=comparti(j,c)2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para obtener un vector que en la componente i−ésima6 % contiene el índice de la función base de un elemento K' (que comparte un7 % lado con el elemento K) que vale lo mismo en cualquier punto del lado8 % compartido que la función base i−ésima del elemento K.9 %

10 % ENTRADAS.11 %12 % j [−] [1x1] Lado del elemento K.13 %14 % c [−] [1x1] Lado del elemento K'.15 %16 % SALIDAS.17 %18 % k2 [−] [1x3] Vector de 3 componentes. La componente i−ésima contiene el19 % índice de la función base de un elemento K' que vale lo mismo en20 % cualquier punto del lado compartido que la función base i−ésima del21 % elemento K.22 %23 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24

25 % Casuística.26 if j==1,27 if c==1,28 k2=[1 3 2];29 else30 if c==2,31 k2=[2 1 3];32 else33 k2=[3 2 1];34 end35 end36 else37 if j==2,38 if c==1,39 k2=[2 1 3];40 else41 if c==2,42 k2=[3 2 1];43 else44 k2=[1 3 2];45 end46 end47 else

168

Page 189: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

48 if c==1,49 k2=[3 2 1];50 else51 if c==2,52 k2=[1 3 2];53 else54 k2=[2 1 3];55 end56 end57 end58 end

169

Page 190: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 9: delhn.m: Programa para realizar tantos refinamientos verdes en aquellos elementoscon nodos colgantes de tipo 1 y 2 como sea necesario para que la partición termine por nocontener ninguno.

1 function [T,z,isn,Cneu,zdir,zdesp,info,padres,lista]=delhn(T,z,isn,Cneu,zdir,zdesp,info,padres)

2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para realizar tantos refinamientos verdes en aquellos6 % elementos con nodos colgantes como sea necesario para que la partición7 % termine por no contener ninguno.8 %9 % ENTRADAS.

10 %11 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la12 % partición del dominio. La columna j−ésima recoge en sus tres primeras13 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres14 % últimas los índices de los nodos situados en los puntos medios de cada15 % lado (4, 5 y 6) del triángulo j−ésimo.16 %17 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna18 % j−ésima recoge la coordenada x del nodo en la primera componente y la19 % coordenada y en la segunda del nodo de índice j.20 %21 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de22 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,23 % segunda y tercera componente respectivamente ordenados en sentido24 % antihorario.25 %26 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz27 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y28 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio29 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.30 %31 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice32 % del nodo Dirichlet i−ésimo.33 %34 % zdesp [m] [2xnzdir] Matriz que recoge en la columna i−ésima el35 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y36 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.37 %38 % info [−] [1xnz] Vector que en la componente i−ésima contiene un 1 si el39 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo40 % i−ésimo pertenece al interior del dominio.41 %42 % padres [−] [1xn] Vector que recoge en la componente i−ésima el índice43 % del triángulo de la malla primera de la que proviene el elemento i−ésimo44 % de la malla segunda. En caso de no poseer ningún padre (por no ser un45 % elemento subdividido), la componente i−ésima será nula.46 %47 % SALIDAS.

170

Page 191: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

48 %49 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la50 % partición del dominio. La columna j−ésima recoge en sus tres primeras51 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres52 % últimas los índices de los nodos situados en los puntos medios de cada53 % lado (4, 5 y 6) del triángulo j−ésimo.54 %55 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna56 % j−ésima recoge la coordenada x del nodo en la primera componente y la57 % coordenada y en la segunda del nodo de índice j.58 %59 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de60 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,61 % segunda y tercera componente respectivamente ordenados en sentido62 % antihorario.63 %64 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz65 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y66 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio67 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.68 %69 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice70 % del nodo Dirichlet i−ésimo.71 %72 % zdesp [m] [2xnzdir] Matriz que recoge en la columna i−ésima el73 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y74 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.75 %76 % info [−] [1xnz] Vector que en la componente i−ésima contiene un 1 si el77 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo78 % i−ésimo pertenece al interior del dominio.79 %80 % padres [−] [1xn] Vector que recoge en la componente i−ésima el índice81 % del triángulo de la malla primera de la que proviene el elemento i−ésimo82 % de la malla segunda. En caso de no poseer ningún padre (por no ser un83 % elemento subdividido), la componente i−ésima será nula.84 %85 % lista [−] [1xR] Vector que recoge en cada componente el índice de un86 % elemento hijo creado durante la eliminación de los nodos colgantes.87 %88 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%89

90 % Primero se analiza la existencia o no de nodos colgantes.91 hn=[];92 c=1;93 for i=1:size(z,2), % Bucle de nodos.94 % Se comprueba si existen nodos colgantes. Si existiesen, aparecerían95 % en un mismo lado (que es compartido), nodos que serían vértices de96 % ciertos elementos y como nodos en semilados de otro (tipo 1) y otros97 % que sólo aparecen en una columna de T (tipo 2) (que aparentemente98 % pertenecen a un sólo elemento). Se detectan únicamente los del tipo99 % 1, ya que la existencia de nodos colgantes del primer tipo revela la

171

Page 192: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

100 % existencia de nodos de segundo tipo sobre el mismo lado.101 [ps,qs]=find(i==T(1:3,:));102 [pi,qi]=find(i==T(4:6,:));103 if size(qs,1)~=0 && size(qi,1)~=0,104 % Se guarda en hn si el nodo es colgante de tipo 1.105 hn(c)=i;106 % Se guarda en qhn el elemento que lo posee como nodo en semilado107 % para practicarle un refinamiento verde.108 qhn(c)=qi;109 c=c+1;110 end111 end112

113 % Mientras sigan existiendo nodos colgantes se repite la operación de114 % refinado.115 lista=[];116 while size(hn,2)~=0,117 % Se eliminan los triángulos que aparezcan repetidos.118 [qhn,Y]=sort(qhn); hn=hn(Y);119 t=[];120 c=1;121 for p=1:length(qhn)−1,122 if qhn(p)==qhn(p+1),123 t(c)=p+1;124 c=c+1;125 end126 end127 qhn(t)=[]; hn(t)=[];128

129 % Se realiza el refinamiento verde sobre los elementos marcados.130 nold=size(T,2);131 ladm=ladomayor(T,z);132 [T,z,isn,Cneu,zdir,zdesp,info,padres]=bisectri(T,z,isn,Cneu,zdir,zdesp,

info,qhn,ladm(qhn),padres);133

134 % Se guardan los elementos refinados en cada iteración.135 ve=[qhn,nold+1:size(T,2)];136 lista((length(lista)+1):(length(lista)+length(ve)))=ve;137

138 % Se eliminan la información relativa a los nodos colgantes.139 hn=[];140 qhn=[];141

142 % Se comprueba de nuevo la existencia de nodos colgantes en la malla143 % igual que se explicó al principio del programa.144 c=1;145 for i=1:size(z,2), % Bucle de nodos.146 [ps,qs]=find(i==T(1:3,:));147 [pi,qi]=find(i==T(4:6,:));148 if size(qs,1)~=0 && size(qi,1)~=0,149 hn(c)=i;150 qhn(c)=qi;

172

Page 193: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

151 c=c+1;152 end153 end154 end155

156 % Se eliminan los elementos repetidos de lista.157 lista=sort(lista);158 t=[];159 c=1;160 for p=1:length(qhn)−1,161 if qhn(p)==qhn(p+1),162 t(c)=p+1;163 c=c+1;164 end165 end166 lista(t)=[];

173

Page 194: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 10: delinacua.m: Programa que permite redefinir las matrices T , z y N dadas paraelementos lineales y adaptarlas a elementos cuadráticos.

1 function [T,z,isn]=delinacua(T,z,isn)2 %3 % DESCRIPCIÓN.4 %5 % Programa que permite redefinir las matrices T, z e isn dadas para6 % elementos lineales y adaptarlas a elementos cuadráticos. Así, a T le7 % añade las tres filas propias de los puntos medios de cada triángulo, a la8 % matriz z le añade las coordenadas de tantos nodos nuevos como sean9 % necesarios y a isn le pasa la segunda fila a la tercera y reescribe la

10 % segunda para añadirle los nodos medios de los lados Neumman.11 %12 % ENTRADAS.13 %14 % T [−] [3xn] Matriz de vértices de los triángulos de la partición del15 % dominio. La columna j−ésima recoge en sucomponente 1, 2 y 3 los índices16 % de los nodos vértices 1, 2 y 3 respectivamente del triángulo j−ésimo.17 %18 % z [m] [2xnz] Matriz de coordenadas de nodos vértices del problema. La19 % columna j−ésima recoge la coordenada x del nodo j−ésimo en la primera20 % componente y la coordenada y en la segunda.21 %22 % isn [−] [2xnisn] Matriz que contiene en la columna j−ésima los índices de23 % los nodos inicial y final del lado Neumman j−ésimo en la primera y24 % segunda componente respectivamente ordenados en sentido antihorario.25 %26 % SALIDAS.27 %28 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la29 % partición del dominio. La columna j−ésima recoge en sus tres primeras30 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres31 % últimas los índices de los nodos situados en los puntos medios de cada32 % lado (4, 5 y 6) del triángulo j−ésimo.33 %34 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna35 % j−ésima recoge la coordenada x del nodo en la primera componente y la36 % coordenada y en la segunda del nodo de índice j.37 %38 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de39 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,40 % segunda y tercera componente respectivamente ordenados en sentido41 % antihorario.42 %43 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44

45 % Se toman las columnas de las matrices de entrada.46 n=size(T,2);47 nz=size(z,2);48 nneu=size(isn,2);49

174

Page 195: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 % Se añaden las tres filas a la matriz T (más tarde se completarán).51 T=[T;zeros(3,n)];52

53 for i=1:n, % Bucle de triángulos.54 % Se crea una matriz I igual a la matriz T inicial pero en la cuarta55 % fila se copia la primera para poder hacer los cálculos56 % computacionalmente más económicos.57 I=[T(1:3,i);T(1,i)];58

59 % Se calculan los puntos medios.60 pm=(z(:,I(1:3))+z(:,I(2:4)))/2;61

62 for j=1:3, % Bucle de puntos medios (4, 5 y 6).63 % Se comienza a buscar si exite algún punto ya definido con la64 % misma coordenada x.65 ix=find(z(1,:)==pm(1,j));66 if isempty(ix),67 % Si no existe, el punto medio que se está tratando aún no está68 % incluido en la matriz z, así que se amplía.69 z=[z,pm(:,j)];70 nz=nz+1;71 T(3+j,i)=nz;72 else73 % Existe uno o varios puntos con la misma coordenada x, así que74 % comienza a buscarse si comparten también la coordenada y con75 % estos puntos.76 iy=find(z(2,ix)==pm(2,j));77 if isempty(iy)78 % Este conjutno de puntos compartía la coordenada x pero no79 % comparte ninguno de ellos la coordenada x, así que se80 % añade a la matriz z.81 z=[z,pm(:,j)];82 nz=nz+1;83 T(3+j,i)=nz;84 else85 % Debido a que ya existe un punto definido con esa misma86 % coordenada x e y, no se aumenta la matriz z y sólo se87 % incluye ese vértice en el triángulo i.88 T(3+j,i)=ix(iy);89 end90 end91 end92 end93

94 % Ya están ampliadas las matrices T y z. Es turno de la matriz isn.95

96 % En primer lugar se copia la segunda fila a la tercera.97 isn(3,:)=isn(2,:);98

99 % A cada lado Neumman se le busca el punto medio y se añade a la segunda100 % fila de isn.101 for k=1:nneu, % Bucles de lados Neumman.

175

Page 196: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

102 isn(2,k)=buscacoluex(z,.5*(z(:,isn(1,k))+z(:,isn(3,k))));103 end

176

Page 197: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 11: derifi.m: Programa para calcular las derivadas parciales de las funciones base.1 function [derifix,derifiy]=derifi(e,n,invA)2 %3 % DESCRIPCIÓN.4 %5 % Función que calcula la derivadas parciales de las seis funciones base6 % escalares cuadráticas en un cierto punto del triángulo de trabajo dadas7 % las coordenadas xi y eta que tendría ese cierto punto al hacer la8 % transformación afín al triángulo de referencia y la matriz9 % [x2−x1 x3−x1;y2−y1 y3−y1]^−1 de la transformación afín.

10 %11 % ENTRADAS.12 %13 % e [−] [1x1] Coordenada xi del punto en el triángulo de referencia.14 %15 % n [−] [1x1] Coordenada eta del punto en el triángulo de referencia.16 %17 % invA [1/m] [2x2] Matriz de transformación afín del triángulo de trabajo18 % al triángulo de referencia, esto es, [e n]'=invA(:,:)*[x−x1 y−y1]'.19 %20 % SALIDAS.21 %22 % derifix [1/m] [6x1] Vector que contiene en la componente i−ésima el23 % valor de la derivada con respecto a x de la función base i−ésima en el24 % triángulo de trabajo.25 %26 % derifiy [1/m] [6x1] Vector que contiene en la componente i−ésima el27 % valor de la derivada con respecto a y de la función base i−ésima en el28 % triángulo de trabajo.29 %30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31

32 % Primero se calcula las derivadas de las funciones phi con respecto a xi y33 % eta.34 dNde=[−3+4*e+4*n; 4*e−1; 0; 4−8*e−4*n; 4*n; −4*n];35 dNdn=[−3+4*e+4*n; 0; 4*n−1; −4*e; 4*e; 4−4*e−8*n];36

37 % Se aplica la regla de la cadena para obtener las derivadas de las38 % funciones phi con respecto a xi y eta.39 derifix=dNde*invA(1,1)+dNdn*invA(2,1);40 derifiy=dNde*invA(1,2)+dNdn*invA(2,2);

177

Page 198: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 12: distintos.m: Programa para saber qué valores de una matriz A (de dimensiones2× n) no están repetidas un número par veces.

1 function c=distintos(A)2 %3 % DESCRIPCIÓN.4 %5 % Programa para saber qué valores de una matriz A (de dimensiones 2xn) no6 % están repetidos un número par de veces.7 %8 % ENTRADAS.9 %

10 % A [−] [2xn] Matriz de la que se quiere saber qué valores no están11 % repetidos un número par de veces.12 %13 % SALIDAS.14 %15 % c [−] [1xr] Vector que contiene todas los valores de la matriz A que no16 % están repetidos un número par de veces. En caso de que todos los valores17 % estén repetidos un número par de veces, c=0.18 %19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20

21 % Comenzamos asignando c=0 por si todas las componentes de A estuviesen22 % repetidas un número par de veces.23 c=0;24

25 % Contador.26 con=1;27

28 % Se transforma la matriz A a un vector M.29 M=[A(1,:), A(2,:)];30

31 % Se comprueba la repetición componente a componente.32 while length(M)>0,33 % Se busca si esa componente está repetida dos veces.34 a=find(M==M(1));35 if length(a)~=2,36 % Si no lo está, se toma nota en el vector c.37 c(con)=M(a(1));38 con=con+1;39 end40 % Se elimina la componente analizada.41 M(a)=[];42 end

178

Page 199: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 13: efadapt_ar.m: Programa para llevar a cabo el proceso de refinamiento adaptativoen problemas de deformación plana usando el algoritmo de Ainsworth-Rankin para estimar loserrores a posteriori.

1 function []=efadapt_ar(E,nu,T,z,isn,Cneu,zdir,zdesp,fpuv,conjm,tmax,e0,vT,pruebaflujos,solhf,ithf)

2 %3 % DESCRIPCIÓN.4 %5 % Programa para llevar a cabo el proceso de refinado adaptativo en6 % problemas de deformación plana usando el algoritmo de Ainsworth−Rankin7 % para estimar los errores a posteriori. El proceso iterativo para cuando8 % se alcanza el número máximo de iteraciones o la cota superior de la norma9 % de la energía del error en desplazamientos sobre el dominio es menor que

10 % la tolerancia prefijada.11 %12 % Se exponen también ciertas gráficas relativas al proceso así como de la13 % geometría final alcanzada.14 %15 % No se consideran lados fronteras con condiciones de contorno mixtas. Sólo16 % se consideran variaciones de las cargas y desplazamientos polinómicas17 % y cuadráticas a lo sumo sobre cada lado de la frontera de la partición.18 %19 % ENTRADAS.20 %21 % E [N/m^2] [1x1] Módulo elástico del sólido.22 %23 % nu [−] [1x1] Módulo de Poisson del sólido.24 %25 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la26 % partición del dominio. La columna j−ésima recoge en sus tres primeras27 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres28 % últimas los índices de los nodos situados en los puntos medios de cada29 % lado (4, 5 y 6) del triángulo j−ésimo.30 %31 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna32 % j−ésima recoge la coordenada x del nodo en la primera componente y la33 % coordenada y en la segunda del nodo de índice j.34 %35 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de36 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,37 % segunda y tercera componente respectivamente ordenados en sentido38 % antihorario.39 %40 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz41 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y42 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio43 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.44 %45 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice46 % del nodo Dirichlet i−ésimo.47 %

179

Page 200: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

48 % zdesp [m] [2xnzdir] Matriz que recoge en la columna i−ésima el49 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y50 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.51 %52 % @fpuv [f: R2 −> R2] [N/m^3] Función que para cada punto (x1,y1) devuelve53 % la fuerza por unidad de volumen f(x1,y1).54 %55 % conjm [−] [1x1] Variable que debe valer 1 si se desea emplear el56 % estimador escogiendo los coeficientes de manera óptima, en caso de que57 % se desee hacer m_i,K=0, la variable debe tomar el valor 0.58 %59 % tmax [−] [1x1] Número máximo de iteraciones permitidas en el proceso de60 % refinamiento.61 %62 % e0 [N^(1/2)] [1x1] Tolerancia de la cota de la norma de energía de los63 % errores en desplazamientos. En caso de obtener e<=e0, no se prosigue con64 % el refinamiento.65 %66 % vT [−] [3x1] Vector que ayuda a omitir cálculos cuando son innecesarios.67 % La componente i−ésima debe ser un 0 si se desea establecer el término68 % i−ésimo de Phi_K^(i) en el algoritmo de Ainsworth−Rankin igual a 0 de69 % antemano. Debe contener cualquier otro valor para que se realicen los70 % cálculos pertinentes.71 %72 % pruebaflujos [−] [1x1] Variable que debe valer 1 en caso en el que se73 % quiera realizar las pruebas pertinentes para verificar que los flujos74 % están bien calculados. En caso de que no se deseen realizar, fijar a 0.75 %76 % solhf [−] [1x1] Variable que debe valer 1 en el caso en el que se quiera77 % obtener la solución hiperfina del problema y los estudios comparativos78 % con los refinamientos sucesivos. Debe valer 0 en caso contrario.79 %80 % ithf [−] [1x1] Número de refinamientos rojos sucesivos sobre la malla81 % inicial para la generación de la malla hiperfina.82 %83 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%84

85 % Entes geométricos del mallado inicial.86 Mallado='Mallado';87

88 % Se comienza creando el vector i, cuya componente i−ésima vale 1 si el89 % nodo i−ésimo está sobre la frontera del dominio.90 [info]=informacion(T,z);91

92 % Se halla cuáles son los nodos vértices exteriores vecinos a cada nodo93 % vértice exterior.94 ex=exteriores(T,z,info);95

96 % Se halla el resto de entes. geométricos.97 [ctd,tg,nm,lado,hk,area,J,ver,A,vb,invA,ladm]=geometria(T,z);98

99 % Comienza el proceso iterativo.

180

Page 201: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

100 t=1;101 e=e0+1;102 while t<=tmax && sum(e)>e0,103 disp(['Estimación ', num2str(t),' de ',num2str(tmax)])104 tic105 disp(' F=Ku')106 % Se resuelve el problema de deformación plana con el mallado más107 % actual.108 [u,Se,St,ladon,Tn,costo(t),Cneu2]=fem_pd(E,nu,T,z,isn,Cneu,zdir,zdesp,

fpuv,tg,nm,lado,J,invA);109 % Se guarda el mallado inicial110 nombre=strcat([Mallado,num2str(t)]);111 save(nombre,'T','z','isn','Cneu','zdir','zdesp','info','u');112

113 m(1,t)=toc;114 tic115 disp(' Estimador')116 % Se obtienen las cotas de la norma de la energía de los errores en117 % desplazamientos.118 [e,PHI,PSI,T1,T2,T3,T4,T5]=ar(E,nu,T,z,isn,Cneu,zdir,fpuv,u,conjm,Se,ctd,

tg,nm,lado,hk,area,J,info,ex,ver,invA,ladon,Tn,Cneu2,vT,pruebaflujos);119

120 % Se guardan matricialmente (se añade una columna en cada iteración).121 se(1:length(e),t)=e;122 ce(t)=length(e);123 m(2,t)=toc;124 sume(t)=sum(e);125 tic126 disp(' Refinamiento')127

128 % Proceso de refinado mediante el bulk criterion.129 [T,z,isn,Cneu,zdir,zdesp,info,ex,lista,lista2,e2s,x,suma,e2total,padres]=

refinamiento(T,z,isn,e,Cneu,zdir,zdesp,info);130

131 nombre=strcat([Mallado,num2str(t+1)]);132 save(nombre,'T','z','isn','Cneu','zdir','zdesp','info');133

134 % Se guarda la lista de elementos refinados en una matriz.135 slista(1:length(lista),t)=lista;136 clista(t)=length(lista);137

138 % Se guarda la información sobre los padres en una matriz.139 spadres(1:length(padres),t+1)=padres;140 cpadres(t+1)=length(padres);141

142 % Se halla el módulo de los e de los elementos subdivididos mediante143 % refinamiento rojo con respecto al de su padre.144 if t>=2,145 parametro(1:ce(t−1),t)=0;146 for j=1:ce(t−1);147 for i=1:ce(t);148 if spadres(i,t)==j,

181

Page 202: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

149 parametro(j,t)=parametro(j,t)+se(i,t)^2;150 end151 end152 end153 parametro(:,t)=sqrt(parametro(:,t));154 scociente(1:ce(t−1),t)=se(1:ce(t−1),t−1)./parametro(:,t);155

156 ccociente(t)=0;157 p=1;158 while p<=ce(t−1),159 if scociente(p,t)==0 || scociente(p,t)==Inf,160 p=ce(t−1);161 else162 ccociente(t)=ccociente(t)+1;163 end164 p=p+1;165 end166 end167

168 % Se hallan los entes geométricos de la nueva malla.169 [ctd,tg,nm,lado,hk,area,J,ver,A,vb,invA,ladm]=geometria(T,z);170

171 m(3,t)=toc;172 m(4,t)=sum(m(:,t));173

174 % Se toma nota de los grados de libertad de la malla.175 gdl(t)=2*size(z,2);176

177 t=t+1;178 end179 t=t−1;180

181 disp('Post−procesado')182

183 % Se calculan los desplazamientos del prbolema usando el último mallado.184 [u,Sp,St,ladon,Tn,costo(t),Cneu2]=fem_pd(E,nu,T,z,isn,Cneu,zdir,zdesp,fpuv,tg

,nm,lado,J,invA);185 nombre=strcat([Mallado,num2str(t+1)]);186 save(nombre,'T','z','isn','Cneu','zdir','zdesp','info','u');187

188

189 % Se muestra el mallado inicial y final con las condiciones de contorno y190 % las fuerzas por unidad de volumen.191 figure,192 xlabel('x','FontSize',20)193 ylabel('y','FontSize',20)194 title('Mallado inicial y condiciones de contorno','FontSize',20)195 nombre=strcat([Mallado,num2str(1)]); load(nombre);196 problema(T,z,isn,Cneu,zdir,zdesp,fpuv)197 nombre=strcat([Mallado,num2str(t+1)]); load(nombre);198 axis equal199

182

Page 203: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

200 figure,201 xlabel('x','FontSize',20)202 ylabel('y','FontSize',20)203 title('Mallado final y condiciones de contorno','FontSize',20)204 problema(T,z,isn,Cneu,zdir,zdesp,fpuv)205 axis equal206

207 % Se muestra la geometría final indeformada y deformada en un mismo208 % gráfico.209 figure,hold on, plottrl(T,z,2);210 xlabel('x','FontSize',20)211 ylabel('y','FontSize',20)212 title('Geometría final indeformada (azul) y deformada (rojo)','FontSize',20)213 for i=1:size(z,2);214 z2(:,i)=z(:,i)+u(:,i);215 end216 plottrl(T,z2,1);217

218 axis equal219 axis([min(z2(1,:)),max(z2(1,:)) , min(z2(2,:)) ,max(z2(2,:)) ]),220

221 % Representamos la evolución del mallado.222 if floor(sqrt(t))==sqrt(t),223 sqt=sqrt(t);224 else225 sqt=floor(sqrt(t)+1);226 end227

228 for i=1:t,229 subplot(sqt,sqt,i),230 title(['Iteración ',num2str(i)],'FontSize',10)231 nombre=strcat([Mallado,num2str(i)]); load(nombre);232

233 plottrl(T,z,2)234 axis equal235 axis([min(z(1,:)),max(z(1,:)) , min(z(2,:)) ,max(z(2,:)) ]),236 end237

238 % Se muestra sólo la geometría final indeformada con los últimos239 % refinamientos en rojo.240 figure,clf,hold on,241 nombre=strcat([Mallado,num2str(t+1)]); load(nombre);242 plottrl(T,z,1);243 nombre=strcat([Mallado,num2str(t)]); load(nombre);244 plottrl(T,z,2);245 nombre=strcat([Mallado,num2str(t+1)]); load(nombre);246 xlabel('x','FontSize',20)247 ylabel('y','FontSize',20)248 title('Geometría final','FontSize',20)249 axis equal250 axis([min(z(1,:)),max(z(1,:)) , min(z(2,:)) ,max(z(2,:)) ]),251

183

Page 204: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

252 % Se muestra la geometría final con los elementos en rojo si fueron253 % subdivididos mediante refinamiento rojo y en verde si fueron subdivividos254 % mediante refinamiento verde.255 figure,clf, hold on256 nombre=strcat([Mallado,num2str(t)]); load(nombre);257 marca(T,z,slista(1:clista(t),t),1)258 nombre=strcat([Mallado,num2str(t+1)]); load(nombre);259 marca(T,z,lista2,2)260 plottrl(T,z,2);261 nombre=strcat([Mallado,num2str(t)]); load(nombre);262 plottrl(T,z,3);263 nombre=strcat([Mallado,num2str(t+1)]); load(nombre);264 xlabel('x','FontSize',20)265 ylabel('y','FontSize',20)266 title('Elementos con refinamiento rojo y verde','FontSize',20)267 axis equal268 axis([min(z(1,:)),max(z(1,:)) , min(z(2,:)) ,max(z(2,:)) ]),269

270 % Se representa las tensiones normales y tangenciales en el contorno del271 % dominio.272 tenfro(E,nu,T,z,u,isn,Cneu,zdir,tg,nm,invA,lado)273

274 % Se muestra un gráfico con los valores de e^2 en los distintos elementos275 % ordenados de mayor a menor en la última iteración. También se representa276 % cuánto vale la mitad de la cota de la norma de la energía de los errores277 % en todo el dominio al cuadrado menos la cota en los R primeros elementos278 % (R variable). Se muestran en rojo aquellas cotas de aquellos elementos279 % que fueron marcados para refinar.280

281 figure,clf, subplot(2,1,1), hold on282 bar(1:clista(t),e2s(1:clista(t)),'r')283 if clista(t)~=length(e2s),284 bar(clista(t)+1:length(e2s),e2s(clista(t)+1:length(e2s)),'b')285 end286 legend('Marcados para refinar','No marcados para refinar')287 ylabel('|||e_s|||_K','FontSize',20)288 title('|||e_s|||_K ordenados de mayor a menor','FontSize',20)289

290 subplot(2,1,2), hold on291

292 for i=1:length(e2s)293 if i==1,294 acum(1)=e2s(1);295 else296 acum(i)=acum(i−1)+e2s(i);297 end298 end299

300 v=1:clista(t);301 bar(v,.5*e2total−acum(v),'r')302 v=clista(t)+1:length(e2s);303 bar(v,.5*e2total−acum(v))

184

Page 205: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

304

305 ylabel('0.5|||e_s|||_Omega´−sum_i=1^R|||e_s|||_i','FontSize',20)306 legend('Marcados para refinar','No marcados para refinar')307

308 % Se muestra la evolución de los grados de libertad en cada iteración.309 figure, grid on310 semilogy(1:t,gdl); hold on311 for l=1:t,312 semilogy(l,gdl(l),'x','LineWidth',2, 'MarkerSize',10)313 end314 grid on315 xlabel('Iteración','FontSize',20)316 ylabel('Grados de libertad','FontSize',20)317 title('Evolución del refinado','FontSize',20)318

319 % Se muestra la evolución de los e en cada iteración.320 figure, grid on321 semilogy(1:tmax,sume),hold on322 for l=1:t,323 semilogy(l,sume(l),'x','LineWidth',2, 'MarkerSize',10)324 end325 grid on326 xlabel('Iteración','FontSize',20)327 ylabel('|||e_s|||_\Omega´','FontSize',20)328 title('Cota de |||e|||_\Omega´ del problema','FontSize',20)329

330 % Se realizan los cálculos comparativos con malla hiperfina.331 if solhf==1,332 if conjm==1,333 a=0;334 else335 a=1;336 end337

338 disp('Malla hiperfina:')339 disp(' Obtención de la malla hiperfina')340 nombre=strcat([Mallado,num2str(1)]); load(nombre);341 Thf=T; zhf=z; isnhf=isn; Cneuhf=Cneu; zdirhf=zdir;zdesphf=zdesp; infohf=

info;342

343 % Se obtiene el mallado hiperfino.344 for i=1:ithf345 [Thf,zhf,isnhf,Cneuhf,zdirhf,zdesphf,infohf,padres]=tricon(Thf,zhf,

isnhf,Cneuhf,zdirhf,zdesphf,infohf,1:size(Thf,2));346 end347

348 % Se representa dicha malla hiperfina.349 figure,hold on, plottrl(Thf,zhf,2);350 xlabel('x','FontSize',20)351 ylabel('y','FontSize',20)352 title('Malla hiperfina','FontSize',20)353 axis equal

185

Page 206: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

354 axis([min(z2(1,:)),max(z2(1,:)) , min(z2(2,:)) ,max(z2(2,:)) ]),355

356 % Se resuelve en desplazamientos.357 disp(' Resolución en desplazamientos')358 [ctdhf,tghf,nmhf,ladohf,hkhf,areahf,Jhf,verhf,Ahf,vbhf,invAhf,ladmhf]=

geometria(Thf,zhf);359 [uhf,Sphf,Sthf,ladonhf,Tnhf,costohf,Cneu2hf]=fem_pd(E,nu,Thf,zhf,isnhf,

Cneuhf,zdirhf,zdesphf,fpuv,tghf,nmhf,ladohf,Jhf,invAhf);360

361 disp(' Cálculos comparativos')362 pe=[1/3 (6+sqrt(15))/21 (9−2*sqrt(15))/21 (6+sqrt(15))/21 (6−sqrt(15))/21

(9+2*sqrt(15))/21 (6−sqrt(15))/21; 1/3 (6+sqrt(15))/21 (6+sqrt(15))/21 (9−2*sqrt(15))/21 (6−sqrt(15))/21 (6−sqrt(15))/21 (9+2*sqrt(15))/21];

363

364 % Se compara con cada refinamiento realizado.365 for i=1:t+1366 nombre=strcat([Mallado,num2str(i)]);367 load(nombre);368

369 % Se interpolan los desplazamientos en cada nodo de la malla370 % hiperfina según la solución i−ésima del MEF.371 U=interdesp(zhf,z,T,u);372 erru=abs(U−uhf);373

374 % Se halla |||e||| como suma de |||e||| en cada elemento de la375 % malla hiperfina.376 for j=1:size(Thf,2);377 px(1:2,1:7,j)=refex(pe,zhf(:,Thf(1,j)),zhf(:,Thf(2,j)),zhf(:,Thf

(3,j)));378 [sigma,eps]=sigfunu(E,nu,px(1:2,1:7,j),Thf,zhf,invAhf(:,:,j),j,

erru);379 integrando(1:7,1)=sum(sum(sigma.*eps));380 ev(i,j)=Jhf(j)*inte(integrando,ones(7,1));381 end382

383 % Se calculan las cotas e que se habrían obtenido al tomar conjm384 % distinto al tomado. Nótese que los refinamientos se han realizado385 % según el valor inicial de conjm, y se toma ahora el valor opuesto386 % en cada mallado obtenido.387 [ctd,tg,nm,lado,hk,area,J,ver,A,vb,invA,ladm]=geometria(T,z);388 [u,Se,St,ladon,Tn,costo,Cneu2]=fem_pd(E,nu,T,z,isn,Cneu,zdir,zdesp,

fpuv,tg,nm,lado,J,invA);389 ex=exteriores(T,z,info);390 [e_2]=ar(E,nu,T,z,isn,Cneu,zdir,fpuv,u,a,Se,ctd,tg,nm,lado,hk,area,J,

info,ex,ver,invA,ladon,Tn,Cneu2,vT,pruebaflujos);391 e_2t(i)=sum(e_2);392 end393

394 % Se suman todas las integrales.395 for i=1:t,396 nee(i)=sum(ev(i,:));

186

Page 207: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

397 cnee(i)=sum(se(1:ce(i),i));398 end399

400 % Se representan los resultados.401 figure, hold on402

403 if conjm==1,404 bar(e_2t(1:t),'k')405 bar(cnee,'r')406 bar(nee,'b')407 legend('Cota de Ainsworth−Rankin con m_i,K=0','Cota de Ainsworth−

Rankin con m_i,K óptimo','|||e||| según malla hiperfina')408 else409 bar(cnee,'k')410 bar(e_2t(1:t),'r')411 bar(nee,'b')412 legend('Cota de Ainsworth−Rankin con m_i,K=0','Cota de Ainsworth−

Rankin con m_i,K óptimo','|||e||| según malla hiperfina')413 end414

415 grid on416 xlabel('Iteraciones','FontSize',20)417 ylabel('|||e|||_\Omega´','FontSize',20)418

419 % Se representan los resultados.420 figure, hold on421 bar((gdl/2)/size(zhf,2))422

423 grid on424 xlabel('Iteraciones','FontSize',20)425 ylabel('Nodos de malla i−ésima / Nodos de malla hiperfina','FontSize',14)426 end427

428 % Se muestran los tiempos computacionales en función de los grados429 % delibertad del problema.430 figure,431 c=['b','r','g','k'];432 for k=1:4,433 loglog(gdl,m(k,:),c(k)), hold on434 end435

436 grid on437 xlabel('Grados de libertad','FontSize',20)438 ylabel('Tiempo computacional [s]','FontSize',20)439 title('Tiempo computacional','FontSize',20)440

441 legend('Resolución en desplazamientos','Resolución estimador','Refinamiento yentes geométricos','Tiempo total','Location','NorthWest')

442

443 for k=1:4,444 for l=1:t,445 loglog(gdl(l),m(k,l),['x',c(k)],'LineWidth',2, 'MarkerSize',10),

187

Page 208: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

hold on446 end447 end

188

Page 209: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 14: estudio.m: Archivo para ejecutar el problema del trapecio. (Problema de memebranade Cook incluido por si resulta de interés).

1 % Álvaro Fernández Naval. [email protected]

3 % Ejemplos de problemas para aplicar el proceso de refinamiento adaptativo4 % usando el algoritmo de Ainsworth−Rankin para la estimación de errores a5 % posteriori.6

7 close all, clear, clc8

9 % Máximo numero de iteraciones en el refinamiento y tolerancia.10 maxt=16;11 e0=0;12

13 % Selección del número de problema.14 Problema=1;15

16 % Si se desea realizar la prueba de verificación de que los flujos están17 % bien calculados, establecer pruebaflujos=1. En caso no desear realizar la18 % prueba establecer pruebaflujos=0.19 pruebaflujos=1;20

21 % Si se desea emplear el estimador escogiendo los coeficientes de manera22 % óptima, establecer conjm=1, en caso de que se desee tomar m_i=0 en todos23 % los triángulos, establecer conjm=0.24 conjm=1;25

26 % Si se desea otener la solución hiperfina del problema y los estudios27 % comparativos con los refinamientos sucesivos, establecer solhf=1.28 % Establecer solhf=0 en caso contrario.29 solhf=1;30 ithf=6;31

32 % Problemas.33

34 % Problema propuesto 1.35 if Problema==136 E=2900;37 nu=0.3;38

39 T=[1 1 2 3 3;6 2 3 5 4; 7 6 6 6 5];40 z=[0 1 2 3 2 1 0;0 0 0 0 1 1 1];41 isn=[1 2 3 4 5;2 3 4 5 6];42

43 [T,z,isn]=delinacua(T,z,isn);44

45 Cneu(:,:,1)=zeros(2,3);46 Cneu(:,:,2)=zeros(2,3);47 Cneu(:,:,3)=[0 0 0; 1 2 3];48 Cneu(:,:,4)=zeros(2,3);49 Cneu(:,:,5)=zeros(2,3);

189

Page 210: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50

51 zdir=[1 10 7 9 6 ];52 zdesp=zeros(2,5);53

54 vT=[1 1 1]';55

56 end57

58 % Problema propuesto 2: Membrana de Cook.59 if Problema==2,60 E=2900;61 nu=0.3;62 % 1 2 3 4 5 6 7

8 9 10 1163 z=[0 15.848362624851603 28.792633962854122 39.364966539917589 48 48

35.969924812030079 20.330827067669176 0 0 12.994364731074981;...64 0 14.527665739447304 26.393247799282946 36.084552661591125 44 60

55.989974937343362 50.776942355889723 44 22 31.539571178924000 ];65

66 T=[1 2 10;2 3 11 ;3 4 8; 4 5 7 ;5 6 7;7 8 4;8 11 3;8 9 11;9 10 11; 10 211]';

67 isn=[1 2 3 4 5 6 7 8;2 3 4 5 6 7 8 9];68

69

70 Cneu(:,:,1)=zeros(2,3);71 Cneu(:,:,2)=zeros(2,3);72 Cneu(:,:,3)=zeros(2,3);73 Cneu(:,:,4)=zeros(2,3);74 Cneu(:,:,5)=[1 1 1; 0 0 0];75 Cneu(:,:,6)=zeros(2,3);76 Cneu(:,:,7)=zeros(2,3);77 Cneu(:,:,8)=zeros(2,3);78

79 [T,z,isn]=delinacua(T,z,isn);80

81 zdir=[1 14 10 30 9];82 zdesp=zeros(2,5);83

84 vT=[1 1 1]';85 end86

87 % Proceso de refinamiento adaptativo.88 efadapt_ar(E,nu,T,z,isn,Cneu,zdir,zdesp,@fpuv,conjm,maxt,e0,vT,pruebaflujos,

solhf,ithf);

190

Page 211: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 15: exteriores.m: Programa para obtener los nodos vértice exteriores vecinos a cada unode los nodos vértice exteriores de la partición.

1 function [ex]=exteriores(T,z,info)2 %3 % DESCRIPCIÓN.4 %5 % Programa para generar una matriz de tamaño 2xnz en la que cada columna6 % j−ésima contiene en cada componente los nodos vértice exteriores vecinos7 % al nodo de índice j en caso de que se trate de un nodo vértice exterior.8 % En caso de que se trate de un nodo interior o un nodo situado en el punto9 % medio de un lado, la columna j−ésima sería [0 0]'.

10 %11 % ENTRADAS.12 %13 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la14 % partición del dominio. La columna j−ésima recoge en sus tres primeras15 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres16 % últimas los índices de los nodos situados en los puntos medios de cada17 % lado (4, 5 y 6) del triángulo j−ésimo.18 %19 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna20 % j−ésima recoge la coordenada x del nodo en la primera componente y la21 % coordenada y en la segunda del nodo de índice j.22 %23 % info [−] [1xnz] Vector que en la componente i−ésima contiene un 1 si el24 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo25 % i−ésimo pertenece al interior del dominio.26 %27 % SALIDAS.28 %29 % ex [−] [2xnz] Matriz que en la columna j−ésima contiene los nodos30 % exteriores vértice vecinos al nodo de índice j en cada componente en caso31 % de que se trate de un nodo vértice exterior. En caso de que se trate de32 % un nodo interior o un nodo situado en el punto medio de un lado, la33 % columna j−ésima sería [0 0]'.34 %35 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36

37 % Se comienza tomando como una matriz nula de tamaño 2xnz.38 ex=zeros(2,size(z,2));39

40 % Se analiza cada nodo sólo si es vértice y exterior.41 P=[4 6;5 4;6 5];42 for i=1:size(z,2),43 [p,q]=find(T(1:3,:)==i);44 if size(p,1)~=0 && info(i)==1,45 % Sólo si es vértice y exterior.46 ex(1:2,i)=nodotri(T,i);47 end48 end

191

Page 212: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 16: fB.m: Programa para calcular las cantidades BKij,kl.

1 function B=fB(tau,etau,area)2 %3 % DESCRIPCIÓN4 %5 % Programa que permite el cálculo de una de las cantidades B^K_ij,kl en6 % función de la matrices tau y (E^−1 tau) y el área del triángulo de7 % trabajo.8 %9 % ENTRADAS.

10 %11 % tau [m^2] [3x3] Matriz tau,12 % tau(i,j)=.5|gamma_1|*|gamma2|*(t_i*t_j'+t_j*t_i').13 %14 % etau [m^4/N] [3x3] Matriz E^−1 tau.15 % E^−1 tau=1/(2mu)*(tau−lambda/(2*(lambda+mu))*trace(tau)*eye(2).16 %17 % area [m^2] [1x1] Área del triángulo sobre el que se calcula B.18 %19 % SALIDAS.20 %21 % B [1/N] [1x1] Cantidad B.22 %23 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24

25 B=(1/(area^3)).*sum(sum(etau.*tau));

192

Page 213: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 17: fem_pd.m: Programa para resolver un problema de deformación plana medianteelementos finitos cuadráticos.

1 function [u,Se,S,ladon,Tn,costo,Cneu2]=fem_pd(E,nu,T,z,isn,Cneu,zdir,zdesp,fpuv,tg,nm,lado,J,invA)

2 %3 % DESCRIPCIÓN.4 %5 % Algoritmo para resolver un problema de deformación plana mediante6 % elementos triangulares, funciones base cuadráticas y aproximación7 % conforme. No se admiten lados con condiciones mixtas, es decir, el8 % contorno debe estar formado exclusivamente por lados Neumman en los que9 % se prescriben las dos componentes de sigma·n o por lados Dirichlet en los

10 % que se prescriben los desplazamientos en direcciones x e y.11 %12 % ENTRADAS.13 %14 % E [N/m^2] [1x1] Módulo elástico del sólido.15 %16 % nu [−] [1x1] Módulo de Poisson del sólido.17 %18 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la19 % partición del dominio. La columna j−ésima recoge en sus tres primeras20 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres21 % últimas los índices de los nodos situados en los puntos medios de cada22 % lado (4, 5 y 6) del triángulo j−ésimo.23 %24 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna25 % j−ésima recoge la coordenada x del nodo en la primera componente y la26 % coordenada y en la segunda del nodo de índice j.27 %28 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de29 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,30 % segunda y tercera componente respectivamente ordenados en sentido31 % antihorario.32 %33 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz34 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y35 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio36 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.37 %38 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice39 % del nodo Dirichlet i−ésimo.40 %41 % zdesp [m] [2xnzdir] Matriz que recoge en la columna i−ésima el42 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y43 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.44 %45 % @fpuv [f: R2 −> R2] [N/m^3] Función que para cada punto (x1,y1) devuelve46 % la fuerza por unidad de volumen f(x1,y1).47 %48 % tg [−] [2x3xn] Estructura de datos en la que cada submatriz tg(:,:,i)

193

Page 214: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

49 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,50 % las coordenadas x e y de los vectores tangenciales unitarios en sentido51 % antihorario a los lados 1, 2 y 3 respectivamente.52 %53 % nm [−] [2x3xn] Estructura de datos en la que cada submatriz nm(:,:,i)54 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,55 % las coordenadas x e y de los vectores normales unitarios exteriores a los56 % lados 1, 2 y 3 respectivamente.57 %58 % lado [m] [3xn] Matriz que recoge en la columna i−ésima la longitud de los59 % lados 1, 2 y 3 del triángulo i−ésimo en la componente 1, 2 y 360 % respectivamente.61 %62 % J [m^2] [1xn] Vector que contiene en la componente i−ésima el jacobiano63 % que resulta de la transformación afín del triángulo i−ésimo al triángulo64 % de referencia.65 %66 % invA [m^−1] [2x2xn] Estructura de datos en la que cada submatriz67 % invA(:,:,i) es la matriz de transformación afín del triángulo i−ésimo al68 % triángulo de referencia, esto es, [e n]'=invA(:,:,i)*[x−x1 y−y1]'.69 %70 % SALIDAS.71 %72 % u [m] [2xnz] Matriz que en la columna j−ésima recoge, en la primera73 % componente el desplazamiento según el eje x y según el eje y en la74 % segunda, de la solución aproximada en desplazamientos en cada nodo del75 % problema de deformación plana resuelto mediante elementos finitos con76 % elementos cuadráticos.77 %78 % Se [N/m^2] [12*nx12] Matriz de rigidez por triángulos del problema de79 % deformaciones planas. Las matrices de rigidez elementales están80 % dispuestas verticalmente, es decir, la matriz Se(1:12,:) es la matriz81 % elemental del triángulo 1, la matriz Se(13:24,:) es la matriz82 % elemental del triángulo 2 y así sucesivamente.83 %84 % S [N/m^2] [2nzx2nz] Matriz de rigidez global del problema de deformación85 % plana antes de imponer los desplazamientos prescritos.86 %87 % ladon [−] [1xisn] Vector que en la componente i−ésima contiene un 1, 2 ó88 % 3 si el lado i−esimo Neumman es el lado 1, 2 ó 3 respectivamente del89 % elemento al que pertenece.90 %91 % Tn [−] [1xnisn] Vector que en la componente i−ésima, contiene el índice92 % del triángulo al que pertenece el lado Neumman i−ésimo.93 %94 % costo [s] [1x1] Tiempo computacional empleado en resolver el sistema tipo95 % Sp*u=pp.96 %97 % Cneu2 [N/m^2] [2x3xnisn] Similar a Cneu, en vez de tratar las cargas98 % tangencial y normalmente, las trata en dirección x e y. Cada submatriz99 % Cneu2(2,3,i) contiene la tensión en x (Cneu2(1,1:3,i)) e y

100 % (Cneu2(2,1:3,i)), en el punto inicial (Cneu2(1:2,1,i)), medio

194

Page 215: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

101 % (Cneu2(1:2,2,i)) y final (Cneu2(1:2,3,i)) del lado i−ésimo Neumman.102 %103 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%104

105 % Se exponen las matrices elementales.106 S1=[ 3 1 0 −4 0 0107 1 3 0 −4 0 0108 0 0 0 0 0 0109 −4 −4 0 8 0 0110 0 0 0 0 8 −8111 0 0 0 0 −8 8]/6;112

113 S3=[ 3 0 1 0 0 −4114 0 0 0 0 0 0115 1 0 3 0 0 −4116 0 0 0 8 −8 0117 0 0 0 −8 8 0118 −4 0 −4 0 0 8]/6;119

120 S12=[ 3 0 1 0 0 −4121 1 0 −1 −4 4 0122 0 0 0 0 0 0123 −4 0 0 4 −4 4124 0 0 4 −4 4 −4125 0 0 −4 4 −4 4]/6;126

127 S2=S12+S12';128

129 % Construcción de la matriz de rigidez.130

131 % Se comienza definiendo la matriz de rigidez por nodos como una matriz132 % nula dispersa de tamaño [2nzx2nz].133 S=sparse(1,1,0,2*size(z,2),2*size(z,2),36*size(z,2));134

135 % A partir de ahora se va a trabajar con las matrices de rigidez de tal136 % manera que sean económicamente computables, por lo que se reordenan los137 % términos de invA.138 invA2=reshape(invA,2,numel(invA)/2);139

140 % Se crean las matrices a, b, c, d y e para, más tarde, sumarlas141 % apropiadamente con la orden kron y generar que la matriz de rigidez por142 % elementos quede definida sin necesidad de ciclos.143 a(1,1:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*(invA2(1,1:2:size(

invA2,2)).^2+(1−(nu/(1−nu)))/2*invA2(1,2:2:size(invA2,2)).^2);144 a(1,2:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((1+(nu/(1−nu)))/2*

invA2(1,1:2:size(invA2,2)).*invA2(1,2:2:size(invA2,2)));145 a(2,1:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((1+(nu/(1−nu)))/2*

invA2(1,1:2:size(invA2,2)).*invA2(1,2:2:size(invA2,2)));146 a(2,2:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((1−(nu/(1−nu)))/2*

invA2(1,1:2:size(invA2,2)).^2+invA2(1,2:2:size(invA2,2)).^2);147

148 b(1,1:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*(invA2(1,1:2:size(

195

Page 216: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

invA2,2)).*invA2(2,1:2:size(invA2,2))+(1−(nu/(1−nu)))/2*invA2(1,2:2:size(invA2,2)).*invA2(2,2:2:size(invA2,2)));

149 b(1,2:2:size(invA2,2))=0;150 b(2,1:2:size(invA2,2))=0;151 b(2,2:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((1−(nu/(1−nu)))/2*

invA2(1,1:2:size(invA2,2)).*invA2(2,1:2:size(invA2,2))+invA2(1,2:2:size(invA2,2)).*invA2(2,2:2:size(invA2,2)));

152

153 c(1,1:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*(invA2(2,1:2:size(invA2,2)).^2+(1−(nu/(1−nu)))/2*invA2(2,2:2:size(invA2,2)).^2);

154 c(1,2:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((1+(nu/(1−nu)))/2*invA2(2,1:2:size(invA2,2)).*invA2(2,2:2:size(invA2,2)));

155 c(2,1:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((1+(nu/(1−nu)))/2*invA2(2,1:2:size(invA2,2)).*invA2(2,2:2:size(invA2,2)));

156 c(2,2:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((1−(nu/(1−nu)))/2*invA2(2,1:2:size(invA2,2)).^2+invA2(2,2:2:size(invA2,2)).^2);

157

158 d(1,1:2:size(invA2,2))=0;159 d(1,2:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((nu/(1−nu))*invA2

(1,1:2:size(invA2,2)).*invA2(2,2:2:size(invA2,2))+(1−(nu/(1−nu)))/2*invA2(2,1:2:size(invA2,2)).*invA2(1,2:2:size(invA2,2)));

160 d(2,1:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((1−(nu/(1−nu)))/2*invA2(1,1:2:size(invA2,2)).*invA2(2,2:2:size(invA2,2))+(nu/(1−nu))*invA2(2,1:2:size(invA2,2)).*invA2(1,2:2:size(invA2,2)));

161 d(2,2:2:size(invA2,2))=0;162

163 e(1,1:2:size(invA2,2))=0;164 e(1,2:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((1−(nu/(1−nu)))/2*

invA2(1,1:2:size(invA2,2)).*invA2(2,2:2:size(invA2,2))+(nu/(1−nu))*invA2(2,1:2:size(invA2,2)).*invA2(1,2:2:size(invA2,2)));

165 e(2,1:2:size(invA2,2))=(E/(1−nu^2))*J/(1−(nu/(1−nu))^2).*((nu/(1−nu))*invA2(1,1:2:size(invA2,2)).*invA2(2,2:2:size(invA2,2))+(1−(nu/(1−nu)))/2*invA2(2,1:2:size(invA2,2)).*invA2(1,2:2:size(invA2,2)));

166 e(2,2:2:size(invA2,2))=0;167

168 % Se computa la matriz de rigidez por elementos.169 Se=kron(a,S1)'+kron(b,S2)'+kron(c,S3)'+kron(d,S12)'+kron(e,S12')';170

171 % Se generan las matrices I y Z. Estas matrices miden lo mismo que la172 % matriz de rigidez por elementos y contienen en cada posición (i,j) los173 % índices (I(i,j),Z(i,j)) a los que se debe sumar ese término en la matriz174 % de rigidez por nodos.175

176 I=kron([T' T'+size(z,2)],ones(12,1));177 for i=1:size(I,1)/12,178 Z((1:12)+(i−1)*12,1:12)=I((1:12)+(i−1)*12,1:12)';179 end180

181 % Se hace un reshape para acondicionar las matrices a la orden sparse en la182 % que se consigue sumar todos los elementos de la matriz de rigidez por183 % elementos apropiadamente para obtener la matriz de rigidez por nodos.184 I=reshape(I,numel(I),[]);

196

Page 217: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

185 Z=reshape(Z,numel(J),[]);186

187 % Se computa la matriz de rigidez por nodos con una sola orden a partir de188 % I, Z y Sp.189 S=sparse(I,Z,reshape(Se,numel(Se),[]));190

191 % Construcción del vector de cargas.192

193 % En primer lugar se recoge a qué lados (1, 2 ó 3) [ladon] y a qué194 % triángulos [Tn] pertenece cada lado Neumman. Para más información del195 % proceso, ver trabisn.m.196 [ladon,Tn]=trabisn(isn,T);197

198 % En segundo lugar, se pasa de tensiones normales y tangenciales a199 % tensiones en x e y, es decir, se realiza un cambio de base en las cargas200 % impuestas de lados Neumman.201 Cneu2=orientacargas(Cneu,isn,ladon,Tn,tg,nm);202

203 % Se comienza definiendo como un vector nulo disperso de tamaño [1x2nz].204 p=sparse(1,1,0,2*size(z,2),1,2*(size(isn,2))−1);205

206 % Se definen los pesos de la regla de Simpson para la cuadratura.207 wp=[1 4 1]'/6;208 for k=1:size(isn,2), % Bucle de lados Neumman.209 % Para cada lado Neumman se suma, en las componentes referentes a la210 % dirección x e y del vector de cargas, lo que valga la integral211 % (ejecutada mediante Simpson) sobre el lado, de la función que vale212 % la carga impuesta en ese nodo (en x o y)213 % y cero en los otros dos del mismo lado.214 p(isn(1:3,k)) =p(isn(1:3,k)) +lado(ladon(k),Tn(k))*(

diag(Cneu2(1,:,k))*wp);215 p(isn(1:3,k)+size(z,2))=p(isn(1:3,k)+size(z,2))+lado(ladon(k),Tn(k))*(

diag(Cneu2(2,:,k))*wp);216 end217

218 % Se exponen los nodos de cubatura y los pesos que se van a usar.219 pe=[1/3 (6+sqrt(15))/21 (9−2*sqrt(15))/21 (6+sqrt(15))/21 (6−sqrt(15))/21

(9+2*sqrt(15))/21 (6−sqrt(15))/21; 1/3 (6+sqrt(15))/21 (6+sqrt(15))/21(9−2*sqrt(15))/21 (6−sqrt(15))/21 (6−sqrt(15))/21 (9+2*sqrt(15))/21];

220 w=[0.1125 (155+sqrt(15))/2400 (155+sqrt(15))/2400 (155+sqrt(15))/2400 (155−sqrt(15))/2400 (155−sqrt(15))/2400 (155−sqrt(15))/2400];

221

222 % La matriz N recoge en cada columna (de la primera a la sexta) lo que223 % vale cada función base escalar cuadrática en los puntos de cubatura. Por224 % ejmplo, el elemento N(3,5) contiene el valor de la función base225 % cuadrática 5 en el tercer nodo de cubatura.226 N=[ficua(1,pe), ficua(2,pe),ficua(3,pe),ficua(4,pe),ficua(5,pe),ficua(6,pe)

]';227

228 % Ahora se añaden las fuerzas por unidad de volumen al vector de cargas.229 for k=1:size(T,2), % Bucle de triángulos.230 % Primero se pasan los nodos de cubatura al triángulo sobre el que

197

Page 218: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

231 % trabajamos.232 px=refex(pe,z(:,T(1,k)),z(:,T(2,k)),z(:,T(3,k)));233 % Se calculan las fuerzas por unidad de volumen en estos puntos.234 fu(1:2,1:7)=fpuv(px);235 % Se integran en el área del triángulo para poder añadirlas al vector236 % de cargas.237 fe1=abs(J(k))*N*(fu(1,:).*w)';238 fe2=abs(J(k))*N*(fu(2,:).*w)';239 % Una vez integradas, se añaden al vector de cargas.240 p(T(:,k))=p(T(:,k))+fe1;241 p(T(:,k)+size(z,2))=p(T(:,k)+size(z,2))+fe2;242 end243

244 % Modificación de la matriz de rigidez y vector de cargas: se imponen los245 % desplazamientos Dirichlet.246 Sp=S;247 pp=p;248

249 for k=1:size(zdir,2), % Bucle de nodos Dirichlet.250 % Si el nodo i tiene los desplazamientos prescritos, se cambia en251 % primer lugar los valores de la carga x e y en ese nodo por los252 % desplazamientos prescritos x e y. Por otro lado, a la matriz de253 % rigidez se le anulan las dos filas afectadas por la prescripción de254 % los desplazamientos y se deja un 1 en la diagonal para que al255 % resolver el sistema Su=f, el desplazamiento de ese nodo coincida con256 % el impuesto (en direcciones x e y).257

258 pp(zdir(1,k))=zdesp(1,k);259 Sp(zdir(1,k),:)=zeros(1,2*size(z,2));260 Sp(zdir(1,k),zdir(1,k))=1;261

262 pp(zdir(1,k)+size(z,2))=zdesp(2,k);263 Sp(zdir(1,k)+size(z,2),:)=zeros(1,2*size(z,2));264 Sp(zdir(1,k)+size(z,2),zdir(1,k)+size(z,2))=1;265 end266

267 % Resolución del sistema S'u=p'.268

269 % En primer lugar se dispone el tiempo inicial para hallar el costo270 % computacional. Después se resuelve el sistema, y finalmente se toma el271 % tiempo al finalizar el proceso para poder obtener el costo.272 se=cputime;273 w=Sp\pp;274 costo=cputime−se;275

276 % Para obtener los desplazamientos de la forma requerida, se manipulan los277 % datos obtenidos de la resolución.278 u(1,:)=w(1:size(z,2));279 u(2,:)=w(size(z,2)+1:2*size(z,2));280 u=full(u);

198

Page 219: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 18: ficua.m: Programa para hallar el valor de las funciones base escalares cuadráticasen cualquier punto del triángulo de referencia.

1 function v=ficua(i,pe)2 %3 % DESCRIPCIÓN.4 %5 % Función que devuelve el valor de la función base escalar cuadrática6 % i−ésima en un conjunto de puntos dados en el triángulo de referencia.7 %8 % ENTRADAS.9 %

10 % i [−] [1x1] Número de la función base escalar cuadrática sobre el11 % triángulo de referencia.12 %13 % pe [−] [2xn] Matriz que contiene en la columna i−ésima las coordenadas14 % x (en la primera componente) e y (en la segunda componente) de los puntos15 % sobre los que se quiere calcular el valor de la función base escalar16 % cuadrática.17 %18 % SALIDAS.19 %20 % v [−] [nx1] Vector que contiene el valor de la función base escalar21 % cuadrática en los puntos dados.22 %23 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24

25 v=[ones(size(pe,2),1) pe(1,:)' pe(2,:)' pe(1,:)'.^2 pe(2,:)'.^2 (pe(1,:).*pe(2,:))']*coeficua(i);

199

Page 220: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 19: filin.m: Programa para hallar el valor de las funciones base escalares lineales encualquier punto del triángulo de referencia.

1 function v=filin(i,pe)2 %3 % DESCRIPCIÓN.4 %5 % Función que devuelve el valor de la función base escalar lineal i−ésima6 % en un conjunto de puntos dados en el triángulo de referencia.7 %8 % ENTRADAS.9 %

10 % i [−] [1x1] Número de la función base escalar lineal sobre el11 % triángulo de referencia.12 %13 % pe [−] [2xn] Matriz que contiene en la columna i−ésima las coordenadas14 % x (en la primera componente) e y (en la segunda componente) de los puntos15 % sobre los que se quiere calcular el valor de la función base escalar16 % lineal.17 %18 % SALIDAS.19 %20 % v [−] [nx1] Vector que contiene el valor de la función base escalar21 % lineal en los puntos dados.22 %23 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24

25 v=[ones(size(pe,2),1) pe(1,:)' pe(2,:)']*coefilin(i);

200

Page 221: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 20: flujos.m: Programa para calcular los flujos lineales de la partición.1 function [gK,tten]=flujos(T,z,E,nu,zdir,Se,u,invA,isn,Cneu2,lado,nm,ver,ex,

info,ladon,Tn,J,pruebaflujos)2 %3 % DESCRIPCIÓN.4 %5 % Programa para calcular los flujos lineales de la partición.6 %7 % ENTRADAS.8 %9 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la

10 % partición del dominio. La columna j−ésima recoge en sus tres primeras11 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres12 % últimas los índices de los nodos situados en los puntos medios de cada13 % lado (4, 5 y 6) del triángulo j−ésimo.14 %15 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna16 % j−ésima recoge la coordenada x del nodo en la primera componente y la17 % coordenada y en la segunda del nodo de índice j.18 %19 % E [N/m^2] [1x1] Módulo elástico del sólido.20 %21 % nu [−] [1x1] Módulo de Poisson del sólido.22 %23 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice24 % del nodo Dirichlet i−ésimo.25 %26 % Se [N/m^2] [12*nx12] Matriz de rigidez por triángulos del problema de27 % deformaciones planas. Las matrices de rigidez elementales están28 % dispuestas verticalmente, es decir, la matriz Se(1:12,:) es la matriz29 % elemental del triángulo 1, la matriz Se(13:24,:) es la matriz30 % elemental del triángulo 2 y así sucesivamente.31 %32 % u [m] [2xnz] Matriz que en la columna j−ésima recoge, en la primera33 % componente el desplazamiento según el eje x y según el eje y en la34 % segunda, de la solución aproximada en desplazamientos en cada nodo del35 % problema de deformación plana resuelto mediante elementos finitos con36 % elementos cuadráticos.37 %38 % invA [m^−1] [2x2xn] Estructura de datos en la que cada submatriz39 % invA(:,:,i) es la matriz de transformación afín del triángulo i al40 % triángulo elemental, esto es, [e n]'=invA(:,:,i)*[x−x1 y−y1]'.41 %42 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de43 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,44 % segunda y tercera componente respectivamente ordenados en sentido45 % antihorario.46 %47 % Cneu2 [N/m^2] [2x3xnisn] Similar a Cneu, en vez de tratar las cargas48 % tangencial y normalmente, las trata en dirección x e y. Cada submatriz49 % Cneu2(2,3,i) contiene la tensión en x (Cneu2(1,1:3,i)) e y

201

Page 222: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 % (Cneu2(2,1:3,i)), en el punto inicial (Cneu2(1:2,1,i)), medio51 % (Cneu2(1:2,2,i)) y final (Cneu2(1:2,3,i)) del lado i−ésimo Neumman.52 %53 % lado [m] [3xn] Matriz que recoge en la columna i−ésima la longitud de los54 % lados 1, 2 y 3 del triángulo i−ésimo en la componente 1, 2 y 355 % respectivamente.56 %57 % nm [−] [2x3xn] Estructura de datos en la que cada submatriz tg(:,:,i)58 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,59 % las coordenadas x e y de los vectores normales unitarios exteriores a los60 % lados 1, 2 y 3 respectivamente.61 %62 % ver [−] [1xnz] Vector que contiene, en su componente i−ésima, un 1 si el63 % nodo i−ésimo es un vértice y un 0 si se trata de un nodo situado en el64 % punto medio de un lado.65 %66 % ex [−] [2xnz] Matriz que en cada columna i−ésima recoge, en caso de que67 % el nodo i−ésimo sea un nodo vértice exterior, los índices de los otros68 % dos nodos vértices que son sus vecinos y pertenecen a la frontera del69 % domino. En caso de que el nodo no sea exterior y vertice, la columna70 % i−ésima será [0 0]'.71 %72 % info [−] [1xnz] Vector que en la componente i−ésima contiene un 1 si el73 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo74 % i−ésimo pertenece al interior del dominio.75 %76 % ladon [−] [1xnisn] Vector que en la componente i−ésima contiene un 1, 2 ó77 % 3 si el lado Neumman i−ésimo de la partición es el lado número 1, 2 ó 378 % respectivamente del triángulo al que pertenece.79 %80 % Tn [−] [1xnisn] Vector que en la componente i−ésima, contiene el índice81 % del triángulo al que pertenece el lado Neumman i−ésimo.82 %83 % J [m^2] [1xn] Vector que contiene en la componente i−ésima el jacobiano84 % que resulta de la transformación afín del triángulo i−ésimo al triángulo85 % de referencia.86 %87 % pruebaflujos [−] [1x1] Variable que debe contener un 1 si desea que se88 % ejecuten las dos pruebas para verificar que el procedimiento para89 % calcular los flujos es correcto y un 0 en caso contrario.90 %91 % SALIDAS.92 %93 % gK [N/m] [3x2x3xn] Estructura de datos que recoge los flujos de la94 % partición. gK(1,1,j,i) es la componente x del flujo en el nodo inicial95 % del lado j−ésimo del elemento i−ésimo y gK(1,2,j,i) es la componente y96 % del flujo en el nodo inicial del lado j−ésimo del elemento i−ésimo.97 % gK(2,1,j,i) es la componente x del flujo en el nodo medio98 % del lado j−ésimo del elemento i−ésimo y gK(2,2,j,i) es la componente y99 % del flujo en el nodo medio del lado j−ésimo del elemento i−ésimo.

100 % gK(3,1,j,i) es la componente x del flujo en el nodo final101 % del lado j−ésimo del elemento i−ésimo y gK(3,2,j,i) es la componente y

202

Page 223: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

102 % del flujo en el nodo final del lado j−ésimo del elemento i−ésimo. A modo103 % de ejemplo, gK(1,2,3,17) es la componente y del flujo, evaluada en el104 % punto inicial del lado 3 del triángulo 17.105 %106 % ttent [N/m^2] [2x2x6xn] Estructura de datos en la que cada submatriz107 % sigma(:,:,j,i) es el tensor de tensiones del nodo j−ésimo del elemento108 % i−ésimo (con respecto al elemento i−ésimo).109 %110 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%111

112 % Calculo de las formas bilineales lineales a partir de las matrices de113 % rigidez eleemntales sobre elementos cuadráticos.114 Se=reshape(Se',12,12,[]);115 SeL(1,1:12,:)=Se(1,:,:)+.5*Se(4,:,:)+.5*Se(6,:,:);116 SeL(2,1:12,:)=Se(2,:,:)+.5*Se(5,:,:)+.5*Se(4,:,:);117 SeL(3,1:12,:)=Se(3,:,:)+.5*Se(6,:,:)+.5*Se(5,:,:);118 SeL(4,1:12,:)=Se(7,:,:)+.5*Se(10,:,:)+.5*Se(12,:,:);119 SeL(5,1:12,:)=Se(8,:,:)+.5*Se(11,:,:)+.5*Se(10,:,:);120 SeL(6,1:12,:)=Se(9,:,:)+.5*Se(12,:,:)+.5*Se(11,:,:);121

122 for i=1:size(T,2), % Bucle de elementos.123 BKL(1:6,i)=SeL(1:6,1:12,i)*[u(1,T(:,i)), u(2,T(:,i)),]';124 end125

126 % Cálculo de Delta tilde.127

128 % Se exponen los nodos de cubatura.129 pe=[1/3 (6+sqrt(15))/21 (9−2*sqrt(15))/21 (6+sqrt(15))/21 (6−sqrt(15))/21

(9+2*sqrt(15))/21 (6−sqrt(15))/21; 1/3 (6+sqrt(15))/21 (6+sqrt(15))/21(9−2*sqrt(15))/21 (6−sqrt(15))/21 (6−sqrt(15))/21 (9+2*sqrt(15))/21];

130

131 % Ahora, para cada triángulo, se pasan los puntos de cubatura del triángulo132 % elemental al interior del mismo.133 for i=1:size(T,2), % Bucle de triángulos.134 px(1:2,1:7,i)=refex(pe,z(:,T(1,i)),z(:,T(2,i)),z(:,T(3,i)));135 end136

137 % Se halla la fuerza por unidad de volumen en cada uno de estos puntos.138 F=fpuv(px);139

140 % Se calcula el valor de las funciones base en los puntos de cubatura del141 % triángulo elemental.142 for i=1:3, % Bucle de funciones base lineales escalares.143 filinpe(:,i)=filin(i,pe);144 end145

146 % Se calculan ahora los (f,fi) donde f son las fuerzas por unidad de147 % volumen y fi son todas las funciones base vectoriales lineales.148

149 for i=1:size(T,2), % Bucle de triángulos.150 bfcomplin(1:6,i)=[J(i)*inte(F(1,:,i)',filinpe(1:7,:)) J(i)*inte(F(2,:,i)

',filinpe(1:7,:))];

203

Page 224: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

151 end152

153 % Cálculo de las tensiones.154 for i=1:size(T,2), % Bucle de elementos.155 % Se calculan los tensores de tensión en cada nodo de cada elemento.156 tten(1:2,1:2,1:6,i)=sigfunu(E,nu,z(:,T(:,i)),T,z,invA(1:2,1:2,i),i,u);157 end158

159 % Cálculo de todas las mu tilde.160 P=[1 4 2;2 5 3; 3 6 1];161 P2=[2 4 1;3 5 2; 1 6 3];162 for i=1:size(T,2), % Bucle de triángulos.163 for k=1:6, % Bucle de funciones base.164 for j1=1:3, % Bucle de lados.165 for j2=1:3, % Bucle de nodos en lado j1.166 I(1:2,j1,j2,i)=tten(1:2,1:2,P(j1,j2),i)*nm(1:2,j1,i);167 end168 % Se hace la transformación de los tres nodos en (x,y) a169 % (eta,nu) del lado j1 del elemento i.170 px2(1:2,1:3,j1,i)=refxe(z(:,T(P(j1,:),i)),z(:,T(1,i)),z(:,T(2,i))

,z(:,T(3,i)));171 if k<=3,172 q(:,:,j1,k,i)=[filin(k,px2(1:2,1:3,j1,i))'; 0 0 0];173 else174 q(:,:,j1,k,i)=[0 0 0;filin(k−3,px2(1:2,1:3,j1,i))'];175 end176

177 % Cálculo del integrando.178 ZZ(1:2,1:3)=I(1:2,j1,:,i);179 ZZ(1:2,1:3)=ZZ(1:2,1:3).*q(1:2,1:3,j1,k,i);180 intg(1:3)=ZZ(1,1:3)+ZZ(2,1:3);181

182 % Regla de Simpson.183 mub(j1,k,i)=lado(j1,i)*intg*[1 4 1]'/6;184 end185 end186 end187

188 % Cálculo de la integral de <du_X/dn> fi.189 for i=1:size(T,2), % Bucle de triángulos.190 for k=1:6, % Bucle de funciones base.191 for j1=1:3, % Bucle de lados.192 % Se busca si el lado es exterior o interior.193 [s,la]=ladocom(j1,i,T);194

195 if s==0,196 % El lado j1 es un lado exterior.197

198 % Se busca si el lado j1 es Neumman.199 s2=buscacolu(isn(1:3,:),T(P(j1,:),i));200 if s2~=0,201 % El lado j1 es Neumman.

204

Page 225: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

202 I2(1:2,j1,1:3,i)=Cneu2(1:2,1:3,s2);203 else204 % El lado j1 es Dirichlet.205 for j2=1:3, % Bucle de nodos del lado j1.206 I2(1:2,j1,j2,i)=tten(1:2,1:2,P(j1,j2),i)*nm(1:2,j1,i)

;207 end208

209 end210 else211 % El lado j1 es un lado interior.212

213 for j2=1:3, % Bucle de nodos del lado j1.214 I2(1:2,j1,j2,i)=1/2*(tten(1:2,1:2,P(j1,j2),i)+tten

(1:2,1:2,P2(la,j2),s))*nm(1:2,j1,i);215 end216

217 end218

219 % Cálculo del integrando.220 ZZ(1:2,1:3)=I2(1:2,j1,:,i);221 ZZ(1:2,1:3)=ZZ(1:2,1:3).*q(:,:,j1,k,i);222 intg(1:3)=ZZ(1,1:3)+ZZ(2,1:3);223

224 % Regla de Simpson.225 int(j1,k,i)=lado(j1,i)*intg*[1 4 1]'/6;226 end227

228 % Se suman las integrales sobre cada lado del triángulo i.229 integral(k,i)=int(1,k,i)+int(2,k,i)+int(3,k,i);230 end231 end232

233 % Cómputo de Delta y Delta tilde.234 Delta=BKL−bfcomplin;235 Deltab=BKL−bfcomplin−integral;236

237 % Cálculo de los Theta (multiplicadores de Lagrange).238

239 % Se obtienen qué lados son Dirichlet.240 [isd]=misd(zdir,T);241

242 for p=1:size(z,2), % Bucle de nodos.243 if ver(p)==1,244 % Se trata de un nodo vértice.245

246 % Se recopilan todos los elementos que forman el patch del nodo p.247 [aa,bb]=find(T(1:3,:)==p);248

249 if info(p)==1,250 % Se trata de un nodo exterior.251

205

Page 226: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

252 % Se busca de qué tipo es cada lado exterior que comparte el253 % nodo p.254 p1=buscacolu(isd([1,3],:),[p ex(2,p)]);255 p2=buscacolu(isd([1,3],:),[p ex(1,p)]);256

257 % Se reordenan los elementos del patch.258 [aa,bb]=ordene(aa,bb,T);259

260 if p1==0 && p2==0,261 % Ambos lados son Neumman.262

263 % Se toman los elementos del sistema AX=B.264 [W,eu,ev]=MNN(aa,bb,Deltab);265 else266 if p1~=0 && p2~=0,267 % Ambos lados son Dirichlet268

269 % Se toman los elementos del sistema AX=B.270 [W,eu,ev]=MDD(aa,bb,Deltab);271 else272 % Un lado es Dirichlet y el otro Neumman.273 [aa,bb]=ordene(aa,bb,T);274 % Se toman los elementos del sistema AX=B.275 [W,eu,ev]=MDN(aa,bb,Deltab,T,isd);276 end277 end278

279 % Se resuelve el sistema AX=B.280 SOL=W\[eu' ev'];281

282 % Se asignan los Theta en función de X.283 for k=1:length(bb), % Bucle de elementos del patch.284 Theta(aa(k),bb(k))=SOL(k,1);285 Theta(aa(k)+3,bb(k))=SOL(k,2);286 end287

288 else289 % Se trata de un nodo interior.290

291 % Se reordenan los elementos del patch292 [aa,bb]=ordeni(aa,bb,T);293

294 % Se toman los elementos del sistema AX=B.295 [W,eu,ev]=MI(aa,bb,Deltab);296

297 % Se resuelve el sistema AX=B.298 SOL=W\[eu' ev'];299

300 % Se asignan los Theta en función de X.301 for k=1:length(bb), % Bucle de elementos del patch.302 Theta(aa(k),bb(k))=SOL(k,1);303 Theta(aa(k)+3,bb(k))=SOL(k,2);

206

Page 227: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

304 end305 end306 end307 end308

309 % Cálculo de los mu.310

311 % Las matrices a sirven para emular las funciones base sobre los lados.312 a(1:3,1:3,1)=[1 .5 0;0 .5 1; 0 0 0];313 a(1:3,1:3,2)=[0 0 0;1 .5 0; 0 .5 1];314 a(1:3,1:3,3)=[0 .5 1;0 0 0; 1 .5 0];315

316 P1=[1 2;2 3; 3 1];317

318 for i=1:size(T,2), % Bucle de elementos.319 for j=1:3, % Bucle de lados.320 % Se busca si el lado es compartido (interior) o no (exterior).321 [s,l]=ladocom(j,i,T);322

323 if s==0,324 % Se trata de un lado exterior.325

326 % Se busca si es un lado Dirichlet.327 s2=buscacolu(isd([1,3],:),T(P1(j,:),i));328

329 if s2==0,330 % Se trata de un lado Neumman.331 s3=buscacolu(isn([1,3],:),T(P1(j,:),i));332

333 for k=1:3, % Bucle de funciones base.334 % Cálculo de mu.335 mu(j,k,i)=lado(ladon(s3),Tn(s3))*(Cneu2(1,1:3,s3).*a(k,:,

j))*1/6*[1 4 1]';336 mu(j,k+3,i)=lado(ladon(s3),Tn(s3))*(Cneu2(2,1:3,s3).*a(k

,:,j))*1/6*[1 4 1]';337 end338 else339 % Se trata de un lado Dirichlet.340 for k=1:3, % Bucle de funciones base.341 % Cálculo de mu.342 mu(j,k,i)=Theta(k,i)+mub(j,k,i);343 mu(j,k+3,i)=Theta(k+3,i)+mub(j,k+3,i);344 end345 end346 else347 % Se trata de un lado interior.348 for k=1:3, % Bucle de funciones base.349 % Búsqueda del elemento con el que se comparte el lado.350 c=find(T(j,i)==T(1:3,s));351

352 % Se obtiene un vector con 3 componentes. La componente353 % i−ésima es el índice de la función base escalar lineal

207

Page 228: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

354 % del elemento s que vale lo mismo que la función base355 % escalar lineal i−ésima del elemento i en los vértices356 % que comparten.357 k2=comparti(j,c);358

359 % Cálculo de mu.360 ca1(1:2)=[mub(j,k,i),mub(j,k+3,i)];361 ca2(1:2)=[mub(l,k2(k),s),mub(l,k2(k)+3,s)];362 ca3(1:2)=[Theta(k,i);Theta(k+3,i)];363 ca4(1:2)=[Theta(k2(k),s);Theta(k2(k)+3,s)];364 mu(j,k,i) =.5*(ca1(1)+ca3(1)−(ca2(1)+ca4(1)));365 mu(j,k+3,i)=.5*(ca1(2)+ca3(2)−(ca2(2)+ca4(2)));366 end367 end368 end369 end370

371 % Cálculo de los flujos.372

373 P=[1 2; 2 3; 3 1];374

375 % Funciones psi evaluada en s_\gamma=0, s_\gamma=\gamma/2 y376 % s_\gamma=\gamma.377 psil=[4 1 −2];378 psir=[−2 1 4];379 for i=1:size(T,2),380 for j=1:3,381 gK(1:3,1,j,i)=(psil.*mu(j,P(j,1) ,i)+psir.*mu(j,P(j,2) ,i))/lado(j,

i);382 gK(1:3,2,j,i)=(psil.*mu(j,P(j,1)+3,i)+psir.*mu(j,P(j,2)+3,i))/lado(j,

i);383 end384 end385

386 % Comprobaciones:387

388 if pruebaflujos==1,389

390 % Comprobación 1.391

392 % Se comienza con v1=0 y se va actualizando.393 v1=0;394 for i=1:size(z,2), % Bucle de nodos.395 % Se busca si el nodo está colocado en un semilado.396 [a,b]=find(i==T(4:6,:));397

398 % Se busca que, además, sea un nodo compartido.399 if size(a,1)==2,400 % Se actualiza v1.401 v1=v1+abs(gK(1,1,a(1),b(1))+gK(3,1,a(2),b(2)))...402 +abs(gK(1,2,a(1),b(1))+gK(3,2,a(2),b(2)))...403 +abs(gK(2,1,a(1),b(1))+gK(2,1,a(2),b(2)))...

208

Page 229: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

404 +abs(gK(2,2,a(1),b(1))+gK(2,2,a(2),b(2)))...405 +abs(gK(3,1,a(1),b(1))+gK(1,1,a(2),b(2)))...406 +abs(gK(3,2,a(1),b(1))+gK(1,2,a(2),b(2)));407 end408 end409

410

411 % Comprobación 2.412

413 % Cálculo de T^(1).414

415 % Cálculo de las proyecciones de f.416 for i=1:3, % Bucle de funciones base escalares (fila).417 for j=i:3, % Bucle de funciones base escalares (columna).418 % (fi_i,fi_j) se calcula mediante la función prodfunbas419 % (producto de funciones base)420 Mt(i,j)=prodfunbaslin_tri(i,j);421 end422 end423 % Debido a que se trata de una matriz simétrica, se computa como sigue.424 Mt=Mt+Mt'−diag(diag(Mt));425

426 % Se calculan ahora los (f,fi) donde f son las fuerzas por unidad de427 % volumen y fi son todas las funciones base lineales vectoriales.428 for i=1:size(T,2), % Bucle de triángulos.429 bFlin(1:3,1,i)=J(i)*inte(F(1,:,i)',filinpe(1:7,:));430 bFlin(1:3,2,i)=J(i)*inte(F(2,:,i)',filinpe(1:7,:));431 end432

433 % Cálculo de los coeficientes alpha en cada triángulo y de la434 % proyección ortogonal de las fuerzas por unidad de volumen.435 for i=1:size(T,2), % Bucle de triángulos.436 % Se hace uso ahora de los bF lineales calculados al principio.437 alfa(:,1,i)=(J(i)*Mt)\bFlin(:,1,i);438 alfa(:,2,i)=(J(i)*Mt)\bFlin(:,2,i);439 PKf(1,1:7,i)=filinpe*alfa(:,1,i);440 PKf(2,1:7,i)=filinpe*alfa(:,2,i);441 end442

443 % Se calculan las integrales en cada componente de la matriz T^(1)444 for i=1:size(T,2), % Bucle de triángulos.445 for k=1:6, % Bucle de funciones base vectoriales lineales.446 if k<=3,447 TC1(k,i)=J(i)*inte(PKf(1,1:7,i)',filinpe(:,k));448 else449 TC1(k,i)=J(i)*inte(PKf(2,1:7,i)',filinpe(:,k−3));450 end451 end452 end453

454 % Cálculo de T^(2).455

209

Page 230: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

456 for i=1:size(T,2), % Bucle de triángulos.457

458 % Se calculan los tensores de tensión en los nodos de cubatura.459 px=refex(pe,z(:,T(1,i)),z(:,T(2,i)),z(:,T(3,i)));460 pe2=refxe(z(:,T(:,i)),z(:,T(1,i)),z(:,T(2,i)),z(:,T(3,i)));461 sigma=sigfunu(E,nu,px,T,z,invA(1:2,1:2,i),i,u);462

463 % Se halla los tensores de deformación en los nodos de cubatura.464 for k=1:6, % Bucle de funciones base vectoriales lineales.465 % Se toma un campo de desplazamiento igual al de la función466 % base vectorial lineal k.467 u2=zeros(size(u));468 if k<=3,469 u2(1,T(:,i))=filin(k,pe2);470 else471 u2(2,T(:,i))=filin(k−3,pe2);472 end473 [sigma2,def2]=sigfunu(E,nu,px,T,z,invA(1:2,1:2,i),i,u2);474

475 % Se halla el integrando en cada punto de cubatura.476 for l=1:7,477 finte(l)=sum(sum(sigma(:,:,l).*def2(:,:,l)));478 end479

480 % Se calcula la integral (cubatura).481 TC2(k,i)=−J(i)*inte(finte',ones(7,1));482 end483 end484

485 % Cálculo de T^(3).486

487 P=[1 4 2;2 5 3; 3 6 1];488 for i=1:size(T,2), % Bucle de triángulos.489 for k=1:6, % Bucle de funcioens base escalares lineales.490 % Se toma inicialmente la componente T^(3)(k,i)=0 y se va491 % actualizando.492 TC3(k,i)=0;493

494 for j=1:3, % Bucle de lados.495

496 % vf es el valor de las funciones base en los nodos del497 % lado j.498 vf=zeros(3,2);499 pe3=refxe(z(:,T(P(j,:),i)),z(:,T(1,i)),z(:,T(2,i)),z(:,T(3,i)

));500 if k<=3,501 vf(1:3,1)=filin(k,pe3)';502 else503 vf(1:3,2)=filin(k−3,pe3)';504 end505

506 % Se evalúa el integrando en nodos de Simpson.

210

Page 231: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

507 finte2=sum((vf.*gK(1:3,1:2,j,i))');508

509 % Se actualiza TC3(k,i).510 TC3(k,i)=TC3(k,i)+lado(j,i)*finte2*[1 4 1]'/6;511 end512 end513 end514 disp('[sum(v1) v2=sum(sum(abs(TC1+TC2+TC3)))]'),515 [v1, sum(sum(abs(TC1+TC2+TC3)))]516 disp('[Deben ser cercanos a cero]'),517 end

211

Page 232: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 21: fpuv.m: Programa para calcular las fuerzas por unidad de volumen en cada puntodel sólido.

1 function f=fpuv(X)2 %3 % DESCRIPCIÓN.4 %5 % Programa para calcular las fuerzas por unidad de volumen en cada punto6 % del dominio. Debe ser modificada para cada problema, pero siempre debe7 % devolver los argumentos de la forma en que se indica a continuación.8 %9 % ENTRADAS.

10 %11 % X [m] [2xn] Matriz que en cada columna i−ésima contiene la coordenada x12 % del punto i−ésimo en la primera componente y la coordenada y del punto13 % i−ésimo en la segunda.14 %15 % SALIDAS.16 %17 % f [N/m^3] [2xn] Matriz que en cada columna i−ésima contiene la componente18 % x de las fuerzas por unidad de volumen en el punto i−ésimo en la primera19 % componente y la componente y de las fuerzas por unidad de volumen en el20 % punto i−ésimo en la segunda.21 %22 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23

24 % Modificar en cada problema. Actualmente está puesto para tener fuerzas25 % por unidad de volumen nulas en todo el dominio.26 f=zeros(size(X));

212

Page 233: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 22: geometria.m: Programa para obtener todos los entes geométricos relativos a lapartición.

1 function [ctd,tg,nm,lado,hk,area,J,ver,A,b,invA,ladm]=geometria(T,z)2 %3 % DESCRIPCIÓN.4 %5 % Programa dedicado a obtener todos los entes geométricos necesarios a6 % partir de la triangulación del dominio (T,z).7 %8 % ENTRADAS.9 %

10 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la11 % partición del dominio. La columna j−ésima recoge en sus tres primeras12 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres13 % últimas los índices de los nodos situados en los puntos medios de cada14 % lado (4, 5 y 6) del triángulo j−ésimo.15 %16 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna17 % j−ésima recoge la coordenada x del nodo en la primera componente y la18 % coordenada y en la segunda del nodo de índice j.19 %20 % SALIDAS.21 %22 % ctd [m] [2xn] Matriz en la que la columna i−ésima contiene la coordenada23 % x en la primera componente y la coordenada y en la segunda del centroide24 % del triángulo i−ésimo.25 %26 % tg [−] [2x3xn] Estructura de datos en la que cada submatriz tg(:,:,i)27 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,28 % las coordenadas x e y de los vectores tangenciales unitarios en sentido29 % antihorario a los lados 1, 2 y 3 respectivamente.30 %31 % nm [−] [2x3xn] Estructura de datos en la que cada submatriz nm(:,:,i)32 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,33 % las coordenadas x e y de los vectores normales unitarios exteriores a los34 % lados 1, 2 y 3 respectivamente.35 %36 % lado [m] [3xn] Matriz que recoge en la columna i−ésima la longitud de los37 % lados 1, 2 y 3 del triángulo i−ésimo en la componente 1, 2 y 338 % respectivamente.39 %40 % hk [m] [1xn] Vector que recoge en la componente i−ésima la longitud del41 % lado de mayor longitud de los tres que conforman el triángulo i−ésimo.42 %43 % area [m^2] [1xn] Vector que contiene en la componente i−ésima el área del44 % triángulo i−ésimo.45 %46 % J [m^2] [1xn] Vector que contiene en la componente i−ésima el jacobiano47 % que resulta de la transformación afín del triángulo i−ésimo al triángulo48 % de referencia.49 %

213

Page 234: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 % ver [−] [1xnz] Vector que contiene, en su componente i−ésima, un 1 si el51 % nodo i−ésimo es un vértice y un 0 si se trata de un nodo situado en el52 % punto medio de un lado.53 %54 % A [m] [2x2xn] Estructura de datos en la que cada submatriz A(:,:,i) es la55 % matriz de transformación afín del triángulo elemental al triángulo de56 % trabajo, esto es, [x y]'=A(:,:,i)*[e nu]'+[x1 y1]'.57 %58 % vb [m] [2xn] Matriz que en la columna i−ésima recoge el vector de59 % términos independientes de la transformación afín del triángulo de60 % referencia al triángulo i−ésimo, es decir, vb(:,i)=[x1 y1]'.61 %62 % invA [m^−1] [2x2xn] Estructura de datos en la que cada submatriz63 % invA(:,:,i) es la matriz de transformación afín del triángulo i al64 % triángulo elemental, esto es, [e n]'=invA(:,:,i)*[x−x1 y−y1]'.65 %66 % ladm [m] [1xn] Vector que recoge en la componente i−ésima qué lado67 % es el que posee una longitud mayor en el triángulo i−ésimo. En caso de68 % que dos o más lados posean la misma longitud, constará el lado que tenga69 % un índice más bajo. Por ejemplo, si el lado 1 y el lado 3 del triángulo 570 % tienen la misma longitud, entonces ladm(5)=1.71 %72 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%73

74 % Se calculan las matrices X e Y que contienen, en cada columna i, las 675 % coordenadas x e y respectivamente de cada nodo del triángulo i.76 x=z(1,:);y=z(2,:);X=x(T);Y=y(T);77

78 % Cálculo de los vectores tangenciales unitarios en sentido antihorario de79 % cada lado, de los normales exteriores a cada lado y de la medida de cada80 % lado de cada triángulo. Para ver la estructura de las matrices con mayor81 % profundidad, ver el programa vectores.m.82 [tg,nm,lado]=vectores(X,Y);83

84 % Cálculo de los centroides de cada triángulo.85 ctd(1:2,:)=1/3*[sum(X(1:3,:));sum(Y(1:3,:))];86

87 % Cálculo de los elementos relativos a la transformación afín al triángulo88 % de referencia.89 [A,b,J,invA]=cambio(X,Y);90

91 % Cálculo del área de cada triángulo mediante el Jacobiano.92 area=J/2;93

94 % Cálculo de cuál es el lado mayor (1, 2 ó 3) de cada triángulo y cuál es95 % su longitud.96 [hk,ladm]=max(lado(1:3,:));97

98 % El vector ver indica si un nodo i es un vértice (1) o punto medio (0).99 ver=ones(1,size(z,2));

100 for i=1:length(ver),101 [p,q]=find(T(4:6,:)==i);

214

Page 235: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

102 if size(p,1)>0,103 ver(i)=0;104 end105 end

215

Page 236: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 23: informacion.m: Programa para generar el vector ~i, de nz componentes, que en lacomponente i-ésima tiene un 1 si el nodo i-ésimo es frontera y un 0 en caso contrario.

1 function [info]=informacion(T,z)2 %3 % DESCRIPCIÓN.4 %5 % Programa para generar el vector i de nz componentes que en la componente6 % i−ésima tiene un 1 si el nodo i−ésimo es frontera y un 0 en caso7 % contrario. Algoritmo válido sólo en ausencia de nodos colgantes.8 %9 % ENTRADAS.

10 %11 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la12 % partición del dominio. La columna j−ésima recoge en sus tres primeras13 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres14 % últimas los índices de los nodos situados en los puntos medios de cada15 % lado (4, 5 y 6) del triángulo j−ésimo.16 %17 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna18 % j−ésima recoge la coordenada x del nodo en la primera componente y la19 % coordenada y en la segunda del nodo de índice j.20 %21 % SALIDAS.22 %23 % info [−] [1xnz] Vector que en la componente i−ésima contiene un 1 si el24 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo25 % i−ésimo pertenece al interior del dominio.26 %27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28

29

30 % Primero los nodos que están en algún lado.31

32 % Primero se clasifican como interiores o exteriores los nodos colocados en33 % los puntos medios.34 P=[1 2;2 3; 3 1];35 for i=1:size(z,2), % Bucle de nodos.36 % Se busca si se trata de un nodo situado en un semilado o en un37 % vértice.38 [p,q]=find(T(4:6,:)==i);39 if size(p,1)~=0,40 if size(p,1)==2,41 % Pertenece a dos elementos, es interior.42 info(i)=0;43 else44 % Pertenece a un elemento, es exterior.45 info(i)=1;46 end47 else48 % Como se trata de un vértice se le da temporalmente el valor 2.49 info(i)=2;

216

Page 237: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 end51 end52

53 % Se analizan los vértices.54 P=[4 6;5 4;6 5];55 for i=1:size(z,2),56 if info(i)==2,57 % En principio es nodo interior hasta que se demuestre lo58 % contrario.59 info(i)=0;60 [p,q]=find(T(1:3,:)==i);61 % Para cada elemento al que pertenece se busca si sus nodos de62 % puntos medios vecinos son exteriores. Si alguno lo es,63 % automáticamente se trata de un nodo exterior.64 for k=1:length(p),65 if info(T(P(p(k),1),q(k)))==1 || info(T(P(p(k),2),q(k)))==1,66 info(i)=1;67 end68 end69 end70 end

217

Page 238: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 24: inte.m: Programa para realizar integrales con integrandos tipo f·g en el triángulode referencia.

1 function V=inte(f,g)2 %3 % DESCRIPCIÓN.4 %5 % Función que permite obtener la integral de f·g en el triángulo de6 % referencia mediante los valores de las funciones f y g en los nodos de7 % cubatura.8 %9 % Nodos de cubatura y pesos:

10 % xi eta w11 % 1 1/3 1/3 9/8012 % 2 (6+sqrt(15))/21 (6+sqrt(15))/21 (155+sqrt(15))/240013 % 3 (9−2*sqrt(15))/21 (6+sqrt(15))/21 (155+sqrt(15))/240014 % 4 (6+sqrt(15))/21 (9−2*sqrt(15))/21 (155+sqrt(15))/240015 % 5 (6−sqrt(15))/21 (6−sqrt(15))/21 (155−sqrt(15))/240016 % 6 (9+2*sqrt(15))/21 (6−sqrt(15))/21 (155−sqrt(15))/240017 % 7 (6−sqrt(15))/21 (9+2*sqrt(15))/21 (155−sqrt(15))/240018 %19 % ENTRADAS.20 %21 % f [u1] [7x1] Vector que contiene en la componente i−ésima el valor de la22 % función f en el nodo i−ésimo del triángulo de referencia.23 %24 % g [u2] [7x1] Vector que contiene en la componente i−ésima el valor de la25 % función f en el nodo i−ésimo del triángulo de referencia.26 %27 % SALIDAS.28 %29 % V [u2*u1] [1x1] Integral de f·g en el triángulo de referencia según los30 % nodos de cubatura y pesos citados en la descripción.31 %32 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33

34 % Pesos de cubatura en formato matriz diagonal.35 w=diag([0.1125 (155+sqrt(15))/2400 (155+sqrt(15))/2400 (155+sqrt(15))/2400

(155−sqrt(15))/2400 (155−sqrt(15))/2400 (155−sqrt(15))/2400]);36

37 % Integrales.38 V=f'*w*g;

218

Page 239: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 25: interdesp.m: Programa para interpolar los desplazamientos de ciertos puntos de unmallado según los desplazamientos nodales del elemento al que pertenecen.

1 function U=interdesp(X,z,T,u)2 %3 % DESCRIPCIÓN4 %5 % Programa para interpolar los desplazamientos dentro de un elemento de la6 % partición según sus desplazamientos nodales.7 %8 % ENTRADAS.9 %

10 % X [m] [2xne] Matriz que recoge en la columna i−ésima las coordenadas x (11 % (en la primera componente) e y (en la segunda) del punto i−ésimo del que12 % se quiere hallar su desplazamiento interpolado.13 %14 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna15 % j−ésima recoge la coordenada x del nodo en la primera componente y la16 % coordenada y en la segunda del nodo de índice j.17 %18 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la19 % partición del dominio. La columna j−ésima recoge en sus tres primeras20 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres21 % últimas los índices de los nodos situados en los puntos medios de cada22 % lado (4, 5 y 6) del triángulo j−ésimo.23 %24 % u [m] [2xnz] Matriz que en la columna j−ésima recoge, en la primera25 % componente el desplazamiento según el eje x y según el eje y en la26 % segunda, de la solución aproximada en desplazamientos en cada nodo del27 % problema de deformación plana resuelto mediante elementos finitos con28 % elementos cuadráticos.29 %30 % SALIDAS.31 %32 % U [m] [−] Matriz que recoge en la columna i−ésima el desplazamiento33 % interpolado según x (en la primera componente) y según y (en la segunda)34 % del punto i−ésimo.35 %36 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%37

38 % tri es un vector que recoge en la componente i−ésima el índice del39 % elemento al que pertenece el punto i−ésimo.40 tri=zeros(1,size(X,2));41

42 for i=1:size(X,2), % Bucle de puntos.43 j=1;44

45 % Se busca dentro de qué elemento se encuentra.46 while tri(i)==0 && j<=size(T,2),47 in=inpolygon(X(1,i),X(2,i),[z(1,T(1,j)), z(1,T(2,j)), z(1,T(3,j))],[z

(2,T(1,j)), z(2,T(2,j)), z(2,T(3,j))]);48 if in==1,

219

Page 240: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

49 tri(i)=j;50 end51 j=j+1;52 end53

54 % Se halla el desplazamiento interpolado.55 if tri(i)~=0,56 % Se realiza la transformación afín.57 Xt(:,i)=refxe(X(:,i),z(:,T(1,tri(i))),z(:,T(2,tri(i))),z(:,T(3,tri(i)

)));58

59 % Se halla el valor de las funciones base en el punto i−ésimo.60 for k=1:6,61 p(k,1)=ficua(k,Xt(:,i));62 end63

64 % Se computa la interpolación.65 U(:,i)=u(:,T(:,tri(i)))*p;66 end67 end

220

Page 241: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 26: ladocom.m: Programa para encontrar el triángulo que comparte un cierto lado deotro triángulo.

1 function [s,l]=ladocom(i,p,T)2 %3 % DESCRIPCIÓN.4 %5 % Programa para obtener con qué triángulo y con qué lado de ese triángulo6 % comparte el triángulo p−ésimo el lado i−ésimo.7 %8 % ENTRADAS.9 %

10 % i [−] [1x1] Índice del lado dentro del triángulo p−ésimo (1, 2 ó 3) del11 % que se desea saber con qué triángulo es compartido.12 %13 % p [−] [1x1] Índice del triángulo que posee el lado i−ésimo del que se14 % desea saber con qué triángulo es compartido.15 %16 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la17 % partición del dominio. La columna j−ésima recoge en sus tres primeras18 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres19 % últimas los índices de los nodos situados en los puntos medios de cada20 % lado (4, 5 y 6) del triángulo j−ésimo.21 %22 % SALIDAS.23 %24 % s [−] [1x1] Índice del triángulo con el que el triángulo p−ésimo comparte25 % el lado i−ésimo. Toma un valor nulo si el lado i−ésimo del elemento26 % p−ésimo es frontera.27 %28 % l [−] [1x1] Índice del lado del triángulo s−ésimo que se comparte con el29 % triángulo p−ésimo. Toma un valor nulo si el lado i−ésimo del elemento30 % p−ésimo es frontera.31 %32 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33

34 % Algoritmo optimizado para elementos cuadráticos:35 no=T(i+3,p);36 T(:,p)=zeros(size(T,1),1);37 [l,s]=find(T==no); l=l−3;38 if size(s,1)==0,39 s=0;40 l=0;41 end42

43 % Algoritmo para elementos lineales:44 %45 % function [s,l]=ladocom(i,p,T)46 %47 % DESCRIPCIÓN.48 %49 % Programa para obtener con qué triángulo y con qué lado de ese triángulo

221

Page 242: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 % comparte el triángulo p−ésimo el lado i−ésimo. Válido para elementos51 % lineales.52 %53 % Cambiar argumento T por:54 %55 % T [−] [3xn] Matriz de vértices de los triángulos de la partición del56 % dominio. La columna j−ésima recoge en sus tres componentes los índices de57 % los nodos vértices (1, 2 y 3) del triángulo j−ésimo.58 %59 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%60 %61 % B=[T(1,:);T(2,:)];62 % s=buscacol(B,p);63 % l=1;64 % if length(s)==2,65 % if s(1)==i,66 % s=s(2);67 % else68 % s=s(1);69 % end70 % end71 %72 % if s==i || s==073 % B=[T(2,:);T(3,:)];74 % s=buscacol(B,p);75 % l=2;76 %77 % if length(s)==2,78 % if s(1)==i,79 % s=s(2);80 % else81 % s=s(1);82 % end83 % end84 %85 % if s==i || s==086 % B=[T(3,:);T(1,:)];87 % s=buscacol(B,p);88 % l=3;89 %90 % if length(s)==2,91 % if s(1)==i,92 % s=s(2);93 % else94 % s=s(1);95 % end96 % end97 %98 % end99 % end

100 % if s==0 ||s==i,101 % s=0;

222

Page 243: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

102 % l=0;103 % end

223

Page 244: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 27: ladomayor.m: Programa dedicado a obtener la longitud del lado mayor de cadatriángulo.

1 function ladm=ladomayor(T,z)2 %3 % DESCRIPCIÓN.4 %5 % Programa dedicado a obtener la longitud del lado de mayor longitud de6 % cada triángulo.7 %8 % ENTRADAS.9 %

10 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la11 % partición del dominio. La columna j−ésima recoge en sus tres primeras12 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres13 % últimas los índices de los nodos situados en los puntos medios de cada14 % lado (4, 5 y 6) del triángulo j−ésimo.15 %16 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna17 % j−ésima recoge la coordenada x del nodo en la primera componente y la18 % coordenada y en la segunda del nodo de índice j.19 %20 % SALIDAS.21 %22 % ladm [m] [1xn] Vector que recoge en la componente i−ésima qué lado23 % es el que posee una longitud mayor en el triángulo i−ésimo. En caso de24 % que dos o más lados posean la misma longitud, constará el lado que tenga25 % un índice más bajo. Por ejemplo, si el lado 1 y el lado 3 del triángulo 526 % tienen la misma longitud, entonces ladm(5)=1.27 %28 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29

30 % Se calculan las matrices X e Y que contienen, en cada columna i, las 631 % coordenadas x e y respectivamente de cada nodo del triángulo i.32 x=z(1,:);33 y=z(2,:);34 X=x(T);35 Y=y(T);36

37 % Cálculo de los vectores tangenciales unitarios en sentido antihorario de38 % cada lado, de los normales exteriores a cada lado y de la medida de cada39 % lado de cada triángulo. Para ver la estructura de las matrices con mayor40 % profundidad, ver el programa vectores.m.41 [tg,nm,lado]=vectores(X,Y);42

43 % Cálculo de la longitud del lado mayor de cada triángulo.44 [hk,ladm]=max(lado(1:3,:));

224

Page 245: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 28: marca.m: Programa para rellenar ciertos triángulos de un color (rojo o verde) deuna partición.

1 function []=marca(T,z,lista,c)2 %3 % DESCRIPCIÓN.4 %5 % Programa para rellenar ciertos triángulos de un color (rojo o verde) de6 % una partición.7 %8 % ENTRADAS.9 %

10 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la11 % partición del dominio. La columna j−ésima recoge en sus tres primeras12 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres13 % últimas los índices de los nodos situados en los puntos medios de cada14 % lado (4, 5 y 6) del triángulo j−ésimo.15 %16 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna17 % j−ésima recoge la coordenada x del nodo en la primera componente y la18 % coordenada y en la segunda del nodo de índice j.19 %20 % lista [−] [nlx1] Vector que en cada componente contiene el índice de un21 % elemento que ha de rellenarse.22 %23 % c [−] [1x1] Variable que debe valer 1 para que los triángulos se rellenen24 % en rojo y un 2 para que se rellenen en verde.25 %26 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27

28 % Se toma el color.29 if c==1,30 col='r';31 else32 if c==2,33 col='g';34 end35 end36

37 % Se rellenan los elementos uno a uno.38 for i=1:length(lista),39 fill([z(1,T(1:3,lista(i))) z(1,T(1,lista(i))) ],[z(2,T(1:3,lista(i))) z

(2,T(1,lista(i))) ],col),40 end

225

Page 246: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 29: MDD.m: Programa para la generar la matriz de coeficientes y las dos columnas dela matriz de datos para patches de nodos situados en la frontera y con lados Dirichlet-Dirichlet.

1 function [W,eu,ev]=MDD(aa,bb,Deltab)2 %3 % DESCRIPCIÓN.4 %5 % Programa para la generar la matriz de coeficientes y las dos columnas6 % de la matriz de datos para patches de nodos situados en la frontera y con7 % lados Dirichlet−Dirichlet.8 %9 % ENTRADAS.

10 %11 % aa [−] [npx1] Vector que contiene la componente i−ésima, el índice de la12 % función base vectorial lineal asociada a la Theta i−ésima del conjunto de13 % Thetas ordenadas en sentido horario.14 %15 % bb [−] [npx1] Vector que contiene la componente i−ésima, el índice del16 % elemento da la Theta i−ésima del conjunto de Thetas ordenadas en sentido17 % horario.18 %19 % Deltab [N/m] [6xn] Matriz cada la columna i−ésima contiene en su20 % componente j−ésima la Delta tilde en el elemento i−ésimo con la función21 % base j−ésima.22 %23 % SALIDAS.24 %25 % W [−] [npxnp] Matriz de coeficientes del sistema asociado a patches de26 % nodos situados en la frontera y con lados Dirichlet−Dirichlet.27 %28 % eu [N/m] [1xnp] Primera columna de la matriz de datos del sistema29 % asociado a patches de nodos situados en la frontera y con30 % lados Dirichlet−Dirichlet.31 %32 % ev [N/m] [1xnp] Segunda columna de la matriz de datos del sistema33 % asociado a patches de nodos situados en la frontera y con34 % lados Dirichlet−Dirichlet.35 %36 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%37

38 % Se toma el número de elementos en el patch.39 num=length(bb);40

41 % Se genera la matriz de coeficientes.42 if num==1,43 W=2;44 else45 W=2*diag(ones(num,1))−diag(ones(num−1,1),1)−diag(ones(num−1,1),−1);46 W(1,1)=3; W(num,num)=3;47 W=.5*W;48 end49

226

Page 247: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 % Se generan las columnas de la matriz de datos.51 for k=1:length(bb), % Bucle de elementos del patch.52 eu(k)=Deltab(aa(k),bb(k));53 ev(k)=Deltab(aa(k)+3,bb(k));54 end

227

Page 248: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 30: MDN.m: Programa para la generar la matriz de coeficientes y las dos columnas de lamatriz de datos para patches de nodos situados en la frontera y con lados Dirichlet-Neumman.

1 function [W,eu,ev]=MDN(aa,bb,Deltab,T,isd)2 %3 % DESCRIPCIÓN.4 %5 % Programa para la generar la matriz de coeficientes y las dos columnas6 % de la matriz de datos para patches de nodos situados en la frontera y con7 % lados Neumman−Dirichlet.8 %9 % ENTRADAS.

10 %11 % aa [−] [npx1] Vector que contiene la componente i−ésima, el índice de la12 % función base vectorial lineal asociada a la Theta i−ésima del conjunto de13 % Thetas ordenadas en sentido horario.14 %15 % bb [−] [npx1] Vector que contiene la componente i−ésima, el índice del16 % elemento da la Theta i−ésima del conjunto de Thetas ordenadas en sentido17 % horario.18 %19 % Deltab [N/m] [6xn] Matriz cada la columna i−ésima contiene en su20 % componente j−ésima la Delta tilde en el elemento i−ésimo con la función21 % base j−ésima.22 %23 % SALIDAS.24 %25 % W [−] [npxnp] Matriz de coeficientes del sistema asociado a patches de26 % nodos situados en la frontera y con lados Neumman−Dirichlet.27 %28 % eu [N/m] [1xnp] Primera columna de la matriz de datos del sistema29 % asociado a patches de nodos situados en la frontera y con30 % lados Neumman−Dirichlet.31 %32 % ev [N/m] [1xnp] Segunda columna de la matriz de datos del sistema33 % asociado a patches de nodos situados en la frontera y con34 % lados Neumman−Dirichlet.35 %36 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%37

38 % Se toma el número de elementos en el patch.39 num=length(bb);40

41 % Se genera la matriz de coeficientes.42 if num==1,43 W=1;44 else45 W=2*diag(ones(num,1))−diag(ones(num−1,1),1)−diag(ones(num−1,1),−1);46 W(1,1)=3;47 W(num,num)=1;48 W=.5*W;49

228

Page 249: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 % Se comprueba si el primer elemento es Neumman o Dirichlet para51 % modificar si es necesario la matriz de coeficientes.52 P=[1 3;2 1;3 2];53 q=buscacolu(isd([1 3],:),T(P(aa(1),:),bb(1)));54 if q==0,55 W(num,num)=3/2;56 W(1,1)=1/2;57 end58 end59

60 % Se generan las columnas de la matriz de datos.61 for k=1:length(bb), % Bucle de elementos del patch.62 eu(k)=Deltab(aa(k),bb(k));63 ev(k)=Deltab(aa(k)+3,bb(k));64 end

229

Page 250: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 31: MI.m: Programa para la generar la matriz de coeficientes y las dos columnas de lamatriz de datos para patches interiores.

1 function [W,eu,ev]=MI(aa,bb,Deltab)2 %3 % DESCRIPCIÓN.4 %5 % Programa para la generar la matriz de coeficientes y las dos columnas6 % de la matriz de datos para patches interiores.7 %8 % ENTRADAS.9 %

10 % aa [−] [npx1] Vector que contiene en la componente i−ésima, el índice de11 % la función base vectorial lineal asociada a la Theta i−ésima del conjunto12 % de Thetas ordenadas en sentido horario.13 %14 % bb [−] [npx1] Vector que contiene en la componente i−ésima, el índice del15 % elemento de la Theta i−ésima del conjunto de Thetas ordenadas en sentido16 % horario.17 %18 % Deltab [N/m] [6xn] Matriz cada la columna i−ésima contiene en su19 % componente j−ésima la Delta tilde en el elemento i−ésimo con la función20 % base j−ésima.21 %22 % SALIDAS.23 %24 % W [−] [npxnp] Matriz de coeficientes del sistema asociado a patches25 % interiores.26 %27 % eu [N/m] [1xnp] Primera columna de la matriz de datos del sistema28 % asociado a patches interiores.29 %30 % ev [N/m] [1xnp] Segunda columna de la matriz de datos del sistema31 % asociado a patches interiores.32 %33 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34

35 % Se toma el número de elementos en el patch36 num=length(bb);37

38 % Se genera la matriz de coeficientes.39 W=2*diag(ones(num,1))−diag(ones(num−1,1),1)−diag(ones(num−1,1),−1);40 W(1,num)=−1; W(num,1)=−1; W=.5*W;41

42

43 % Se generan las columnas de la matriz de datos.44 for k=1:length(bb), % Bucle de elementos del patch.45 eu(k)=Deltab(aa(k),bb(k));46 ev(k)=Deltab(aa(k)+3,bb(k));47 end48

49 % Ampliación del sistema.

230

Page 251: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 W=[W ones(num,1);ones(1,num) 0];51 eu=[eu,0];52 ev=[ev,0];

231

Page 252: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 32: misd.m: Programa para obtener los índices de los nodos de cada lado Dirichlet apartir de T y ~zd.

1 function [isd]=misd(zdir,T)2 %3 % DESCRIPCIÓN.4 %5 % Programa para generar una matriz, isd, de dimensiones 3xnldir, donde6 % nldir es el número de lados Dirichlet que presenta la partición. En la7 % columna i−ésima figuran los índices de los 3 nodos del lado Dirichlet8 % dispuestos en sentido antihorario. Debido a que los lados Dirichlet no se9 % numeran, en la matriz aparecen en orden creciente según el índice del

10 % triángulo al que pertenecen. En caso de que dos lados Dirichlet11 % pertenezcan a un mismo elemento, se encontrará primero el que tenga un12 % número de lado más bajo.13 %14 % ENTRADAS.15 %16 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice17 % del nodo Dirichlet i−ésimo.18 %19 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la20 % partición del dominio. La columna j−ésima recoge en sus tres primeras21 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres22 % últimas los índices de los nodos situados en los puntos medios de cada23 % lado (4, 5 y 6) del triángulo j−ésimo.24 %25 % SALIDAS.26 %27 % isd [−] [3xnldir] Matriz de dimensiones 3xnldir, donde nldir es el número28 % de lados Dirichlet que presenta la partición. En la columna i−ésima29 % figuran los índices de los 3 nodos del lado Dirichlet dispuestos en30 % sentido antihorario. Debido a que los lados Dirichlet no se numeran, en31 % la matriz aparecen en orden creciente según el índice del triángulo al32 % que pertenecen. En caso de que dos lados Dirichlet pertenezcan a un mismo33 % elemento, se encontrará primero el que tenga un número de lado más bajo.34 %35 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36

37 % Matriz de índices.38 P=[1 4 2;2 5 3; 3 6 1];39

40 % Se buscan en cada elemento.41 con=1;42 for i=1:size(T,2),43 for j=1:3,44 a=find(T(P(j,1),i)==zdir(1,:));45 b=find(T(P(j,2),i)==zdir(1,:));46 c=find(T(P(j,3),i)==zdir(1,:));47 if size(a,2)~=0 && size(b,2)~=0 && size(c,2)~=0,48 % Pertenecen al elemento.49 isd(1:3,con)=[T(P(j,1),i) T(P(j,2),i) T(P(j,3),i)]';

232

Page 253: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 con=con+1;51 end52 end53

54 end

233

Page 254: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 33: MNN.m: Programa para la generar la matriz de coeficientes y las dos columnas de lamatriz de datos para patches de nodos situados en la frontera y con lados Neumman-Neumman.

1 function [W,eu,ev]=MNN(aa,bb,Deltab)2 %3 % DESCRIPCIÓN.4 %5 % Programa para la generar la matriz de coeficientes y las dos columnas6 % de la matriz de datos para patches de nodos situados en la frontera y con7 % lados Neumman−Neumman.8 %9 % ENTRADAS.

10 %11 % aa [−] [npx1] Vector que contiene la componente i−ésima, el índice de la12 % función base vectorial lineal asociada a la Theta i−ésima del conjunto de13 % Thetas ordenadas en sentido horario.14 %15 % bb [−] [npx1] Vector que contiene la componente i−ésima, el índice del16 % elemento da la Theta i−ésima del conjunto de Thetas ordenadas en sentido17 % horario.18 %19 % Deltab [N/m] [6xn] Matriz cada la columna i−ésima contiene en su20 % componente j−ésima la Delta tilde en el elemento i−ésimo con la función21 % base j−ésima.22 %23 % SALIDAS.24 %25 % W [−] [npxnp] Matriz de coeficientes del sistema asociado a patches de26 % nodos situados en la frontera y con lados Neumman−Neumman.27 %28 % eu [N/m] [1xnp] Primera columna de la matriz de datos del sistema29 % asociado a patches de nodos situados en la frontera y con30 % lados Neumman−Neumman.31 %32 % ev [N/m] [1xnp] Segunda columna de la matriz de datos del sistema33 % asociado a patches de nodos situados en la frontera y con34 % lados Neumman−Neumman.35 %36 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%37

38 % Se toma el número de elementos en el patch39 num=length(bb);40

41 % Se genera la matriz de coeficientes.42 W=2*diag(ones(num,1))−diag(ones(num−1,1),1)−diag(ones(num−1,1),−1);43 W(1,1)=1; W(num,num)=1;44 W=.5*W;45

46

47 % Se generan las columnas de la matriz de datos.48 for k=1:length(bb), % Bucle de elementos del patch.49 eu(k)=Deltab(aa(k),bb(k));

234

Page 255: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 ev(k)=Deltab(aa(k)+3,bb(k));51 end52

53 % Ampliación del sistema.54 W=[W ones(num,1);ones(1,num) 0];55 eu=[eu,0];56 ev=[ev,0];

235

Page 256: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 34: nodotri.m: Programa para obtener los nodos vértice exteriores vecinos a un nodovértice exterior dado.

1 function ex=nodotri(T,nodo)2 %3 % DESCRIPCIÓN.4 %5 % Programa para generar un vector, ex, de dos componentes que contiene en6 % cada una de ellas los índices de los nodos vértices vecinos a un cierto7 % nodo exterior y vértice.8 %9 % ENTRADAS.

10 %11 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la12 % partición del dominio. La columna j−ésima recoge en sus tres primeras13 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres14 % últimas los índices de los nodos situados en los puntos medios de cada15 % lado (4, 5 y 6) del triángulo j−ésimo.16 %17 % nodo [−] [1x1] Índice del nodo del que se quiere conocer sus vecinos.18 % Debe ser un nodo exterior.19 %20 % SALIDAS.21 %22 % ex [−] [2x1] Vector de dos componentes en las que cada una de ellas23 % contiene el índice de uno de los dos nodos vértices vecinos al nodo de24 % índice "nodo".25 %26 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27

28 % Se localizan todos los elementos que comparten ese nodo.29 [a,b]=find(T==nodo);30

31 % Se recopilan los nodos vecinos dentro de cada elemento.32 for i=1:length(b),33 if a(i)==1,34 M(1:2,i)=T([2 3],b(i));35 else36 if a(i)==2,37 M(1:2,i)=T([1 3],b(i));38 else39 M(1:2,i)=T([1 2],b(i));40 end41 end42 end43 % Se ordenan los índices de estos nodos de mayor a menor.44 M=sort([M(1,:) M(2,:)]);45

46 % Se buscan aquellos que se repiten. Los que no se repiten son los nodos47 % vecinos.48 c=1;49 r=1;

236

Page 257: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 while c<=length(M),51 if c==length(M)52 ex(2)=M(c);53 c=c+1;54 else55 if M(c+1)==M(c),56 c=c+2;57 else58 ex(r)=M(c);59 r=r+1;60 c=c+1;61 if r==3,62 c=length(M)+1;63 end64 end65 end66 end67 ex=ex';

237

Page 258: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 35: ordene.m: Programa para ordenar los elementos de un patch en sentido horario(patches de nodo en lado frontera).

1 function [aa2,bb2]=ordene(aa,bb,T)2 %3 % DESCRIPCIÓN.4 %5 % Programa para ordenar los elementos de un patch en sentido horario6 % (patches de nodo en lado frontera).7 %8 % ENTRADAS.9 %

10 % aa [−] [npx1] Vector que contiene en la componente i−ésima qué nodo11 % (1, 2 ó 3) es el vértice p del elemento de índice igual al valor de la12 % componente i−ésima del vector bb.13 %14 % bb [−] [npx1] Vector que contiene en la componente i−ésima el índice de15 % un cierto elemento de un patch (de los np que lo conforman).16 %17 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la18 % partición del dominio. La columna j−ésima recoge en sus tres primeras19 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres20 % últimas los índices de los nodos situados en los puntos medios de cada21 % lado (4, 5 y 6) del triángulo j−ésimo.22 %23 % SALIDAS.24 %25 % aa2 [−] [npx1] Vector que contiene en la componente i−ésima qué nodo26 % (1, 2 ó 3) es el vértice p del elemento de índice igual al valor de la27 % componente i−ésima del vector bb2.28 %29 % bb2 [−] [npx1] Vector que contiene en la componente i−ésima el índice del30 % elemento i−ésimo de un patch (de los np que lo conforman). Los elementos31 % se encuentran ordenados en sentido horario.32 %33 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34

35 % El vector P es un vector que relaciona el nodo de un elemento con el nodo36 % que debe buscarse que comparte para seguir el sentido antihorario.37 P=[6 4 5];38

39 % condi=1 indica que se ha encontrado el elemento primero.40 condi=0;41

42 % t marca las iteraciones en la búsqueda del elemento primero.43 t=1;44

45 % Se busca cuál es el elemento primero.46 while condi==0,47 [p,q]=find(T(P(aa(t)),bb(t))==T(4:6,bb));48 if size(q,1)==1,49 % El nodo P(aa(t)) es compartido.

238

Page 259: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 aa2(1)=aa(q);51 bb2(1)=bb(q);52 condi=1;53 else54 % El nodo P(aa(t)) no es compartido (size(q,1)==2).55 t=t+1;56 end57 end58

59 % Se comienza a ordenar en sentido horario sabiendo cuál es el elemento60 % primero.61 for i=2:length(aa),62 % Se busca en la matriz T qué elemento comparte con el elemento63 % (i−1)−ésimo el nodo del semilado correspondiente. En caso de que se64 % trate del nodo 1, nodo 2 o nodo 3 del elemento (j−1)−ésimo, se toma65 % el índice del nodo 4, nodo 5 o nodo 6 respectivamente.66 [p,q]=find(T(aa2(i−1)+3,bb2(i−1))==T(4:6,bb));67

68 % La orden "if" es para descartar el elemento (j−1)−ésimo.69 if bb(q(1))==bb2(i−1),70 aa2(i,1)=aa(q(2));71 bb2(i,1)=bb(q(2));72 else73 aa2(i,1)=aa(q(1));74 bb2(i,1)=bb(q(1));75 end76 end

239

Page 260: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 36: ordeni.m: Programa para ordenar los elementos de un patch en sentido horario siendoel primero aquel que se introduzca en argumento como primero (patches de nodos interiores).

1 function [aa2,bb2]=ordeni(aa,bb,T)2 %3 % DESCRIPCIÓN.4 %5 % Programa para ordenar los elementos de un patch en sentido horario siendo6 % el primero aquel que se introduzca en argumento como primero (patches7 % interiores).8 %9 % ENTRADAS.

10 %11 % aa [−] [npx1] Vector que contiene en la componente i−ésima qué nodo12 % (1, 2 ó 3) es el vértice p del elemento de índice igual al valor de la13 % componente i−ésima del vector bb.14 %15 % bb [−] [npx1] Vector que contiene en la componente i−ésima el índice de16 % un cierto elemento de un patch (de los np que lo conforman).17 %18 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la19 % partición del dominio. La columna j−ésima recoge en sus tres primeras20 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres21 % últimas los índices de los nodos situados en los puntos medios de cada22 % lado (4, 5 y 6) del triángulo j−ésimo.23 %24 % SALIDAS.25 %26 % aa2 [−] [npx1] Vector que contiene en la componente i−ésima qué nodo27 % (1, 2 ó 3) es el vértice p del elemento de índice igual al valor de la28 % componente i−ésima del vector bb2.29 %30 % bb2 [−] [npx1] Vector que contiene en la componente i−ésima el índice del31 % elemento i−ésimo de un patch (de los np que lo conforman). Los elementos32 % se encuentran ordenados en sentido horario.33 %34 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%35

36 % Se comienza a ordenar en sentido horario.37 for i=1:length(aa)38 if i==1,39 % Se toma el primer elemento igual a la primera componente de bb.40 aa2(i)=aa(i);41 bb2(i)=bb(i);42 else43 % Se busca en la matriz T qué elemento comparte con el elemento44 % (i−1)−ésimo el nodo del semilado correspondiente. En caso de que45 % se trate del nodo 1, nodo 2 o nodo 3 del elemento (j−1)−ésimo, se46 % toma el índice del nodo 4, nodo 5 o nodo 6 respectivamente.47 [p,q]=find(T(aa2(i−1)+3,bb2(i−1))==T(4:6,bb));48

49 % La orden "if" es para descartar el elemento (j−1)−ésimo.

240

Page 261: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 if bb(q(1))==bb2(i−1),51 aa2(i,1)=aa(q(2));52 bb2(i,1)=bb(q(2));53 else54 aa2(i,1)=aa(q(1));55 bb2(i,1)=bb(q(1));56 end57 end58 end

241

Page 262: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 37: orientacargas.m: Programa para obtener C(2)n a partir de C(1)

n .1 function Cneu2=orientacargas(Cneu,isn,ladon,Tn,tg,nm)2 %3 % DESCRIPCIÓN.4 %5 % Programa para obtener Cneu2 en función de Cneu.6 %7 % ENTRADAS.8 %9 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz

10 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y11 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio12 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.13 %14 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de15 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,16 % segunda y tercera componente respectivamente ordenados en sentido17 % antihorario.18 %19 % ladon [−] [1xnisn] Vector que en la componente i−ésima contiene un 1, 2 ó20 % 3 si el lado i−esimo Neumman es el lado 1, 2 ó 3 respectivamente del21 % elemento al que pertenece.22 %23 % Tn [−] [1xnisn] Vector que en la componente i−ésima, contiene el índice24 % del triángulo al que pertenece el lado Neumman i−ésimo.25 %26 % tg [−] [2x3xn] Estructura de datos en la que cada submatriz tg(:,:,i)27 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,28 % las coordenadas x e y de los vectores tangenciales unitarios en sentido29 % antihorario a los lados 1, 2 y 3 respectivamente.30 %31 % nm [−] [2x3xn] Estructura de datos en la que cada submatriz nm(:,:,i)32 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,33 % las coordenadas x e y de los vectores normales unitarios exteriores a los34 % lados 1, 2 y 3 respectivamente.35 %36 % SALIDAS.37 %38 % Cneu2 [N/m^2] [2x3xnisn] Similar a Cneu, en vez de tratar las cargas39 % tangencial y normalmente, las trata en dirección x e y. Cada submatriz40 % Cneu2(2,3,i) contiene la tensión en x (Cneu2(1,1:3,i)) e y41 % (Cneu2(2,1:3,i)), en el punto inicial (Cneu2(1:2,1,i)), medio42 % (Cneu2(1:2,2,i)) y final (Cneu2(1:2,3,i)) del lado Neumman i−ésimo.43 %44 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%45

46 % Se procede al cambio para cada lado Neumman.47 for i=1:size(isn,2), % Bucle de lados Neumman.48 Cneu2(1:2,1:3,i)=[tg(1:2,ladon(i),Tn(i)), nm(1:2,ladon(i),Tn(i))]*Cneu

(1:2,1:3,i);49 end

242

Page 263: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 38: plottrl.m: Programa para representar un mallado dado por las matrices z y T enrojo, azul o negro.

1 function plottrl(T,z,c)2 %3 % DESCRIPCIÓN.4 %5 % Programa para representar un mallado dado por las matrices z y T en rojo,6 % azul o negro.7 %8 % ENTRADAS.9 %

10 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la11 % partición del dominio. La columna j−ésima recoge en sus tres primeras12 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres13 % últimas los índices de los nodos situados en los puntos medios de cada14 % lado (4, 5 y 6) del triángulo j−ésimo.15 %16 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna17 % j−ésima recoge la coordenada x del nodo en la primera componente y la18 % coordenada y en la segunda del nodo de índice j.19 %20 % c [−] [1x1] Variable que debe valer 1 para que el mallado se represente21 % en rojo, 2 en azul y 3 en negro.22 %23 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24

25 % Se toma el color.26 if c==1,27 col='r';28 else29 if c==2,30 col='b';31 else32 if c==3,33 col='k';34 end35 end36 end37

38 % Se hacen las representaciones triángulo a triángulo.39 hold on,40 for j=1:size(T,2)41 plot(z(1,[T(1:3,j);T(1,j)]),z(2,[T(1:3,j);T(1,j)]),col)42 end

243

Page 264: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 39: problema.m: Programa para representar la malla del problema, las condiciones decontorno y las fuerzas por unidad de volumen.

1 function problema(T,z,isn,Cneu,zdir,zdesp,fpuv)2 %3 % DESCRIPCIÓN.4 %5 % Programa para representar la malla del problema, las condiciones de6 % contorno y las fuerzas por unidad de volumen.7 %8 % ENTRADAS.9 %

10 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la11 % partición del dominio. La columna j−ésima recoge en sus tres primeras12 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres13 % últimas los índices de los nodos situados en los puntos medios de cada14 % lado (4, 5 y 6) del triángulo j−ésimo.15 %16 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna17 % j−ésima recoge la coordenada x del nodo en la primera componente y la18 % coordenada y en la segunda del nodo de índice j.19 %20 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de21 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,22 % segunda y tercera componente respectivamente ordenados en sentido23 % antihorario.24 %25 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz26 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y27 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio28 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.29 %30 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice31 % del nodo Dirichlet i−ésimo.32 %33 % zdesp [m] [2xnzdir] Matriz que recoge en la columna i−ésima el34 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y35 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.36 %37 % @fpuv [f: R2 −> R2] [N/m^3] Función que para cada punto (x1,y1) devuelve38 % la fuerza por unidad de volumen f(x1,y1).39 %40 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41

42 % Primero se establecen los entes geométricos.43 [ctd,tg,nm,lado,hk,area,J,ver,A,b,invA,ladm]=geometria(T,z);44

45 % Se halla a qué triángulo y qué índice de lado le corresponde cad alado46 % Neumman.47 [ladon,Tn]=trabisn(isn,T);48

49 % Se orientan las cargas.

244

Page 265: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 Cneu2=orientacargas(Cneu,isn,ladon,Tn,tg,nm);51

52 % Se representa la malla.53 plottrl(T,z,3);54

55 % Se representan los nodos Dirichlet y sus desplazamientos.56 for i=1:size(zdir,2),57 plot([z(1,zdir(1,i)) z(1,zdir(1,i))+zdesp(1,i)],[ z(2,zdir(1,i)) z(2,zdir

(1,i))+zdesp(2,i)])58 plot(z(1,zdir(1,i)),z(2,zdir(1,i)),'bo')59 plot(z(1,zdir(1,i))+zdesp(1,i),z(2,zdir(1,i))+zdesp(2,i),'ro')60 end61

62 % Se representan las cargas Neumman.63 C=eps;64 for i=1:size(isn,2);65 c=max([norm(Cneu2(:,1,i)),norm(Cneu2(:,2,i)),norm(Cneu2(:,3,i))]);66 if c>C,67 C=c;68 end69 end70 P=[1 2; 2 3];71 for i=1:size(isn,2),72 for j=1:3,73 quiver(z(1,isn(j,i)), z(2,isn(j,i)), Cneu2(1,j,i)/C,Cneu2(2,j,i)/C,'m

','LineWidth',1)74 end75 end76

77 % Se representan las fuerzas por unidad de volumen en los centroides de78 % cada elemento.79 C=eps;80 for i=1:size(T,2),81 F=fpuv(1/3*(z(:,T(1:3,i))));82 if norm(F)>C,83 C=norm(F);84 end85 end86 for i=1:size(T,2),87 F=fpuv(1/3*(z(:,T(1:3,i))));88 if F(1)==0 && F(2)==089 else90 quiver(1/3*(sum(z(1,T(1:3,i)))), 1/3*(sum(z(2,T(1:3,i)))), F(1)/C, F

(2)/C,'b','LineWidth',1)91 end92 end

245

Page 266: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 40: prodfunbaslin_lad.m: Programa para obtener∫ 1

0 NiNjdl, siendo Ni y Nj lasfunciones base escalares cuadráticas i-ésima y j-ésima respectivamente.

1 function k=prodfunbaslin_lad(i,j)2 %3 % DESCRIPCIÓN.4 %5 % Programa para obtener int_0^1 Ni·Nj dl siendo N_i y N_j dos funciones6 % base escalares cuadráticas definidas en el intervalo [0,1].7 %8 % ENTRADAS.9 %

10 % i [−] [1x1] Índice de la primera función base escalar cuadrática sobre el11 % lado, i=1,2,3.12 %13 % j [−] [1x1] Índice de la segunda función base escalar cuadrática sobre el14 % lado, j=1,2,3.15 %16 % SALIDAS.17 %18 % k [−] [1x1] Resultado exacto* de int_0^1 Ni·Nj dl. *: exacto hasta la19 % unidad de redondeo.20 %21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22

23

24 if i==1,25 c1=[2 −3 1]';26 else27 if i==2,28 c1=[−4 4 0]';29 else30 if i==3,31 c1=[2 −1 0]';32 end33 end34 end35

36 if j==1,37 c2=[2 −3 1]';38 else39 if j==2,40 c2=[−4 4 0]';41 else42 if j==3,43 c2=[2 −1 0]';44 end45 end46 end47

48 k= 1*(c1(3)*c2(3))+...49 1/2*(c1(2)*c2(3)+c1(3)*c2(2))+...

246

Page 267: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 1/3*(c1(1)*c2(3)+c1(3)*c2(1)+c1(2)*c2(2))+...51 1/4*(c1(1)*c2(2)+c1(2)*c2(1))+...52 1/5*(c1(1)*c2(1));

247

Page 268: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 41: prodfunbaslin_tri.m: Programa que sirve para obtener la integral (de forma exacta)sobre el triángulo de referencia del producto de dos funciones base base escalares lineales.

1 function k=prodfunbaslin_tri(i,j)2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para obtener la integral sobre el triángulo de6 % referencia del integrando N_i·N_j (funciones base escalares lineales).7 %8 % ENTRADAS.9 %

10 % i [−] [1x1] Índice de la función base N_i.11 %12 % j [−] [1x1] Índice de la función base N_j.13 %14 % SALIDAS.15 %16 % k [−] [1x1] Valor exacto* de Int(N_i·N_j) en K_0 (triángulo de17 % referencia). *: exacto hasta la unidad de redondeo.18 %19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20

21 % Se toman los coeficientes de las funciones base escalares lineales.22 c1=coefilin(i);23 c2=coefilin(j);24

25 % Se calcula la integral mediante la primitiva.26 k= 1/2*(c1(1)*c2(1))+...27 1/6*(c1(2)*c2(1)+c1(1)*c2(2))+...28 1/6*(c1(3)*c2(1)+c1(1)*c2(3))+...29 1/12*(c1(2)*c2(2))+...30 1/12*(c1(3)*c2(3))+...31 1/24*(c1(2)*c2(3)+c1(3)*c2(2));

248

Page 269: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 42: refex.m: Programa para ejecutar la transformación de un punto del triángulo dereferencia al triángulo de trabajo.

1 function B=refex(A,c1,c2,c3)2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para obtener las coordenadas (x,y) de un punto6 % (xi,eta) dada una transformación afín para pasar del triángulo de7 % vértices c1, c2 y c3 al triángulo de referencia.8 %9 % ENTRADAS.

10 %11 % A [−] [2xn] Matriz que en la columna i−ésima contiene las coordenadas xi12 % y eta (en la primera y segunda componente respectivamente) de los puntos13 % sobre los que se desea realizar el cambio.14 %15 % c1 [m] [2x1] Vector que contiene las coordenadas x_1 e y_1 del primer16 % vértice en la primera y segunda coordenada respectivamente.17 %18 % c2 [m] [2x1] Vector que contiene las coordenadas x_2 e y_2 del segundo19 % vértice en la primera y segunda coordenada respectivamente.20 %21 % c3 [m] [2x1] Vector que contiene las coordenadas x_3 e y_3 del tercer22 % vértice en la primera y segunda coordenada respectivamente.23 %24 % SALIDAS.25 %26 % B [m] [2xn] Matriz que en la columna i−ésima contiene las coordenadas x e27 % y (en la primera y segunda componente respectivamente) de los puntos28 % sobre los que se desea realizar el cambio.29 %30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31

32 M=[c2(1)−c1(1) c3(1)−c1(1); c2(2)−c1(2) c3(2)−c1(2)];33 for i=1:size(A,2)34 B(:,i)=c1+M*A(:,i);35 end

249

Page 270: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 43: refinamiento.m: Programa para refinar la malla del problema aplicando un bulkcriterion sobre los |||~es|||K .

1 function [T,z,isn,Cneu,zdir,zdesp,info,ex,lista,lista2,e2s,x,suma,e2total,padres]=refinamiento(T,z,isn,e,Cneu,zdir,zdesp,info)

2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para refinar la malla del problema mediante un "bulk6 % criterion" sobre la cota de la norma de la norma de la energía de los7 % errores en desplazamientos. Se realizan refinamientos rojos sobre los8 % elementos que satisfacen el "bulk criterion" y se realizan refinamientos9 % verdes para eliminar los nodos colgantes.

10 %11 % ENTRADAS.12 %13 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la14 % partición del dominio. La columna j−ésima recoge en sus tres primeras15 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres16 % últimas los índices de los nodos situados en los puntos medios de cada17 % lado (4, 5 y 6) del triángulo j−ésimo.18 %19 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna20 % j−ésima recoge la coordenada x del nodo en la primera componente y la21 % coordenada y en la segunda del nodo de índice j.22 %23 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de24 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,25 % segunda y tercera componente respectivamente ordenados en sentido26 % antihorario.27 %28 % e [N^(1/2)] [1xn] Vector cuya componente i−ésima contiene la estimación29 % (cota superior) de la norma de energía del error en desplazamientos30 % cometido en el elemento i−ésimo.31 %32 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz33 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y34 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio35 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.36 %37 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice38 % del nodo Dirichlet i−ésimo.39 %40 % zdesp [m] [2xnzdir] Matriz que recoge en la columna i−ésima el41 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y42 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.43 %44 % info [−] [1xnz] Vector que en la componente i−ésima contiene un 1 si el45 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo46 % i−ésimo pertenece al interior del dominio.47 %48 % SALIDAS.

250

Page 271: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

49 %50 % T [−] [6xn2] Matriz de vértices y puntos medios de los triángulos de la51 % partición del dominio. La columna j−ésima recoge en sus tres primeras52 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres53 % últimas los índices de los nodos situados en los puntos medios de cada54 % lado (4, 5 y 6) del triángulo j−ésimo.55 %56 % z [m] [2xnz2] Matriz de coordenadas de nodos del problema. La columna57 % j−ésima recoge la coordenada x del nodo en la primera componente y la58 % coordenada y en la segunda del nodo de índice j.59 %60 % isn [−] [3xnisn2] Matriz que contiene en la columna j−ésima los índices de61 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,62 % segunda y tercera componente respectivamente ordenados en sentido63 % antihorario.64 %65 % Cneu [N/m^2] [2x3xnisn2] Estructura de datos en la que cada submatriz66 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y67 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio68 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.69 %70 % zdir [−] [1xnzdir2] Vector en el que la componente i−ésima es el índice71 % del nodo Dirichlet i−ésimo.72 %73 % zdesp [m] [2xnzdir2] Matriz que recoge en la columna i−ésima el74 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y75 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.76 %77 % info [−] [1xnz2] Vector que en la componente i−ésima contiene un 1 si el78 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo79 % i−ésimo pertenece al interior del dominio.80 %81 % ex [−] [2xnz2] Matriz que en cada columna i−ésima recoge, en caso de que82 % el nodo i−ésimo sea un nodo vértice exterior, los índices de los otros83 % dos nodos vértices que son sus vecinos y pertenecen a la frontera del84 % domino. En caso de que el nodo no sea exterior y vertice, la columna85 % i−ésima será [0 0]'.86 %87 % lista [−] [1xR1] Vector que en cada componente recoge el índice de un88 % elemento que ha sido subdividido mediante refinamiento rojo.89 %90 % lista2 [−] [1xR2] Vector que recoge el índice de los elementos padres que91 % fueron refinados durante la eliminación de nodos colgantes.92 %93 % e2s [N] [1xn] Vector que recoge los e^2 de la partición en orden94 % descendente.95 %96 % x [−] [1xn] Vector de índices de la ordenación de e2s.97 %98 % suma [N] [1x1] Suma de todos los e^2 de cada elemento que ha sido99 % subdividido según el refinamiento rojo.

100 %

251

Page 272: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

101 % e2total [N] [1x1] Suma de todos los e^2 de cada elemento de la102 % partición.103 %104 % padres [−] [1xn2] Vector que recoge en la componente i−ésima el índice105 % del triángulo de la malla primera de la que proviene el elemento i−ésimo106 % de la malla segunda. En caso de no poseer ningún padre (por no ser un107 % elemento subdividido), la componente i−ésima será nula.108 %109 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%110

111 % Se obtienen los e^2 y la suma de todos ellos.112 e2=e.^2;113 e2total=sum(e2);114

115 % Se ordenan de mayor a menor los e^2.116 [e2s,x]=sort(e2,'descend');117

118 % Aplicación del bulk criterion.119 suma=0;120 contador=1;121 lista=[];122 while suma<=.5*e2total,123 suma=suma+e2s(contador);124 lista(contador)=x(contador);125 contador=contador+1;126 end127

128 % Refinamiento rojo de los elementos recogidos en "lista".129 [T,z,isn,Cneu,zdir,zdesp,info,padres]=tricon(T,z,isn,Cneu,zdir,zdesp,info,

lista);130

131 % Eliminación de los nodos colgantes.132 [T,z,isn,Cneu,zdir,zdesp,info,padres,lista2]=delhn(T,z,isn,Cneu,zdir,zdesp,

info,padres);133

134 % Cómputo de ex.135 ex=exteriores(T,z,info);

252

Page 273: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 44: refxe.m: Programa para ejecutar la transformación de un punto del triángulo detrabajo al triángulo de referencia.

1 function B=refxe(A,c1,c2,c3)2 %3 % DESCRIPCIÓN.4 %5 % Programa para obtener las coordenadas (xi,eta) de un punto (x,y) dada6 % una transformación afín para pasar del triángulo de vértices c1, c2 y c37 % al triángulo de referencia.8 %9 % ENTRADAS.

10 %11 % A [m] [2xn] Matriz que en la columna i−ésima contiene las coordenadas x e12 % y (en la primera y segunda componente respectivamente) de los puntos13 % sobre los que se desea realizar el cambio.14 %15 % c1 [m] [2x1] Vector que contiene las coordenadas x_1 e y_1 del primer16 % vértice en la primera y segunda coordenada respectivamente.17 %18 % c2 [m] [2x1] Vector que contiene las coordenadas x_2 e y_2 del segundo19 % vértice en la primera y segunda coordenada respectivamente.20 %21 % c3 [m] [2x1] Vector que contiene las coordenadas x_3 e y_3 del tercer22 % vértice en la primera y segunda coordenada respectivamente.23 %24 % SALIDAS.25 %26 % B [−] [2xn] Matriz que en la columna i−ésima contiene las coordenadas xi27 % y eta (en la primera y segunda componente respectivamente) de los puntos28 % sobre los que se desea realizar el cambio.29 %30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31

32 invJ=1/((c2(1)−c1(1))*(c3(2)−c1(2))−(c3(1)−c1(1))*(c2(2)−c1(2)));33 M=invJ*[c3(2)−c1(2) −(c3(1)−c1(1)); −(c2(2)−c1(2)) c2(1)−c1(1)];34 for i=1:size(A,2)35 B(:,i)=M*(A(:,i)−c1);36 end

253

Page 274: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 45: sigfunu.m: Programa para obtener el tensor de tensiones y de deformaciones de unoo varios puntos con respecto a un elemento de la partición dados los desplazamientos en susnodos.

1 function [sigma,eps]=sigfunu(E,nu,X,T,z,invA,p,u)2 %3 % DESCRIPCIÓN.4 %5 % Programa para obtener tensor de tensiones y de deformaciones de uno o6 % varios puntos con respecto a un elemento de la partición dados los7 % desplazamientos en sus nodos.8 %9 % ENTRADAS.

10 %11 % E [N/m^2] [1x1] Módulo elástico del sólido.12 %13 % nu [−] [1x1] Módulo de Poisson del sólido.14 %15 % X [m] [2xn] Matriz que en la columna i−ésima contiene las coordenadas x e16 % y (en la primera y segunda componente respectivamente) de los puntos17 % sobre los que se desea calcular las tensiones y deformaciones.18 %19 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la20 % partición del dominio. La columna j−ésima recoge en sus tres primeras21 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres22 % últimas los índices de los nodos situados en los puntos medios de cada23 % lado (4, 5 y 6) del triángulo j−ésimo.24 %25 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna26 % j−ésima recoge la coordenada x del nodo en la primera componente y la27 % coordenada y en la segunda del nodo de índice j.28 %29 % invA [1/m] [2x2] Matriz de transformación afín del triángulo de trabajo30 % al triángulo elemental, esto es, [e n]'=invA(:,:)*[x−x1 y−y1]'.31 %32 % p [−] [1x1] Índice del triángulo con respecto al cual se calculan las33 % tensiones y deformaciones.34 %35 % u [m] [2xnz] Matriz que en la columna j−ésima recoge, en la primera36 % componente el desplazamiento según el eje x y según el eje y en la37 % segunda, de la solución aproximada en desplazamientos en cada nodo del38 % problema de deformación plana resuelto mediante elementos finitos con39 % elementos cuadráticos.40 %41 % SALIDAS.42 %43 % sigma [N/m^2] [2x2xn] Estructura de datos en la que cada submatriz44 % sigma(:,:,i) es el tensor de tensiones del punto i−ésimo (cuyas45 % coordenadas están en la columna i−ésima de la matrix X).46 %47 % eps [−] [2x2xn] Estructura de datos en la que cada submatriz48 % eps(:,:,i) es el tensor de deformaciones del punto i−ésimo (cuyas

254

Page 275: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

49 % coordenadas están en la columna i−ésima de la matrix X).50 %51 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%52

53 % Primero se pasan las coordenadas del triángulo de trabajo a las del54 % triángulo de referencia.55 XE=refxe(X,z(:,T(1,p)),z(:,T(2,p)),z(:,T(3,p)));56

57 % Se calculan sigma y epsilon para cada punto.58 for i=1:size(XE,2) % Bucle de puntos.59 % Se calculan las derivadas parciales de las funciones base phi.60 [derifix(:,i),derifiy(:,i)]=derifi(XE(1,i),XE(2,i),invA);61

62 % Se aplica la regla de la cadena.63 dudx(i)=derifix(:,i)'*u(1,T(1:6,p))';64 dudy(i)=derifiy(:,i)'*u(1,T(1:6,p))';65 dvdx(i)=derifix(:,i)'*u(2,T(1:6,p))';66 dvdy(i)=derifiy(:,i)'*u(2,T(1:6,p))';67

68 % Se calculan los tensores de deformaciones y de tensiones.69 eps(:,:,i)=[dudx(i),.5*(dudy(i)+dvdx(i)) ;.5*(dudy(i)+dvdx(i)) ,dvdy(i)];70 sigma(:,:,i)=E/(1+nu)*(eps(:,:,i)+nu/(1−2*nu)*trace(eps(:,:,i))*eye(2,2))

;71 end

255

Page 276: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 46: tenfro.m: Programa para representar el módulo de la tensión normal y tangencial.La representación se hace en función de la cordenada s.

1 function tenfro(E,nu,T,z,u,isn,Cneu,zdir,tg,nm,invA,lado)2 %3 % DESCRIPCIÓN.4 %5 % Programa para representar el módulo de la tensión normal y tangencial. La6 % representación se hace en función de la cordenada s. La coordenada s7 % recorre el dominio en sentido antihorario, con s=0 en aquel nodo que se8 % encuentre antes recogido en la primera fila de la matriz isn y que no sea9 % el final de un lado Neumman (solo un inicio). Si la coordenada s se

10 % encuentra con el inicio de un lado Dirichlet, este se omite y sigue por11 % el siguiente lado Neumman.12 %13 % ENTRADAS.14 %15 % E [N/m^2] [1x1] Módulo elásticos del sólido.16 %17 % nu [−] [1x1] Módulo de Poisson del sólido.18 %19 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la20 % partición del dominio. La columna j−ésima recoge en sus tres primeras21 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres22 % últimas los índices de los nodos situados en los puntos medios de cada23 % lado (4, 5 y 6) del triángulo j−ésimo.24 %25 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna26 % j−ésima recoge la coordenada x del nodo en la primera componente y la27 % coordenada y en la segunda del nodo de índice j.28 %29 % u [m] [2xnz] Matriz que en la columna j−ésima recoge, en la primera30 % componente el desplazamiento según el eje x y según el eje y en la31 % segunda, de la solución aproximada en desplazamientos en cada nodo del32 % problema de deformación plana resuelto mediante elementos finitos con33 % elementos cuadráticos.34 %35 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de36 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,37 % segunda y tercera componente respectivamente ordenados en sentido38 % antihorario.39 %40 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz41 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y42 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio43 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.44 %45 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice46 % del nodo Dirichlet i−ésimo.47 %48 % tg [−] [2x3xn] Estructura de datos en la que cada submatriz tg(:,:,i)49 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,

256

Page 277: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 % las coordenadas x e y de los vectores tangenciales unitarios en sentido51 % antihorario a los lados 1, 2 y 3 respectivamente.52 %53 % nm [−] [2x3xn] Estructura de datos en la que cada submatriz nm(:,:,i)54 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,55 % las coordenadas x e y de los vectores normales unitarios exteriores a los56 % lados 1, 2 y 3 respectivamente.57 %58 % invA [1/m] [2x2xn] Estructura de datos en la cada submatriz59 % invA(:,:,i) es la matriz de transformación afín del triángulo i−ésimo al60 % triángulo de referencia, esto es, [e n]'=invA(:,:,i)*[x−x1 y−y1]'.61 %62 % lado [m] [3xn] Matriz que recoge en la columna i−ésima la longitud de los63 % lados 1, 2 y 3 del triángulo i−ésimo en la componente 1, 2 y 364 % respectivamente.65 %66 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%67

68 % Se halla qué lados son Dirichlet.69 [isd]=misd(zdir,T);70

71 % Se halla a qué triángulo y qué índice de lado le corresponde cad alado72 % Neumman.73 [ladon,Tn]=trabisn(isn,T);74

75 % Se orientan las cargas.76 Cneu2=orientacargas(Cneu,isn,ladon,Tn,tg,nm);77

78 % Se calculan las tensiones en cada lado Neumman.79 for i=1:size(isn,2),80 for p=1:381 [sigma,eps]=sigfunu(E,nu,[z(1,isn(p,i)),z(2,isn(p,i))]',T,z,invA(:,:,

Tn(i)),Tn(i),u);82 rn(p,i)=nm(:,ladon(i),Tn(i))'*sigma*nm(:,ladon(i),Tn(i));83 rn_id(p,i)=Cneu(2,p,i);84 rt(p,i)=tg(:,ladon(i),Tn(i))'*sigma*nm(:,ladon(i),Tn(i));85 rt_id(p,i)=Cneu(1,p,i);86 end87 end88

89 % Se toman qué nodos son el comienzo de lados Neumman (pero no finales).90 ais=distintos(isn([1,3],:));91 sep=1;92 con=1;93 for i=1:length(ais),94 sep=−sep;95 if sep<0,96 ais2(con)=ais(i);97 con=con+1;98 end99 end

100 ais=ais2;

257

Page 278: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

101

102 % Se va definiendo la coordenada s y reordenando las tensiones exteriores.103 lon=0;104 c=0;105 for j=1:length(ais),106 enlace=ais(j);107 i=find(isn([1,3],:)==enlace);108 sig=0;109 while sig==0110 modn(c+1:c+3)=rn(:,i);111 modn_id(c+1:c+3)=rn_id(:,i);112 modt(c+1:c+3)=rt(:,i);113 modt_id(c+1:c+3)=rt_id(:,i);114

115 % fro es la coordenada s, que se va ampliando en casa iteración.116 fro(c+1:c+3)=lon+[0 .5 1].*lado(ladon(i),Tn(i));117 lon=lon+lado(ladon(i),Tn(i));118 c=c+3;119 q=find(enlace==isn([1,3],i));120 if q==1,121 enlace=isn(3,i);122 else123 enlace=isn(1,i);124 end125 [w1,w2]=find(enlace==isn([1,3],:));126 if length(w2)==2,127 if w2(1)==i,128 i=w2(2);129 else130 i=w2(1);131 end132 else133 sig=1;134 end135 end136 end137

138 % Se representan las tensiones.139 figure, hold on, grid on,140 xlabel('s','FontSize',20)141 ylabel('Tensión en dirección normal, n^t·(\sigma n)','FontSize',20)142 plot(fro,modn)143 plot(fro,modn_id,'r')144 legend('Según solución MEF','Impuesta')145

146 figure, hold on, grid on,147 xlabel('s','FontSize',20)148 ylabel('Tensión en dirección tangencial, t^t·(\sigma n)','FontSize',20)149 plot(fro,modt)150 plot(fro,modt_id,'r')151 legend('Según solución MEF','Impuesta')

258

Page 279: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 47: trabisn.m: Programa que sirve para encontrar a qué elemento pertenece cada ladoNeumman y, qué índice le corresponde al lado Neumman dentro del elemento (1, 2 ó 3).

1 function [ladon,Tn]=trabisn(isn,T)2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para encontrar a qué elemento pertenece cada lado6 % Neumman y qué índice le corresponde al lado Neumman dentro del elemento7 % (1, 2 ó 3).8 %9 % ENTRADAS.

10 %11 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de12 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,13 % segunda y tercera componente respectivamente ordenados en sentido14 % antihorario.15 %16 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la17 % partición del dominio. La columna j−ésima recoge en sus tres primeras18 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres19 % últimas los índices de los nodos situados en los puntos medios de cada20 % lado (4, 5 y 6) del triángulo j−ésimo.21 %22 % SALIDAS.23 %24 % ladon [−] [1xnisn] Vector que en la componente i−ésima contiene un 1, 2 ó25 % 3 si el lado i−esimo Neumman es el lado 1, 2 ó 3 respectivamente del26 % elemento al que pertenece.27 %28 % Tn [−] [1xnisn] Vector que en la componente i−ésima, contiene el índice29 % del triángulo al que pertenece el lado Neumman i−ésimo.30 %31 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32

33 % Se trata cada lado Neumman.34 for i=1:size(isn,2),35 contador=1;36 % Se comprueba elemento a elemento.37 while contador<=size(T,2),38 % Se comprueba si está en el elemento.39 if (T(1,contador)==isn(1,i) && T(2,contador)==isn(3,i)) ||...40 (T(1,contador)==isn(3,i) && T(2,contador)==isn(1,i)) ||...41 (T(2,contador)==isn(1,i) && T(3,contador)==isn(3,i)) ||...42 (T(2,contador)==isn(3,i) && T(3,contador)==isn(1,i)) ||...43 (T(3,contador)==isn(1,i) && T(1,contador)==isn(3,i)) ||...44 (T(3,contador)==isn(3,i) && T(1,contador)==isn(1,i)),45

46 % Sí está en el elemento.47

48 % Se comprueba en qué lado está.49 Tn(i)=contador;

259

Page 280: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 if (T(1,contador)==isn(1,i) && T(2,contador)==isn(3,i)) || (T(2,contador)==isn(1,i) && T(1,contador)==isn(3,i)),

51 ladon(i)=1;52 else53 if (T(2,contador)==isn(1,i) && T(3,contador)==isn(3,i)) || (T

(2,contador)==isn(1,i) && T(3,contador)==isn(3,i)),54 ladon(i)=2;55 else56 ladon(i)=3;57 end58 end59 % El bucle termina si ya se encuentra el elemento al que60 % pertenece.61 contador=size(T,2);62 end63 contador=contador+1;64 end65 end

260

Page 281: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 48: tricon.m: Programa que sirve para ejecutar un refinamiento rojo sobre ciertoselementos de la partición.

1 function [T,z,isn,Cneu,zdir,zdesp,info,padres]=tricon(T,z,isn,Cneu,zdir,zdesp,info,lista)

2 %3 % DESCRIPCIÓN.4 %5 % Programa que sirve para refinar ciertos elementos mediante cuatro6 % triángulos congruentes al primero (refinamiento rojo). Todos los7 % datos del problema (cargas externas, desplazamientos...) son también8 % adaptados a la nueva geometría.9 %

10 % ENTRADAS.11 %12 % T [−] [6xn] Matriz de vértices y puntos medios de los triángulos de la13 % partición del dominio. La columna j−ésima recoge en sus tres primeras14 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres15 % últimas los índices de los nodos situados en los puntos medios de cada16 % lado (4, 5 y 6) del triángulo j−ésimo.17 %18 % z [m] [2xnz] Matriz de coordenadas de nodos del problema. La columna19 % j−ésima recoge la coordenada x del nodo en la primera componente y la20 % coordenada y en la segunda del nodo de índice j.21 %22 % isn [−] [3xnisn] Matriz que contiene en la columna j−ésima los índices de23 % los nodos inicial, medio y final del lado Neumman j−ésimo en la primera,24 % segunda y tercera componente respectivamente ordenados en sentido25 % antihorario.26 %27 % Cneu [N/m^2] [2x3xnisn] Estructura de datos en la que cada submatriz28 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y29 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio30 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.31 %32 % zdir [−] [1xnzdir] Vector en el que la componente i−ésima es el índice33 % del nodo Dirichlet i−ésimo.34 %35 % zdesp [m] [2xnzdir] Matriz que recoge en la columna i−ésima el36 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y37 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.38 %39 % info [−] [1xnz] Vector que en la componente i−ésima contiene un 1 si el40 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo41 % i−ésimo pertenece al interior del dominio.42 %43 % lista [−] [1xR] Vector que en el que cada componente recoge el índice de44 % un elemento que debe ser refinado mediante la subdivisión en 4 triángulos45 % congruentes (refinamiento rojo).46 %47 % SALIDAS.48 %

261

Page 282: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

49 % T [−] [6xn2] Matriz de vértices y puntos medios de los triángulos de la50 % partición del dominio. La columna j−ésima recoge en sus tres primeras51 % componentes los índices de los nodos vértices (1, 2 y 3) y las tres52 % últimas los índices de los nodos situados en los puntos medios de cada53 % lado (4, 5 y 6) del triángulo j−ésimo.54 %55 % z [m] [2xnz2] Matriz de coordenadas de nodos del problema. La columna56 % j−ésima recoge la coordenada x del nodo en la primera componente y la57 % coordenada y en la segunda del nodo de índice j.58 %59 % isn [−] [3xnisn2] Matriz que contiene en la columna j−ésima los índices60 % de los nodos inicial, medio y final del lado Neumman j−ésimo en la61 % primera, segunda y tercera componente respectivamente ordenados en62 % sentido antihorario.63 %64 % Cneu [N/m^2] [2x3xnisn2] Estructura de datos en la que cada submatriz65 % Cneu(2,3,i) contiene la tensión en sentido tangencial (Cneu(1,1:3,i)) y66 % normal (Cneu(2,1:3,i)), en el punto inicial (Cneu(1:2,1,i)), medio67 % (Cneu(1:2,2,i)) y final (Cneu(1:2,3,i)) del lado Neumman i−ésimo.68 %69 % zdir [−] [1xnzdir2] Vector en el que la componente i−ésima es el índice70 % del nodo Dirichlet i−ésimo.71 %72 % zdesp [m] [2xnzdir2] Matriz que recoge en la columna i−ésima el73 % desplazamiento en x del nodo Dirichlet i−ésimo en la primera componente y74 % el desplazamiento en y del nodo Dirichlet i−ésimo en la segunda.75 %76 % info [−] [1xnz2] Vector que en la componente i−ésima contiene un 1 si el77 % nodo i−ésimo pertenece a la frontera del dominio y un 0 si el nodo78 % i−ésimo pertenece al interior del dominio.79 %80 % padres [−] [1xn2] Vector que recoge en la componente i−ésima el índice81 % del triángulo de la malla primera de la que proviene el elemento i−ésimo82 % de la malla segunda. En caso de no poseer ningún padre (por no ser un83 % elemento subdividido), la componente i−ésima será nula.84 %85 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%86

87 % Los elementos iniciales no provienen de ningún elemento padre.88 padres=zeros(size(T,2),1);89

90 % Matrices de índices.91 P1=[1 2; 2 3; 3 1];92 P2=[1 4 2;2 5 3; 3 6 1];93

94 % Se ejecuta el refinamiento rojo para cada elemento de lista.95 for k=1:length(lista), % Bucle de elementos.96

97 % Obtención de la nuevas T y z.98

99 % Se toma la columna de la matriz T relativa al elemento100 % lista(k)−ésimo y se guarda el tamaño inicial de la matriz z.

262

Page 283: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

101 f(1:6)=T(1:6,lista(k));102 nz=size(z,2);103

104 % Se crea la matriz M que contiene en cada fila los índices de los105 % vértices de los nuevos triángulos.106 clear M107 M(1:3,1:4)=[f(1) f(4) f(6); f(2) f(5) f(4); f(3) f(6) f(5); f(4) f(5) f

(6) ]';108

109 % Se modifica la matriz M para incluirle los nodos medios y crearlos110 % si no existen.111 cz=1;112 for j1=1:4, % Bucle de triángulos.113 for j2=1:3, % Bucle de lados.114 % Se hallan las coordenadas del punto medio del lado j2 del115 % triángulo j1 (j1 es un triángulo nuevo).116 c=(z(:,M(P1(j2,1),j1))+z(:,M(P1(j2,2),j1)))/2;117

118 % Se busca si ya existen esas coordenadas.119 s=buscacoluex(z,c);120

121 % Si no existen, se añade a la matriz z.122 if s==0123 z(1:2,nz+cz)=c;124

125 if info(M(P1(j2,1),j1))==0 || info(M(P1(j2,2),j1))==0126 info(nz+cz)=0;127 else128 if j2==2 || j1==4,129 info(nz+cz)=0;130 else131 info(nz+cz)=1;132 end133 end134

135 M(j2+3,j1)=nz+cz;136 cz=cz+1;137 else138 M(j2+3,j1)=s;139 end140 end141 end142

143 % La matriz M está lista para incluirse en la matriz T, pero se hace al144 % final porque hay que recurrir a la T original.145

146 % Modificación de isn, Cneu, zdir y zdesp.147

148 % Se busca si los nodos del triángulo original eran exteriores o no.149 I=info(f);150

151 for j=1:3, % Bucle de lados.

263

Page 284: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

152 % Se busca si el nodo central del lado j del triángulo original era153 % exterior, en caso afirmativo es un lado exterior y hay que154 % modificar las matrices isn y Cneu o zdir y zdesp.155 if I(P2(j,2))==1,156

157 % Se trataba de un lado exterior. Se busca si era Neumman o158 % Dirichlet.159

160 s2=find(T(P2(j,2),lista(k))==zdir(1,:));161 if size(s2,2)==0, s2=0; end162

163 if s2==0164 % Se trata de un lado Neumman.165

166 % Se amplía la matriz isn.167 s=buscacolu(isn([1,3],:),T(P1(j,:),lista(k)));168 if j==1,169 isn(1:3,s)=[M(1,1),M(4,1),M(2,1)];170 isn(1:3,size(isn,2)+1)=[M(3,2) M(6,2) M(1,2)];171 else172 if j==2,173 isn(1:3,s)=[M(1,2),M(4,2),M(2,2)];174 isn(1:3,size(isn,2)+1)=[M(3,3) M(6,3) M(1,3)];175 else176 isn(1:3,s)=[M(1,3),M(4,3),M(2,3)];177 isn(1:3,size(isn,2)+1)=[M(3,1) M(6,1) M(1,1)];178 end179 end180

181 % Se amplía la matriz Cneu.182 NN(1:2,1:3)=Cneu(1:2,1:3,s);183 Cneu(1:2,1:3,s)=[NN(1:2,1) 3/8*NN(1:2,1)+3/4*NN(1:2,2)−1/8*

NN(1:2,3) NN(1:2,2)];184 Cneu(1:2,1:3,size(isn,2))=[NN(1:2,2) −1/8*NN(1:2,1)+3/4*NN

(1:2,2)+3/8*NN(1:2,3) NN(1:2,3)];185

186 else187 % Se trata de un lado tipo Dirichlet.188

189 % Se amplía el vector zdir.190 if j==1,191 zdir(1,size(zdir,2)+1)=M(4,1);192 zdir(1,size(zdir,2)+1)=M(6,2);193 else194 if j==2,195 zdir(1,size(zdir,2)+1)=M(4,2);196 zdir(1,size(zdir,2)+1)=M(6,3);197 else198 zdir(1,size(zdir,2)+1)=M(4,3);199 zdir(1,size(zdir,2)+1)=M(6,1);200 end201 end

264

Page 285: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

202

203 % Se amplía la matriz zdesp.204 s1=find(T(P2(j,1),lista(k))==zdir(1,:));205 s3=find(T(P2(j,3),lista(k))==zdir(1,:));206

207 D(1:2,1:3)=[zdesp(1:2,s1) zdesp(1:2,s2) zdesp(1:2,s3)];208 zdesp(1:2,size(zdesp,2)+1)=3/8*D(1:2,1)+3/4*D(1:2,2)−1/8*D

(1:2,3);209 zdesp(1:2,size(zdesp,2)+1)=−1/8*D(1:2,1)+3/4*D(1:2,2)+3/8*D

(1:2,3);210 end211 end212 end213

214 % La componente del elemento que se ha subdividido se reserva para el215 % triángulo central.216 T(1:6,lista(k))=M(1:6,4);217

218 % El resto de triángulos creados se incluye al final de la matriz T.219 T=[T,M(1:6,1:3)];220

221 % Se deja constancia de los padres.222 padres(k)=k;223 padres(length(padres)+1:length(padres)+3)=k;224 end

265

Page 286: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

Código 49: vectores.m: Programa para obtener el conjunto de vectores normales exteriores ytangenciales antihorarios a cada lado de cada triángulo.

1 function [tg,nm,lado]=vectores(X,Y)2 %3 % DESCRIPCIÓN.4 %5 % Programa para obtener los vectores tangenciales unitarios en sentido6 % antihorario y los normales unitarios normales exteriores a los tres lados7 % de cada uno de los triángulos de la partición.8 %9 % ENTRADAS.

10 %11 % X [m] [6xn] Matriz que contiene en la columna i−ésima las 6 coordenadas12 % x de los 6 nodos que componen el triángulo i−ésimo.13 %14 % Y [m] [6xn] Matriz que contiene en la columna i−ésima las 6 coordenadas15 % y de los 6 nodos que componen el triángulo i−ésimo.16 %17 % SALIDAS.18 %19 % tg [−] [2x3xn] Estructura de datos en la que cada submatriz tg(:,:,i)20 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,21 % las coordenadas x e y de los vectores tangenciales unitarios en sentido22 % antihorario a los lados 1, 2 y 3 respectivamente.23 %24 % nm [−] [2x3xn] Estructura de datos en la que cada submatriz nm(:,:,i)25 % recoge, para el triángulo i−ésimo, en cada una de sus columnas 1, 2 y 3,26 % las coordenadas x e y de los vectores normales unitarios exteriores a los27 % lados 1, 2 y 3 respectivamente.28 %29 % lado [m] [3xn] Matriz que recoge en la columna i−ésima la longitud de los30 % lados 1, 2 y 3 del triángulo i−ésimo en la componente 1, 2 y 331 % respectivamente.32 %33 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34

35 % Cálculo de los vectores tangentes no unitarios.36 tgnu(1,1:3,:)=[X(2,:)−X(1,:); X(3,:)−X(2,:); X(1,:)−X(3,:)];37 tgnu(2,1:3,:)=[Y(2,:)−Y(1,:); Y(3,:)−Y(2,:); Y(1,:)−Y(3,:)];38

39 % Cálculo de los vectores normales exteriores no unitarios a través de los40 % vectores tangentes no unitarios.41 nmnu(1,1:3,:)=tgnu(2,1:3,:);42 nmnu(2,1:3,:)=−tgnu(1,1:3,:);43

44 % Cálculo de la longitud de los lados.45 lado2(1,1:3,:)=sqrt(tgnu(1,:,:).^2+tgnu(2,:,:).^2);46

47 % Transformación de vectores no unitarios a vectores unitarios.48 tg(1,1:3,:)=tgnu(1,1:3,:)./lado2(1,1:3,:);49 tg(2,1:3,:)=tgnu(2,1:3,:)./lado2(1,1:3,:);

266

Page 287: bibing.us.esbibing.us.es/proyectos/abreproy/60258/descargar...Agradecimientos En primer lugar, quiero agradecer a mi Director de Proyecto, Bosco García Archilla, su dedicación,meticulosidad,pacienciay,sobretodo,sufirmezaytenacidadenlacons

50 nm(1,1:3,:)=nmnu(1,1:3,:)./lado2(1,1:3,:);51 nm(2,1:3,:)=nmnu(2,1:3,:)./lado2(1,1:3,:);52

53 % Redefinición de la longitud de los lados para ajustar las dimensiones de54 % los argumentos de salida.55 lado(1:3,:)=lado2(1,1:3,:);

267