elasticidad 2d - web.mat.upc.edu

87
Elasticidad 2D 1 / 87 Elasticidad 2D Rafael Ramírez Ros Clases MN-P12 & MN-P13

Upload: others

Post on 26-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 1 / 87

Elasticidad 2D

Rafael Ramírez Ros

Clases MN-P12 & MN-P13

Page 2: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 2 / 87

Contenidos

1 Problema

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 3: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 3 / 87

Introducción

Este bloque está compuesto por tres prácticas dondeestudiamos problemas de elasticidad plana.Dedicaremos dos clases a esas tres prácticas.Las características más importantes en cada práctica son

El tipo y el número de elementos del mallado; yEl tipo problema que debemos estudiar, que será

O bien, un problema de deformación (strain) plana;O bien, un problema de tensión (stress) plana.

# Elementos Problema de4.1 1 Triángulo Tensión 2D4.2 427 Triangulos Tensión 2D4.3 433 Cuadriláteros Tensión 2D

Page 4: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 4 / 87

Problema

Índice

1 Problema

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 5: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 5 / 87

Problema

Geometría

La geometría de un problema de elasticidad plana sedefine mediante dos matrices:

nodes (array nNodes x 2) = coordenadas de cada nododel mallado, escritas por filas; yelem (array nElem x nVert) = índices de los vérticesde cada elemento del mallado, escritos por filas.

Observaciones:1 nVert=3 en mallados triangulares;2 nVert=4 en mallados cuadrangulares;3 No importa el orden global de nodos y elementos; pero4 Los vértices de cada elemento deben estar ordenados en

sentido antihorario.

Page 6: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 6 / 87

Problema

Física

La física de un problema de elasticidad plana se definemediante tres parámetros:

E > 0 es el módulo de Young;ν ∈ (0,1/2] es el coeficiente de Poisson; y

th =

1, en problemas de deformación plana,espesor, en problemas de tensión plana.

Observaciones:1 Supondremos que estos parámetros son constantes en

cada elemento. Elementos diferentes podrían tenerparámetros diferentes.

2 Es necesario expresar todas las cantidades físicas enunidades compatibles (usualmente, unidades del S.I.)

3 En problemas con desplazamientos pequeños, lasunidades de longitud pueden ser cm o mm.

4 Kilo: 1k = 103, Mega: 1M = 106 y Giga: 1G = 109.5 El coeficiente de Poisson es adimensional.

Page 7: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 7 / 87

Problema

La matriz de elasticidad

La matriz de elasticidad es una matriz simétrica 3× 3 de la forma

C =

c11 c12 0c21 c22 00 0 c33

.

En los problemas de deformación plana, se cumple que

c11 = c22 =E(1− ν)

(1 + ν)(1− 2ν),

c12 = c21 =νc11

1− ν =Eν

(1 + ν)(1− 2ν),

c33 =E

2(1 + ν).

En los problemas de tensión plana, se cumple que

c11 = c22 =E

1− ν2 , c12 = c21 = νc11 =Eν

1− ν2 , c33 =E

2(1 + ν).

Elementos diferentes podrían tener matrices de elasticidad diferentes.

Page 8: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 8 / 87

Problema

Grados de libertad (Degrees of freedom)

Un mallado 2D con nNodes nodos tienenDoF=2*nNodes grados de libertad.Situaremos las componentes de losdesplazamientos en un solo vector columna ude nDoF componentes con las siguientescorrespondencias:

Nodo uxn uyn

n u(2*n-1) u(2*n)

Es decir, empezamos con las doscomponentes del 1er nodo, después ponemoslas dos componentes del 2o nodo, etcétera.Usaremos la misma convención con el vectorde cargas Q.

Ejemplo connNodes=5nDoF=10

u =

ux1uy1ux2uy2ux3uy3ux4uy4ux5uy5

.

Page 9: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 9 / 87

Problema

Método de elementos finitos (MEF)

Consiste en resolver SLs de la forma Ku = F + Q, dondeK =

(Kij)

1≤i,j≤N = matriz de rigidez global (es simétrica);

u =

u1...

uN

= vector de variables primarias global;

F =

F1...

FN

= vector de variables secundarias global; y

Q =

Q1...

QN

= vector de variables secundarias global.

K , F y Q se obtienen ensamblando objetos locales. F a partirde las fuerzas internas (peso) y Q a partir de las cargas.N = nDoF = doble del número de nodos del mallado.

Page 10: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 10 / 87

Problema

Matriz de rigidez local: Elementos triangulares

Sea Ωe un elemento triangular de vértices pe` = (x`, y`) —ordenados

en sentido antihorario— donde ` = 1, 2, 3 es el índice local.Sea Ce la matriz de elasticidad local 3× 3 del elemento Ωe.

Area del triángulo: Ae =12

∣∣∣∣∣∣1 x1 y1

1 x2 y2

1 x3 y3

∣∣∣∣∣∣ = Área[Ωe].

β =

β1

β2

β3

=

y2 − y3

y3 − y1

y1 − y2

y γ =

γ1

γ2

γ3

=

x3 − x2

x1 − x3

x2 − x1

.

La matriz de deformación del triángulo Ωe es la matriz 3× 6 dada por

Be =1

2Ae

β1 0 β2 0 β3 00 γ1 0 γ2 0 γ3

γ1 β1 γ2 β2 γ3 β3

.

Matriz de rigidez local: K e = th · Ae · (Be)′ · Ce · Be.Nota: K e es una matriz simétrica 6× 6.

Page 11: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 11 / 87

Problema

Vector fuerzas internas local: Elementos triangulares

Sea Ωe el elemento triangular de la página anterior y Ae = Área[Ωe].

Si la fuerza interna es constante en Ωe: f (x , y) ≡ f e =

(f ex

f ey

),

entonces el vector de fuerzas internas local del triángulo Ωe es

F e =Aeth

3

f e

f e

f e

=Aeth

3

f ex

f ey

f ex

f ey

f ex

f ey

.

Es decir, la fuerza se equidistribuye entre los tres vértices.Usualmente, la única fuerza interna es debida al peso de la pieza:

f e =

(f ex

f ey

)=

(0

−ρg

),

donde g = 9.8 m/s2 = 980 cm/s2 = 9800 mm/s2 es la aceleracióndebida a la gravedad y ρ es la densidad del material de la pieza.

Page 12: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 12 / 87

Problema

Post-proceso sobre elementos triangulares

Sea Ωe el triángulo de vértices pi , pj y pk : elem(e,:)=[i,j,k].

Sea ue =

u i

u j

uk

, con u i =

(uxi

uyi

), u j =

(uxj

uyj

)y uk =

(uxk

uyk

),

el vector 6× 1 de desplazamientos de los tres vértices de Ωe.Sea Ce la matriz 3× 3 de elasticidad del triángulo Ωe.Sea Be la matriz 3× 6 de deformación del triángulo Ωe.

Calculamos tres objetos constantes asociados a Ωe:

Deformación: εe = Beue =

εexx

εeyy

γexy = 2εe

xy

=

∂ue

x∂x∂ue

y∂y

∂uex

∂y +∂ue

y∂x

;

Tensión: σe = Ceεe = CeBeue =

σexx

σeyy

σexy = τ e

xy

; y

Tensión Von Mises: σeVM =

√(σe

xx )2 − σexxσ

eyy + (σe

yy )2 + 3(σexy )2.

Page 13: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 13 / 87

Repositorio oficial

Índice

1 Problema

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 14: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 14 / 87

Repositorio oficial

Función planeElasticityMatrix (no oficial)

1 function C = planeElasticityMatrix(E,nu,stressTrue)

donde:C (array 3 x 3) = matriz de elasticidad;E = módulo de Young;nu = coeficiente de Poisson; y

stressTrue =

1, problemas de tensión plana,0, problemas de deformación plana.

Page 15: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 15 / 87

Repositorio oficial

Función planeElastTriangStiffMatrix (no oficial)

1 function Ke = planeElastTriangStiffMatrix(nodes,elem,e,C,th)

donde:Ke (array 6 x 6) = matriz de rigidez local del triángulo e;nodes (array nNodes x 2) = coordenadas de cada nododel mallado triangular, escritas por filas;elem (array nElem x 3) = índices de los tres vértices decada triángulo del mallado, escritos por filas;e = índice del triángulo;C (array 3 x 3) = matriz de elasticidad de cada triángulo;

th =

1, en problemas de deformación plana,espesor, en problemas de tensión plana.

Page 16: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 16 / 87

Repositorio oficial

Función planeElastQuadStiffMatrix

1 function Ke = planeElastQuadStiffMatrix(nodes,elem,e,C,th)

donde:Ke (array 8 x 8) = matriz de rigidez local del elemento e;nodes (array nNodes x 2) = coordenadas de cada nododel mallado cuadrangular, escritas por filas;elem (array nElem x 4) = índices de los cuatro vérticesde cada cuadrilátero del mallado, escritos por filas;e = índice del cuadrilátero;C (array 3 x 3) = matriz de elasticidad de cadacuadrilátero; y

th =

1, en problemas de deformación plana,espesor, en problemas de tensión plana.

Page 17: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 17 / 87

Repositorio oficial

Función applyLoadsTriang (ahora oficial)

1 function Q = applyLoadsTriang(nodes,elem,loadNodes,Q,loadForce);

donde:nodes (array nNodes x 2) = coordenadas de cada nododel mallado triangular, escritas por filas;elem (array nElem x 3) = índices de los tres vértices decada triángulo del mallado, escritos por filas;loadNodes (vector fila o columna) = índices de los nodoscuyas cargas constantes queremos implementar;Q (array nNodes x 1) = vector de variables secundariasglobal; yloadForce (array 2 x 1) = vector de cargas constantes.

Advertencia: Q se modifica dentro de la función.

Page 18: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 18 / 87

Repositorio oficial

Función applyLoadsQuad

1 function Q = applyLoadsQuad(nodes,elem,loadNodes,Q,loadForce)

donde:nodes (array nNodes x 2) = coordenadas de cada nododel mallado cuadrangular, escritas por filas;elem (array nElem x 4) = índices de los cuatro vérticesde cada cuadrilátero del mallado, escritos por filas;loadNodes (vector fila o columna) = índices de los nodoscuyas cargas constantes queremos implementar;Q (array nNodes x 1) = vector de variables secundariasglobal; yloadForce (array 2 x 1) = vector de cargas constantes.

Advertencia: Q se modifica dentro de la función.

Page 19: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 19 / 87

Repositorio oficial

Función computeTriangStrainStressVM (no oficial)

1 function [strain,stress,VonMises]=computeTriangStrainStressVM(nodes,elem,u,C)

donde:

nodes (array nNodes x 2) = coordenadas de cada nodo del malladotriangular, escritas por filas;

elem (array nElem x 3) = índices de los tres vértices de cadatriángulo del mallado, escritos por filas;

u (array nDoF x 1) = desplazamientos en cada nodo;

C (array 3 x 3) = matriz de elasticidad;

strain (array nElem x 3) = las tres componentes de la deformaciónen cada triángulo, escritas por filas;

stress (array nElem x 3) = las tres componentes de la tensión encada triángulo, escritas por filas; y

VonMises (array nElem x 1) = tensión Von Mises en cada triángulo.

Nota: strain, stress y VonMises son constantes en cada triángulo.

Page 20: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 20 / 87

Repositorio oficial

Función computeQuadStrainStressVM

1 function [stress,VonMises]=computeQuadStrainStressVM(nodes,elem,u,C)

donde:

nodes (array nNodes x 2) = coordenadas de cada nodo del malladocuadrangular, escritas por filas;

elem (array nElem x 4) = índices de los cuatro vértices de cadacuadrilátero del mallado, escritos por filas;

u (array nDoF x 1) = desplazamientos en cada nodo;

C (array 3 x 3) = matriz de elasticidad;

stress (array nNodes x 3) = las tres componentes de la tensión encada nodo; y

VonMises (array nNodes x 1) = tensión de Von Mises en cada nodo.

Notas:

stress y VonMises no son constantes en cada cuadrilátero.

Esta función, al contrario que la anterior, no devuelve el argumentostrain.

Page 21: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 21 / 87

Repositorio oficial

Función plotElements

1 function plotElements(nodes, elem, numbering)

donde:nodes (array nNodes x ndim) = coordenadas de cadanodo del mallado, escritas por filas;elem (array nElem x nVert) = índices de los vérticesde cada elemento, escritos por filas;

numbering =

1, para numerar nodos y elementos0, en caso contrario

Nota: En esta sección estudiamos problemas 2D: ndim=2. Ysolo consideramos mallados triangulares: nVert = 3 ymallados cuadrangulares: nVert = 4.

Page 22: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 22 / 87

Repositorio oficial

Función plotPlaneNodElemDespl

1 function plotPlaneNodElemDespl(nodes,elem,u,esc);

donde:nodes (array nNodes x ndim) = coordenadas de cadanodo del mallado, escritas por filas;elem (array nElem x nVert) = índices de los vérticesde cada elemento del mallado, escritos por filas;u (array nDoF x 1) = desplazamiento de todos los nodosde la estructura; yesc = factor de amplificación de los desplazamientos.

Nota: Solo tiene sentido invocar a esta función después deresolver el sistema Ku = Q.

Page 23: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 23 / 87

Repositorio oficial

Función plotContourSolution

1 function plotContourSolution(nodes,elem,u,titulo,paleta)

donde:nodes (array nNodes x ndim) = coordenadas de cadanodo del mallado, escritas por filas;elem (array nElem x nVert) = índices de los vérticesde cada elemento del mallado, escritos por filas;u (array nNodes x 1) = valores sobre los nodos;titulo (string) = texto del título;paleta (string) = paleta de colores usada.

Nota: Matlab tiene casi 20 paletas de color. Algunos ejemplosson ’jet’, ’gray’, ’cool’, ’hot’, ’spring’, ’summer’,’autumn’, ’winter’ y ’copper’.

Page 24: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 24 / 87

Repositorio oficial

Función plotStressVM

1 function plotStressVM(nodes, elem, VonMises)

donde:nodes (array nNodes x ndim) = coordenadas de cadanodo del mallado triangular, escritas por filas;elem (array nElem x 3) = índices de los vértices decada triángulo del mallado, escritos por filas;VonMises (array nElem x 1) = valores de la tensión deVon Mises en cada triángulo.

Nota 1: La tensión de Von Mises es constante en cada triángulo.Nota 2: Si el mallado es cuadrangular, entonces usaremos la funciónplotContourSolution para representar la tensión de Von Mises.

Page 25: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 25 / 87

Repositorio oficial

Función plotPlaneElasticity (no oficial)

1 function plotPlaneElasticity(nodes,elem,fixedN,loadN,u,VM,whatPlot)

donde:nodes (array nNodes x ndim) = coordenadas de cada nodo delmallado, escritas por filas;elem (array nElem x nVert) = índices de los vértices de cadaelemento del mallado, escritos por filas;fixedN (array ) = índices de los nodos fijos;loadN (array ) = índices de los nodos con cargas;u (array nDoF x 1) = desplazamientos de los nodos; y

VM = tensión de Von Mises =

array nElem x 1, si nVert=3,array nNodes x 1, si nVert=4.

whatPlot =

6, Draw 6-in-1 plot,[p1 p2 p3 p4 p5 p6], Draw some plots.

Notas:Esta función “sustituye” a las anteriores cuatro funciones de dibujo.Acepta mallados triangulares y cuadrangulares.

Page 26: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 26 / 87

Comandos específicos

Índice

1 Problema

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 27: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 27 / 87

Comandos específicos

Ensamblar K

1 K = zeros(nDoF); %Space for global stiff matrix2 rows = zeros(2*nVert,1); %Space for indexes of rows3 for e=1:nElem %Run over all elements4 Ke = planeElastXXXXStiffMatrix(nodes,elem,e,C,th);5 rows(1:2:end) = 2*elem(e,:)-1; %Indexes of x-components6 rows(2:2:end) = 2*elem(e,:); %Indexes of y-components7 colums = rows;8 K(rows,colums) = K(rows,colums) + Ke; %Assembly9 end

donde:XXXX = Triang en mallados triangulares; yXXXX = Quad en mallados cuadrangulares.

Recordatorio: Las dos componentes que corresponden al nodode índice n tienen índices consecutivos: 2*n-1 y 2*n.

Page 28: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 28 / 87

Comandos específicos

Ensamblar K y F en mallados triangulares

1 K = zeros(nDoF); %Space for global stiff matrix2 F = zeros(nDoF,1); %Space for global internal force vector3 rows = zeros(2*nVert,1); %Space for indexes of rows4 for e=1:nElem %Run over all elements5 Ke = planeElastTriangStiffMatrix(nodes,elem,e,C,th);6 x = nodes(elem(e,:),1); %x-coord. of the 3 vertexes7 y = nodes(elem(e,:),2); %y-coord. of the 3 vertexes8 Ae = det([ones(3,1),x,y])/2; %Area of the triangle9 Fe = -Ae*th*rho*g*[0;1;0;1;0;1]/3;

10 rows(1:2:end) = 2*elem(e,:)-1; %Indexes of x-components11 rows(2:2:end) = 2*elem(e,:); %Indexes of y-components12 colums = rows;13 K(rows,colums) = K(rows,colums) + Ke; %Assembly of K14 F(rows) = F(rows) + Fe; %Assembly of F15 end

Nota: Suponemos que la pieza está hecha con un material dedensidad rho y que g es la aceleración de la gravedad.

Page 29: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 29 / 87

Comandos específicos

Calcular la matriz displacements

Objetivo: Dado un vector columna u de nDoF=2*nNodescomponentes, creamos una matriz displacements detamaño nNodes x 2 tal que las componentes x e y de usean las columnas 1 y 2 y de la matriz displacements.Instrucción:

1 displacements = [u(1:2:end),u(2:2:end)];

Ejemplo: Si nNodes=3 nodos, entonces nDoF=6 y

u =

ux1uy1ux2uy2ux3uy3

displacements =

ux1 uy1ux2 uy2ux3 uy3

.

Page 30: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 30 / 87

Cuestiones

Índice

1 Problema

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 31: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 31 / 87

Cuestiones

1 Escribe tu propia función planeElasticityMatrix.2 Escribe tu propia función planeElastTriangStiffMatrix.3 Escribe tu propia función computeTriangStrainStressVM.4 Comprueba que (y explica el porqué) todas las matrices de

rigidez locales son iguales al aplicar el MEF al problema dedeformación plana determinado por:

El módulo de Young E = 5;

El coeficiente de Poisson ν = 1/4;

Ω =

(x , y) ∈ R2 : 0 ≤ y ≤ x ≤ 1

;

Usando el mallado triangular

1 nodes = [0,0;2 1/2,0;3 1/2,1/2;4 1,0;5 1,1/2;6 1,1];7 elem = [1,2,3; 5,3,2; 2,4,5; 3,5,6];

Page 32: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 32 / 87

Cuestiones

5 [Práctica 4.1] Considera el problema de elasticidad plana dado por:

Módulo de Young E = 3× 107 (en N/cm2);

Coeficiente de Poisson ν = 0.3;

Espesor th = 1 (en cm);

Dominio triangular Ω de vértices p1 = (0, 0),p2 = (10, 0) y p3 = (5, 10);

El mallado triangular dado por Ω1 = Ω:

1 nodes = [0,0; 10,0; 5,10];2 elem = [1, 2, 3];

La fuerza de tracción (o sea, apunta en el sentido de la normal exterior) deintensidad constante |τ | ≡ 20 (en N/cm) en el lado [p2,p3];Fijando el lado [p1,p2] en las direcciones horizontal y vertical.

a) Calcula el desplazamiento u3 del nodo p3.b) Calcula la “matriz” de deformación ε, la “matriz” de tensión σ y la tensión

de Von Mises σVM del triángulo Ω1 = Ω.c) Calcula el desplazamiento u3 teniendo en cuenta el peso de la pieza si

está hecha con un material de densidad ρ = 8× 10−3 kg/cm3.

Page 33: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 33 / 87

Cuestiones

6 [Práctica 4.2] Representa gráficamente todos los resultados obtenidosal resolver el problema de elasticidad plana dado por:

Módulo Young E = 107 (N/mm2);

Coeficiente de Poisson ν = 0.25;

Espesor th = 0.5 (en mm);

Dominio Ω obtenido al recortar elcírculo de radio 1/2 centrado enel origen del cuadrado [−1, 1]2;

Fuerza de tracción (o sea, apuntaen el sentido de la normalexterior) constante ‖τ‖ ≡ 103

(en N/mm) en el lado derecho;

Fijando el lado izquierdo en lasdirecciones horizontal y vertical;

Mallado CircleHolemesh01.

s

s

s

ss&%

'$ux ≡ 0uy ≡ 0

τx ≡ 103

τy ≡ 0

Ω

(−1,−1) (1,−1)

(−1, 1) (1, 1)

(0, 0)

Nota: En las fronteras de color cyan (CFsnaturales homogéneas) ni hay fuerzas detracción/compresión ni hemos fijadoalguna componente de losdesplazamientos.

[Las preguntas están en la siguiente página.]

Page 34: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 34 / 87

Cuestiones

a) Calcula el máximo desplazamiento horizontal (en valor absoluto)y el índice del nodo donde se produce. Comprueba que esenodo está en el lado derecho.

b) Calcula el máximo desplazamiento vertical (en valor absoluto) yel índice del nodo donde se produce. Comprueba que ese nodoestá en un lado horizontal.

c) Calcula la máxima tensión de Von Mises y el índice del triángulodonde se alcanza. Comprueba que es un triángulo-frontera.

d) Sabemos que los desplazamientos aproximados son funcioneslineales en cada triángulo Ωe. Es decir, ∃ae

x ,bex , ce

x ,aey ,be

y , cey ∈ R

tales que

ux (x , y) = aex + be

x x + cex y

uy (x , y) = aey + be

y x + cey y

∀(x , y) ∈ Ωe.

Comprueba numéricamente que se cumplen las relaciones

εexx = bex , εeyy = ce

y , γexy = ce

x + bey , ∀e = 1, . . . ,nElem.

Page 35: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 35 / 87

Cuestiones

7 [P2–Junio 2020] Representa gráficamente todos los resultadosobtenidos al resolver el problema de elasticidad plana dado por:

Módulo Young E = 106 (N/cm2);

Coeficiente de Poisson ν = 0.3;

Espesor th = 0.1 (en cm);

Dominio Ω con forma de gancho;

Fuerza constante de módulo‖τ‖ = 474 (en N/cm) y haciaabajo en la semicircunferencia deradio R = 18 cm contenida eny ≤ 0;

Fijando el lado superior en lasdirecciones horizontal y vertical;

Mallado meshHookTriang2.

[Las preguntas están en la siguiente página.]

Page 36: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 36 / 87

Cuestiones

a) Calcula el desplazamiento horizontal en el nodo 500.b) Calcula la máxima tensión de Von Mises y el índice del triángulo

donde se alcanza. Comprueba que es un triángulo-frontera.c) Calcula el desplazamiento vertical del nodo p resaltado en rojo

en la figura de la página anterior.d) Calcula el número de nodos cargados, el número de nodos

libres y la dimensión del sistema reducido.e) Dado un triángulo Ωe, notamos por ωe el correspondiente

triángulo deformado. Sea Ae = Area[Ωe] y ae = Area[ωe].Calcula los valores mínimo y máximo del cociente Ae/ae.

Page 37: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 37 / 87

Cuestiones

8 [Práctica 4.3] Representa gráficamente todos los resultados obtenidosal resolver el problema de elasticidad plana dado por:

Módulo Young E = 107 (en N/mm2);

Coeficiente de Poisson ν = 0.3;

Espesor th = 0.05 (en mm);

Dominio Ω obtenido al recortar elcírculo de radio 1/2 centrado en(1, 1) del rectángulo [0, 5]× [0, 2];

Fuerza de tracción (o sea, apunta enel sentido de la normal exterior)constante ‖τ‖ ≡ 5000 (en N/mm) enel lado derecho;

Fijando el círculo en las direccioneshorizontal y vertical;

Mallado meshPlacaForatQuad.

s

s

s

ss

&%'$

τx = 5000τy = 0

ux = 0uy = 0 Ω

(0, 0)

(1, 1)

(5, 0)

(0, 2) (5, 2)

Page 38: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 38 / 87

Cuestiones

a) Calcula el máximo desplazamiento (en módulo) y el índice delnodo donde se produce. Comprueba que es un nodo-frontera.

b) Calcula cuántos nodos se desplazan hacia arriba.c) Calcula la máxima tensión de Von Mises y el índice del nodo

donde se alcanza. Comprueba que es un nodo-frontera.d) Calcula el valor aproximado de la tensión de Von Mises en el

punto p = (3,1) por interpolación bilineal. ¿En qué elementoestá ese punto?

e) Dado un cuadrilátero Ωe, notamos por ωe el correspondientecuadrilátero deformado. Sea Ae = Area[Ωe] y ae = Area[ωe].Calcula el valor máximo del cociente |Ae − ae|/Ae.

Page 39: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 39 / 87

Cuestiones

9 [P4–Junio 2019] Representa gráficamente todos los resultadosobtenidos al resolver el problema de elasticidad plana dado por:

Módulo Young E = 107 (N/mm2);

Coeficiente de Poisson ν = 0.3;

Espesor th = 0.5 (en mm);

Dominio Ω con forma de corazón;

Fuerza constante de módulo‖τ‖ = 50 (en kN/mm) y haciaabajo en la semicircunferenciainferior;

Fijando la circunferencia superioren las direcciones horizontal yvertical;

MalladomeshEscaire2foratsQuad.

[Las preguntas están en la siguiente página.]

Page 40: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 40 / 87

Cuestiones

a) Calcula el desplazamiento en el nodo 333.b) Calcula el número de nodos cargados, el número de nodos

libres y la dimensión del sistema reducido.c) Calcula la máxima tensión de Von Mises y el índice del nodo

donde se alcanza. Comprueba que es un nodo-frontera.d) Calcula el máximo desplazamiento vertical (en valor absoluto) y

el índice del nodo donde se produce. Comprueba que es unnodo-frontera.

e) Calcula el valor de la componente σxy de la tensión σ en el nodop resaltado en rojo en la figura de la página anterior.

Page 41: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 41 / 87

Cuestiones

10 [P4–Enero 2019] Representa gráficamente todos los resultadosobtenidos al resolver el problema de elasticidad plana dado por:

Módulo Young E = 107 (N/mm2);

Coeficiente de Poisson ν = 0.3;

Espesor th = 0.05 (en mm);

Fuerza constante horizontal de módulo‖τ‖ = 1000 (en N/mm) y hacia la derecha en lasdos fronteras coloreadas;

Fijando la “circunferencia” en las direccioneshorizontal y vertical;

Mallado: Carga meshPlacaForatQuad ydespués transfórmalo con las instrucciones

1 zz = nodes(:,1)+nodes(:,2)*1i;2 ww = sqrt(2-1i*zz);3 newNodes=[real(ww),imag(ww)];

Indicación: La transformación cambia lascoordenadas de los nodos, pero no sunumeración o su carácter frontera.

Este es el mallado transformado,antes de la deformación.

Page 42: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 42 / 87

Cuestiones

a) Calcula el desplazamiento en el nodo 333.b) Calcula el número de nodos cargados, el número de nodos

libres y la dimensión del sistema reducido.c) Calcula la máxima tensión de Von Mises y el índice del nodo

donde se alcanza. Comprueba que es un nodo-frontera.d) Calcula el máximo desplazamiento vertical (en valor absoluto) y

el índice del nodo donde se produce. Comprueba que es unnodo-frontera.

e) Calcula el valor máximo de la tensión de Von Mises en los doslados-frontera cargados.

Page 43: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 43 / 87

Cuestiones

11 Representa gráficamente todos los resultados obtenidos al resolver elsiguiente problema de elasticidad plana:

Una llave inglesa Ω de espesor th = 4 (en mm) hecha de acero (o sea,módulo de Young E = 210000 (en MPa) y coeficiente de Poisson ν = 0.3);Una fuerza vertical hacia abajo total de 700N uniformemente repartidasobre los puntos de la frontera ∂Ω ∩ 80 ≤ x ≤ 150 & y = 10;Fijando ∂Ω ∩ |x | ≤ 10 & |y | ≤ 12.5 en ambas direcciones;Mallado meshClauAnglesa2.

Indicación: Usa la tolerancia tol = 2e-2 para detectar los dos tiposde nodos-frontera mencionados.

[Las preguntas están en la siguiente página.]

Page 44: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 44 / 87

Cuestiones

a) Calcula el desplazamiento en el nodo 2222.b) Calcula el número de elementos no nulos de la matriz de rigidez

global con el comando spy y el número de elementos no nulosdel vector de variables secundarias antes del post-proceso.

c) Calcula los índices de los dos nodos extremos del trozo defrontera donde se aplica la fuerza.

d) Calcula la máxima tensión de Von Mises y el índice del triángulodonde se alcanza. Comprueba que es un triángulo-frontera.

e) Calcula el desplazamiento vertical en el nodo p resaltado enrojo en la figura de la página anterior.

Page 45: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 45 / 87

Respuestas

Índice

1 Problema

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 46: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 46 / 87

Respuestas

1 Advertencia: La siguiente función no es oficial.

1 function C = planeElasticityMatrix(E,nu,stressTrue)2 %FILE: elasticityMatrixTriang.m3 %DESCRIPTION: Compute the symmetric 3x3 elasticity matrix in 2D problems4 %INPUT:5 % E = Young’s module6 % nu = Poisson’s ratio7 % stressTrue = 1, in stress problems; 0, in strain problems8 % OUTPUT: C = symmetric 3x3 elasticity matrix9

10 if stressTrue11 c11 = E/(1-nu^2);12 c22 = c11;13 c12 = nu*c11;14 c21 = c12;15 c33 = E/(2*(1+nu));16 else17 c11 = E*(1-nu)/((1+nu)*(1-2*nu));18 c22 = c11;19 c12 = c11*nu/(1-nu);20 c21 = c12;21 c33 = E/(2*(1+nu));22 end23 C = [c11,c12,0; c21,c22,0; 0,0,c33];

Page 47: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 47 / 87

Respuestas

2 Advertencia: La siguiente función no coincide con la oficial.

1 function Ke = planeElastTriangStiffMatrix(nodes,elem,e,C,th)2 %FILE: planeElastTriangStiffMatrix.m3 %DESCRIPTION: Computation of the local rigidity matrix Ke in constant-strain4 %triangular elements (CSTs)5 %INPUTS:6 %nodes (array nNodes x 2) = Coordinates of each nodes; in rows7 % elem (array nElem x 3) = Indexes of the 3 vertexes of each element; in rows8 % e = index of the triangular element9 % C = elasticity matrix of the triangular element

10 % th = small thickness for stress problems and 1 for strain problems11 %OUTPUT: Ke = local rigidity 6x6 matrix1213 nVert = size(elem,2); %Number of vertices in each element14 if nVert ~= 3 %Is the mesh triangular?15 error(’Error: Not a triangular mesh!!!’); %If not, error!16 return17 end1819 x = nodes(elem(e,:),1); %x-coordinates of the 3 vertexes (column vector)20 y = nodes(elem(e,:),2); %y-coordinates of the 3 vertexes (column vector)21 Area = det([ones(3,1),x,y])/2; %Area of the triangle22 beta = y([2,3,1])-y([3,1,2]); %Cyclic index permutation for beta(i)=y(j)-y(k)23 gamma = x([3,1,2])-x([2,3,1]); %Cyclic index permutation for gamma(i)=x(k)-x(j)24 B = [beta(1), 0, beta(2), 0, beta(3), 0;25 0, gamma(1), 0, gamma(2), 0, gamma(3);26 gamma(1), beta(1), gamma(2), beta(2), gamma(3), beta(3)]/(2*Area);27 Ke = th*Area*B’*C*B;28 end

Page 48: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 48 / 87

Respuestas

3 Advertencia: La siguiente función no es oficial.

1 function [strain,stress,VonMises] = computeTriangStrainStressVM(nodes,elem,u,C)2 %FILE: postElasticityTriang.m3 %DESCRIPTION: Computation of strain "matrices", stress "matrices" and4 %Von Mises stresses of each triangle, once displacements have been computed5 %INPUTS:6 % nodes (array nNodes x 2) = Coordinates of each nodes; in rows7 % elem (array nElem x 2) = Indexes of the nodes of each element; in rows8 % u (array nDoF x 1) = Displacements (here, nDoF=2*nNodes)9 % C (array 3 x 3) = Elasticity matrix

10 %OUTPUTS:11 % strain (array nElem x 3) = Strain "matrix" of each triangle; in rows12 % stress (array nElem x 3) = Stress "matrix" of each triangle; in rows13 % VonMises (array nElem x 1) = Von Mises stress of each triangle1415 nVert = size(elem,2); %Number of vertices in each element16 if nVert ~= 3 %Is the mesh triangular?17 error(’Error: Not a triangular mesh!!!’); %If not, error!18 return19 end

Page 49: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 49 / 87

Respuestas

21 nElem = size(elem,1); %Number of elements22 strain = zeros(nElem,3); %Space for the strain "matrices"23 stress = zeros(nElem,3); %Space for the stress "matrices"24 VonMises = zeros(nElem,1); %Space for the Von Mises stress25 for e=1:nElem26 x = nodes(elem(e,:),1); %x-coordinates of the 3 vertexes27 y = nodes(elem(e,:),2); %y-coordinates of the 3 vertexes28 Area = det([ones(3,1),x,y])/2; %Area of the triangle29 beta = y([2,3,1])-y([3,1,2]); %Cyclic index permutation beta(i)=y(j)-y(k)30 gamma = x([3,1,2])-x([2,3,1]); %Cyclic index permutation gamma(i)=x(k)-x(j)31 B = [beta(1), 0, beta(2), 0, beta(3), 0;32 0, gamma(1), 0, gamma(2), 0, gamma(3);33 gamma(1), beta(1), gamma(2), beta(2), gamma(3), beta(3)]/(2*Area);34 n1 = elem(e,1); %Index of first node of triangle e35 n2 = elem(e,2); %Index of second node of triangle e36 n3 = elem(e,3); %Index of third node of triangle e37 %The six (6 = 3*2) components associated to those three nodes38 rows = [2*n1-1; 2*n1; 2*n2-1; 2*n2; 2*n3-1; 2*n3];39 ue = u(rows); %The 6 displacements of the 3 vertexes40 strain(e,:) = (B*ue)’; %Constant strain "matrix" for triangle e41 stress(e,:) = (C*B*ue)’; %Constant stress "matrix" for triangle e42 sTxx = stress(e,1);43 sTyy = stress(e,2);44 sTxy = stress(e,3);45 VonMises(e) = sqrt(sTxx^2 - sTxx*sTyy + sTyy^2 + 3*sTxy^2); %Von Mises46 end

Page 50: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 50 / 87

Respuestas

4 La matriz de rigidez local del triángulo Ωe es la matriz simétrica

K e = th · Ae · (Be)′ · Ce · Be =

3 0 −3 1 0 −10 1 1 −1 −1 0−3 1 4 −2 −1 1

1 −1 −2 4 1 −30 −1 −1 1 1 0−1 0 1 −3 0 3

donde:

th = 1, por ser un problema de deformación plana;Ae = Area[Ωe] = 1/8;

Ce =

6 2 02 6 00 0 2

= matriz de elasticidad; y

Be = σe

−2 0 2 0 0 00 0 0 −2 0 20 −2 −2 2 2 0

= matriz deformación;

σ1 = σ3 = σ4 = 1 y σ2 = −1.Explicación: Ω3 y Ω4 son traslaciones de Ω1 que respetan suordenación local. Ω2 es una traslación más un giro de 180o de Ω1 quetambién respeta su ordenación local. El giro hace que σ2 = −1.

Page 51: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 51 / 87

Respuestas

Ventana de comandos:

1 >> Elasticidad_Question42 |Kexact - Ke| <= 0.000000e+00 for all e=1,...,4

Script:

1 %FILE: Elasticidad_Question4.m (see question 4 of slides Elasticidad)23 nodes = [0,0; 1/2,0; 1/2,1/2; 1,0; 1,1/2; 1,1];4 elem = [1,2,3; 5,3,2; 2,4,5; 3,5,6];5 nNodes = size(nodes,1); %Number of nodes6 nElem = size(elem,1); %Number of elements7 E = 5; %Young’s module8 nu = 1/4; %Poisson’s ratio9 th = 1; %It is a strain problem

10 stressTrue = 0; %It is not a stress problem11 C = planeElasticityMatrix(E,nu,stressTrue); %Elasticity matrix1213 errorKe = 0; %We initialize the error14 Kexact = [ 3, 0, -3, 1, 0, -1;15 0, 1, 1, -1, -1, 0;16 -3, 1, 4, -2, -1, 1;17 1, -1, -2, 4, 1, -3;18 0, -1, -1, 1, 1, 0;19 -1, 0, 1, -3, 0, 3]; %Exact value of Ke for all e20 for e=1:nElem %We run over all elements21 Ke = planeElastTriangStiffMatrix(nodes,elem,e,C,th);22 errorKe = max(errorKe,max(abs(Kexact-Ke),[],’all’));23 end24 fprintf(’|Kexact - Ke| <= %e for all e=1,...,%d\n’,errorKe,nElem);

Page 52: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 52 / 87

Respuestas

5 Todas estas figuras se obtienen simultáneamente con el script de las siguientespáginas, que invoca a la función plotPlaneElasticity tras calculardesplazamientos, deformaciones, tensiones, etcétera.Nota: Resultados sin tener en cuenta el peso de la pieza, cuando ρ = 0.

Page 53: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 53 / 87

Respuestas

5 a) El desplazamiento (en centímetros) del único nodo libre es

u3 =

(ux3

uy3

)=

(52/3

91/30

)· 10−6 ≈

(1.73333 · 10−5

3.03333 · 10−6

).

b) La “matriz” de deformación del triángulo Ω1 es

ε1 =

ε1xx

ε1yy

γ1xy

=

091/3052/3

· 10−7 ≈

03.03333 · 10−7

1.73333 · 10−6

.

La “matriz” de tensión de Ω1 es σ1 =

σ1xx

σ1yy

σ1xy

=

31020

.

La tensión de Von Mises de Ω1 es σ1VM ≈ 35.76311.

c) Al tener en cuenta el peso interno, el desplazamiento (encentímetros) del único nodo libre es

u3 =

(ux3

uy3

)≈(

1.73333 · 10−5

−4.89378 · 10−6

).

Page 54: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 54 / 87

Respuestas

El siguiente script proporciona los resultados:

1 >> rho=0;2 >> Elasticidad_Question53 Displacements of the free node: u_x3 = 1.73333e-05, u_y3 = 3.03333e-064 epsil_xx = 0.00000e+00, epsil_yy = 3.03333e-07, gamma_xy = 1.73333e-065 sigma_xx = 3.00000e+00, sigma_yy = 1.00000e+01, sigma_xy = 2.00000e+016 Von Mises: sigma_VM = 3.576311e+017 >> rho=8e-3;8 >> Elasticidad_Question59 Displacements of the free node: u_x3 = 1.73333e-05, u_y3 = -4.89378e-06

Script:

1 %FILE: Elasticidad_Question5.m (see question 5 of the slides Elasticidad)2 %WARNING: Before to invoke this script, one should set rho=0 or rho=8e-3.34 %1.- Geometry (nodes & elements) and physics (coefficients)5 nodes = [0,0; 10,0; 5,10]; %Vertexes of the triangle6 elem = [1, 2, 3]; %Counter-clockwise ordering7 nNodes = size(nodes,1); %Number of nodes8 nDoF = 2*nNodes; %Number of degree of freedom9 nElem = size(elem,1); %Number of elements

10 nVert = size(elem,2); %Number of vertices of each element11 E = 3e+7; %Young’s module: 3e7 N/cm^212 nu = 0.3; %Poisson’s ratio (adimensional)13 th = 1; %Thickness: 1 cm14 g = 980; %Gravity in cm/s^215 stressTrue = 1; %It is a stress problem16 drawingsTrue = 1; %0 -> No draw, 1 -> Draw 6-in-117 C = planeElasticityMatrix(E,nu,stressTrue); %Elasticity matrix

Page 55: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 55 / 87

Respuestas

19 %2.- Matrices Ke and K20 K = zeros(nDoF); %Space for the global stiff matrix21 F = zeros(nDoF,1); %Space for the global internal forces vector22 rows = zeros(2*nVert,1); %Space for the indexes of rows23 for e=1:nElem %Run over all elements24 Ke = planeElastTriangStiffMatrix(nodes,elem,e,C,th);25 x = nodes(elem(e,:),1); %x-coordinates of the 3 vertexes26 y = nodes(elem(e,:),2); %y-coordinates of the 3 vertexes27 Ae = det([ones(3,1),x,y])/2; %Area of the triangle28 Fe = -Ae*th*rho*g*[0;1;0;1;0;1]/3;29 rows(1:2:end) = 2*elem(e,:)-1; %Indexes of x-components of vertices of element e30 rows(2:2:end) = 2*elem(e,:); %Indexes of y-components of vertices of element e31 colums = rows;32 K(rows,colums) = K(rows,colums) + Ke; %Assembly of K33 F(rows) = F(rows) + Fe; %Assembly of F34 end3536 %3.- Vector Q (Loads)37 Q = zeros(nDoF,1); %Space for secondary variables vector38 loadNodes = [2;3]; %Load nodes (column vector)39 tau = 20; %Constant traction intensity (in N/cm)40 sideVector = nodes(3,:)-nodes(2,:); %Vector from node 2 to node 341 %Unitary exterior normal vector to side 2-342 %WARNING: The exterior orientation is mandatory to get the right displacements43 normalUnitExtVector = [sideVector(2); -sideVector(1)]/norm(sideVector);44 loadForce = tau*normalUnitExtVector; %Constant traction vector (in N/cm)45 Q = applyLoadsTriang(nodes,elem,loadNodes,Q,loadForce);46 Qini = Q; %Copy of the initial Q (just in case)

Page 56: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 56 / 87

Respuestas

48 %4.- Fixed & free components [Note: Do not confuse components and nodes]49 u = zeros(nDoF,1); %Space for primary variables vector50 fixedNodes = [1;2]; %Fixed nodes (column vector)51 fixedComp =[2*fixedNodes;2*fixedNodes-1]; %Fixed components (column vector)52 freeComp = setdiff(1:nDoF,fixedComp); %Complementary of fixed components53 %u(fixedComp) = 0; %Essential BC (UNNECESSARY)5455 %5.- Solve the linear system for the free components56 Km = K(freeComp,freeComp);57 FQm = F(freeComp) + Q(freeComp);58 um = Km\FQm;59 u(freeComp) = um;6061 %6.- Post-process (secondary variables, displacements, strain, stress, Von Mises)62 Q = K*u - F; %Secondary variables63 displacements = [u(1:2:end),u(2:2:end)]; %Displacements64 [strain,stress,VonMises] = computeTriangStrainStressVM(nodes,elem,u,C);65 fprintf(’Displacements of the free node: u_x3 = %12.5e, u_y3 = %12.5e\n’,...66 displacements(3,1),displacements(3,2));67 fprintf(’epsil_xx = %12.5e, epsil_yy = %12.5e, gamma_xy = %12.5e\n’,...68 strain(1,1),strain(1,2),strain(1,3));69 fprintf(’sigma_xx = %12.5e, sigma_yy = %12.5e, sigma_xy = %12.5e\n’,...70 stress(1,1),stress(1,2),stress(1,3));71 fprintf(’Von Mises: sigma_VM = %e\n’,VonMises(1));7273 %7.- Six plots (check geometry, check boundaries, comparison before-after,74 % Von Mises stress, x-displacements and y-displacements )75 if drawingsTrue76 plotPlaneElasticity(nodes,elem,fixedNodes,loadNodes,u,VonMises,6);77 end

Page 57: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 57 / 87

Respuestas

6 Todas estas figuras se obtienen simultáneamente con el script de lassiguientes páginas, que invoca a la función plotPlaneElasticitytras calcular desplazamientos, deformaciones, tensiones, etcétera.

Page 58: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 58 / 87

Respuestas

6 a) max1≤i≤nNodes

|ux,i | = |ux,256| ≈ 9.46182 · 10−4. Además, el nodo p72 está

en la frontera. En el lado derecho x = 1, pues nodes(256,1)=1.b) max

1≤i≤nNodes|uy,i | = |uy,137| ≈ 2.66673 · 10−4. Además, el nodo p137 está

en la frontera. En el lado superior y = 1, pues nodes(137,2)=1.c) max

1≤e≤nElemσe

VM = σ396VM ≈ 9.52741 · 103 y Ω396 es un triángulo-frontera con

dos vértices contenidos en el círculo de radio 1/2 centrado en el origen:

1 >> sqrt( nodes(elem(396,:),1).^2 + nodes(elem(396,:),2).^2 )’2 ans =3 5.4390e-01 5.0000e-01 5.0000e-01

d) max1≤e≤nElem

∣∣εexx − bex∣∣ ≈ 2.5 · 10−18, max

1≤e≤nElem

∣∣εeyy − cey∣∣ ≈ 7.9 · 10−19 y

max1≤e≤nElem

∣∣γexx − be

y − cex∣∣ ≈ 2.6 · 10−18.

El script de las siguientes páginas proporciona los resultados:

1 >> Elasticidad_Question62 Maximal |x-displacement| = 9.46182e-04 (in node 256)3 Maximal |y-displacement| = 2.66673e-04 (in node 137)4 Maximal sigma_VM = 9.52741e+03 (in triangle 396)5 |epsilon_xx - b_x| <= 2.5e-186 |epsilon_yy - c_y| <= 7.9e-197 |gamma_xx - b_y - c_x| <= 2.6e-18

Page 59: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 59 / 87

Respuestas

Script:

1 %FILE: Elasticidad_Question6.m (see question 6 of slides Elasticidad)23 %1.- Geometry (nodes & elements) and physics (coefficients)4 eval(’CircleHolemesh01’);5 nNodes = size(nodes,1); %Number of nodes6 nDoF = 2*nNodes; %Number of degrees of freedom7 nElem = size(elem,1); %Number of elements8 nVert = size(elem,2); %Number of vertices of each element9 E = 1e+7; %Young’s module: 1e7 N/mm^2

10 nu = 0.25; %Poisson’s ratio (adimensional)11 th = 0.5; %Thickness: 0.5 mm12 stressTrue = 1; %It is a stress problem13 drawingsTrue = 1; %0 -> No draw, 1 -> Draw 6-in-114 C = planeElasticityMatrix(E,nu,stressTrue); %Elasticity matrix1516 %2.- Matrices Ke and K [Note: F=0, so we do not need it]17 K = zeros(nDoF); %Space for the global stiff matrix18 rows = zeros(2*nVert,1); %Space for the indexes of rows19 for e=1:nElem %Run over all elements20 Ke = planeElastTriangStiffMatrix(nodes,elem,e,C,th);21 rows(1:2:end) = 2*elem(e,:)-1; %Indexes of x-components of vertices of element e22 rows(2:2:end) = 2*elem(e,:); %Indexes of y-components of vertices of element e23 colums = rows;24 K(rows,colums) = K(rows,colums) + Ke; %Assembly25 end

Page 60: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 60 / 87

Respuestas

27 %3.- Vector Q (Loads)28 Q = zeros(nDoF,1); %Space for the secondary variables vector29 tol = 1.e-3; %A small tolerance to avoid numerical errors30 loadNodes = find(nodes(:,1) > 1-tol); %Right nodes (column vector)31 loadForce = [1000;0]; %Constant traction in the x-direction32 Q = applyLoadsTriang(nodes,elem,loadNodes,Q,loadForce);33 Qini = Q; %Copy of the initial Q (just in case)3435 %4.- Fixed & free components [Note: Do not confuse components and nodes]36 u = zeros(nDoF,1); %Space for the primary variables vector37 fixedNodes = find(nodes(:,1) < -1+tol); %Left nodes (column vector)38 fixedComp =[2*fixedNodes;2*fixedNodes-1]; %Fixed components (column vector)39 freeComp = setdiff(1:nDoF,fixedComp); %Complementary of fixed components4041 %5.- Solve the linear system for the free components42 Km = K(freeComp,freeComp);43 Qm = Q(freeComp);44 um = Km\Qm;45 u(freeComp) = um;4647 %6.- Post-process (secondary var., displacements, strain, stress, Von Mises)48 Q = K*u; %Secondary variables49 displacements = [u(1:2:end),u(2:2:end)]; %Displacements50 [strain,stress,VonMises] = computeTriangStrainStressVM(nodes,elem,u,C);5152 %7.- Six plots (check geometry, check boundaries, comparison before-after,53 % Von Mises stress, x-displacements and y-displacements )54 if drawingsTrue55 plotPlaneElasticity(nodes,elem,fixedNodes,loadNodes,u,VonMises,6);56 end

Page 61: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 61 / 87

Respuestas

57 %Question 6.a) & 6.b)58 [maxD,nodeMaxD] = max(abs(displacements)); %Maximal displacements59 fprintf(’Maximal |x-displacement| = %11.5e (in node %d)\n’,maxD(1),nodeMaxD(1));60 fprintf(’Maximal |y-displacement| = %11.5e (in node %d)\n’,maxD(2),nodeMaxD(2));61 %Question 6.c)62 [maxVM,elemMaxVM] = max(VonMises); %Maximal Von Mises stress63 fprintf(’Maximal sigma_VM = %11.5e (in triangle %d)\n’,maxVM,elemMaxVM);64 %Question 6.d)65 ax = zeros(nElem,1); %Space for the column vector ax66 bx = zeros(nElem,1); %Space for the column vector bx67 cx = zeros(nElem,1); %Space for the column vector cx68 ay = zeros(nElem,1); %Space for the column vector ay69 by = zeros(nElem,1); %Space for the column vector by70 cy = zeros(nElem,1); %Space for the column vector cy71 for e=1:nElem %We run over all elements72 uxVert = displacements(elem(e,:),1); %ux-values at the 3 vertices73 uyVert = displacements(elem(e,:),2); %uy-values at the 3 vertices74 x = nodes(elem(e,:),1); %x-coord. of the 3 vertices (column vector)75 y = nodes(elem(e,:),2); %y-coord. of the 3 vertices (column vector)76 A = [ones(3,1),x,y]; %3x3 matrix of the linear system77 uxcoef = A\uxVert; %uxcoef = [axe; bxe; cxe] solution of the system78 uycoef = A\uyVert; %uycoef = [aye; bye; cye] solution of the system79 ax(e) = uxcoef(1); bx(e) = uxcoef(2); cx(e) = uxcoef(3);80 ay(e) = uycoef(1); by(e) = uycoef(2); cy(e) = uycoef(3);81 end82 maxErrorXX = max(abs(bx-strain(:,1)));83 maxErrorYY = max(abs(cy-strain(:,2)));84 maxErrorXY = max(abs(cx+by-strain(:,3)));85 fprintf(’|epsilon_xx - b_x| <= %7.1e\n’,maxErrorXX);86 fprintf(’|epsilon_yy - c_y| <= %7.1e\n’,maxErrorYY);87 fprintf(’|gamma_xx - b_y - c_x| <= %7.1e\n’,maxErrorXY);

Page 62: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 62 / 87

Respuestas

7 Las figuras se obtienen con el script de las siguientes páginas.

Page 63: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 63 / 87

Respuestas

7 a) ux,500 ≈ −4.98421.b) max

1≤e≤nElemσe

VM = σ369VM ≈ 8.6107 · 104 y Ω369 es un triángulo-frontera con

dos vértices contenidos en el círculo de radio 18 centrado en el origen:

1 >> sqrt( nodes(elem(369,:),1).^2 + nodes(elem(369,:),2).^2 )’2 ans =3 1.9500e+01 1.8000e+01 1.8000e+01

c) Al dibujar el mallado con plotElements y marcar ese vértice con elratón, vemos que p ≈ (−54, 41.57). El nodo más cercano a esascoordenadas es p171. Por tanto, p = p171. Además, uy,171 ≈ −22.39093.

d) Hay 41 nodos cargados, 1341 nodos libres y el sistema reducido tienedimensión 2682.

e) min1≤e≤nElem

Ae/ae ≈ 0.903 y max1≤e≤nElem

Ae/ae ≈ 1.0237.

El script de las siguientes páginas proporciona los resultados:

1 >> Elasticidad_Question72 ux(500) = -4.98421e+003 Maximal sigma_VM = 8.61070e+04 (in triangle 369)4 The y-displacement for node p is -2.239093e+015 There are 41 loaded nodes6 There are 1341 free nodes7 The reduced system has dimension 26828 minA_e/a_e = 9.02999e-01 & maxA_e/a_e = 1.02370e+00

Page 64: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 64 / 87

Respuestas

Script:

1 %FILE: Elasticidad_Question7.m (see question 7 of slides Elasticidad)23 %1.- Geometry (nodes & elements) and physics (coefficients)4 eval(’meshHookTriang2’);5 nNodes = size(nodes,1); %Number of nodes6 nDoF = 2*nNodes; %Number of degrees of freedom7 nElem = size(elem,1); %Number of elements8 nVert = size(elem,2); %Number of vertices of each element9 E = 1e+6; %Young’s module: 1e6 N/cm^2

10 nu = 0.3; %Poisson’s ratio (adimensional)11 th = 0.1; %Thickness: 0.1 cm12 stressTrue = 1; %It is a stress problem13 drawingsTrue = 1; %0 -> No draw, 1 -> Draw 6-in-114 C = planeElasticityMatrix(E,nu,stressTrue); %Elasticity matrix1516 %2.- Matrices Ke and K [Note: F=0, so we do not need it]17 K = zeros(nDoF); %Space for the global stiff matrix18 rows = zeros(2*nVert,1); %Space for the indexes of rows19 for e=1:nElem %Run over all elements20 Ke = planeElastTriangStiffMatrix(nodes,elem,e,C,th);21 rows(1:2:end) = 2*elem(e,:)-1; %Indexes of x-components of vertices of element e22 rows(2:2:end) = 2*elem(e,:); %Indexes of y-components of vertices of element e23 colums = rows;24 K(rows,colums) = K(rows,colums) + Ke; %Assembly25 end

Page 65: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 65 / 87

Respuestas

27 %3.- Vector Q (Loads)28 Q = zeros(nDoF,1); %Space for the secondary variables vector29 tol = 1.e-3; %A small tolerance to avoid numerical errors30 %Loaded nodes: Inferior semicircle of radius 18 centered at the origin31 loadNodes = find(sqrt(nodes(:,1).^2 + nodes(:,2).^2) < 18+tol & nodes(:,2) <tol);32 loadForce = [0;-474]; %Constant downward force33 Q = applyLoadsTriang(nodes,elem,loadNodes,Q,loadForce);34 Qini = Q; %Copy of the initial Q (just in case)3536 %4.- Fixed & free components [Note: Do not confuse components and nodes]37 u = zeros(nDoF,1); %Space for the primary variables vector38 fixedNodes = find(nodes(:,2) > 76-tol); %Top nodes (column vector)39 fixedComp =[2*fixedNodes;2*fixedNodes-1]; %Fixed components (column vector)40 freeComp = setdiff(1:nDoF,fixedComp); %Complementary of fixed components4142 %5.- Solve the linear system for the free components43 Km = K(freeComp,freeComp);44 Qm = Q(freeComp);45 um = Km\Qm;46 u(freeComp) = um;4748 %6.- Post-process (secondary var., displacements, strain, stress, Von Mises)49 Q = K*u; %Secondary variables50 displacements = [u(1:2:end),u(2:2:end)]; %Displacements51 [strain,stress,VonMises] = computeTriangStrainStressVM(nodes,elem,u,C);5253 %7.- Six plots (check geometry, check boundaries, comparison before-after,54 % Von Mises stress, x-displacements and y-displacements )55 if drawingsTrue56 plotPlaneElasticity(nodes,elem,fixedNodes,loadNodes,u,VonMises,6);57 end

Page 66: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 66 / 87

Respuestas

58 %Question 7.a)59 fprintf(’ux(500) = %11.5e\n’,displacements(500,1));60 %Question 7.b)61 [maxVM,elemMaxVM] = max(VonMises); %Maximal Von Mises stress62 fprintf(’Maximal sigma_VM = %11.5e (in triangle %d)\n’,maxVM,elemMaxVM);63 %Question 7.c)64 point = [-54,41.57]; %Point p found using plotElements & the mouse65 pointNode=find( abs(nodes(:,1)-point(1)) + abs(nodes(:,2)-point(2)) < 0.05 );66 fprintf(’The y-displacement for node p is %e\n’,displacements(pointNode,2));67 %Question 7.d)68 fprintf(’There are %d loaded nodes\n’,length(loadNodes));69 fprintf(’There are %d free nodes\n’,nNodes-length(fixedNodes));70 fprintf(’The reduced system has dimension %d\n’,length(freeComp));71 %Question 7.e)72 areaQuo = ones(nElem,1);73 nodesD = nodes + displacements; %Displaced nodes74 for e=1:nElem %We run over all elements75 eVert = elem(e,:); %Indexes of all vertices of element e76 area = polyarea(nodes(eVert,1),nodes(eVert,2)); %Area element e77 areaD = polyarea(nodesD(eVert,1),nodesD(eVert,2)); %Area deformed element e78 areaQuo(e) = area/areaD; %Quotient we want to maximize79 end80 fprintf(’minA_e/a_e = %11.5e & ’,min(areaQuo));81 fprintf(’maxA_e/a_e = %11.5e\n’,max(areaQuo));

Page 67: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 67 / 87

Respuestas

8 Las figuras se obtienen con el script de las siguientes páginas.

Page 68: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 68 / 87

Respuestas

8 a) max1≤i≤nNodes

‖u i‖ = ‖u36‖ ≈ 3.828 · 10−2 y nodes(36,:)=[5,2].

b) Hay 228 nodos con desplazamiento vertical positivo. Es decir,tales que uy > 0.

c) max1≤e≤nNodes

σeVM = σ115

VM ≈ 1.45486 · 105 y p115 es un nodo-frontera

situado en la circunferencia de radio 1/2 centrada en (1, 1):

1 >> sqrt( (nodes(115,1)-1).^2 + (nodes(115,2)-1).^2 )2 ans =3 5.0004e-01

d) El valor interpolado es σVM(p) ≈ 1.036794 · 105. Además, p estáen el elemento 424.

e) max1≤e≤nElem

|Ae − ae|Ae

≈ 1.22676 · 10−2.

El script de las siguientes páginas proporciona los resultados:

1 >> Elasticidad_Question82 Maximal |displacement| = 3.82974e-02 (in node 36)3 There are 228 nodes with y-displacement>04 Maximal sigma_VM = 1.45486e+05 (in node 115)5 The interpolated value of Von Mises at p is 1.036794e+056 Besides, p is in element 4247 max|A_e - a_e|/A_e = 1.22676e-02

Page 69: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 69 / 87

Respuestas

Script:

1 %FILE: Elasticidad_Question8.m (see question 8 of slides Elasticidad)23 %1.- Geometry (nodes & elements) and physics (coefficients)4 eval(’meshPlacaForatQuad’);5 nNodes = size(nodes,1); %Number of nodes6 nDoF = 2*nNodes; %Number of degrees of freedom7 nElem = size(elem,1); %Number of elements8 nVert = size(elem,2); %Number of vertices of each element9 E = 1e+7; %Young’s module: 1e7 N/mm^2

10 nu = 0.3; %Poisson’s ratio (adimensional)11 th = 0.05; %Thickness: 0.05 mm12 stressTrue = 1; %It is a stress problem13 drawingsTrue = 1; %0 -> No draw, 1 -> Draw 6-in-114 C = planeElasticityMatrix(E,nu,stressTrue); %Elasticity matrix1516 %2.- Matrices Ke and K [Note: F=0, so we do not need it]17 K = zeros(nDoF); %Space for the global stiff matrix18 rows = zeros(2*nVert,1); %Space for the indexes of rows19 for e=1:nElem %Run over all elements20 Ke = planeElastQuadStiffMatrix(nodes,elem,e,C,th);21 rows(1:2:end) = 2*elem(e,:)-1; %Indexes of x-components of vertices of element e22 rows(2:2:end) = 2*elem(e,:); %Indexes of y-components of vertices of element e23 colums = rows;24 K(rows,colums) = K(rows,colums) + Ke; %Assembly25 end

Page 70: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 70 / 87

Respuestas

27 %3.- Vector Q (Loads)28 Q = zeros(nDoF,1); %Space for the secondary variables vector29 tol = 1.e-3; %A small tolerance to avoid numerical errors30 loadNodes = find(nodes(:,1) > 5-tol); %Right nodes (column vector)31 loadForce = [5000;0]; %Constant traction in the x-direction32 Q = applyLoadsQuad(nodes,elem,loadNodes,Q,loadForce);33 Qini = Q; %Copy of the initial Q (just in case)3435 %4.- Fixed & free components [Note: Do not confuse components and nodes]36 u = zeros(nDoF,1); %Space for the primary variables vector37 %Fixed nodes: Circle of radius 1/2 centered at (1,1)38 fixedNodes = find( sqrt((nodes(:,1)-1).^2 + (nodes(:,2)-1).^2) < 0.5+tol );39 fixedComp =[2*fixedNodes;2*fixedNodes-1]; %Fixed components (column vector)40 freeComp = setdiff(1:nDoF,fixedComp); %Complementary of fixed components4142 %5.- Solve the linear system for the free components43 Km = K(freeComp,freeComp);44 Qm = Q(freeComp);45 um = Km\Qm;46 u(freeComp) = um;4748 %6.- Post-process (secondary var., displacements, strain, stress, Von Mises)49 Q = K*u; %Secondary variables50 displacements = [u(1:2:end),u(2:2:end)]; %Displacements51 [stress,VonMises] = computeQuadStrainStressVM(nodes,elem,u,C);5253 %7.- Six plots (check geometry, check boundaries, comparison before-after,54 % Von Mises stress, x-displacements and y-displacements )55 if drawingsTrue56 plotPlaneElasticity(nodes,elem,fixedNodes,loadNodes,u,VonMises,6);57 end

Page 71: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 71 / 87

Respuestas

58 %Question 8.a)59 [maxD,nodeMaxD] = max(sqrt(displacements(:,1).^2+displacements(:,2).^2));60 fprintf(’Maximal |displacement| = %11.5e (in node %d)\n’,maxD,nodeMaxD);61 %Question 8.b)62 dispUpNodes = find( displacements(:,2) > 0 ); %Nodes with y-displacement>063 fprintf(’There are %d nodes with y-displacement>0\n’,length(dispUpNodes));64 %Question 8.c)65 [maxVM,nodeMaxVM] = max(VonMises); %Maximal Von Mises stress66 fprintf(’Maximal sigma_VM = %11.5e (in node %d)\n’,maxVM,nodeMaxVM);67 %Question 8.d)68 point = [3,1];69 for e=1:nElem %We run over all elements70 [alphas, isInside] = baryCoordQuad(nodes(elem(e,:),:), point);71 if isInside %If isinside, compute the result and break the for loop72 VMVert = VonMises(elem(e,:)); %u-values at the 4 vertices (column vector)73 VMP = dot(alphas,VMVert); %dot is the scalar product74 fprintf(’The interpolated value of Von Mises at p is %e\n’,VMP);75 fprintf(’Besides, p is in element %d\n’,e);76 break77 end78 end79 %Question 8.e)80 areaQuo = ones(nElem,1);81 nodesD = nodes + displacements; %Displaced nodes82 for e=1:nElem %We run over all elements83 eVert = elem(e,:); %Indexes of the vertices of element e84 area = polyarea(nodes(eVert,1),nodes(eVert,2));85 areaD = polyarea(nodesD(eVert,1),nodesD(eVert,2));86 areaQuo(e) = abs(area-areaD)/area; %Quotient we want to maximize87 end88 fprintf(’max|A_e - a_e|/A_e = %11.5e\n’,max(areaQuo));

Page 72: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 72 / 87

Respuestas

9 Las figuras se obtienen con el script de las siguientes páginas.

Page 73: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 73 / 87

Respuestas

9 a) u233 = (0.3070975,−0.9407586).b) Hay 19 nodos cargados, 597 nodos libres y el sistema reducido

tiene dimensión 1194.c) max

1≤e≤nNodesσe

VM = σ72VM ≈ 7.56642 · 105. Además, el nodo p72 está

en la frontera. Concretamente, en el lado vertical x = 4, puesnodes(72,:)=[4,4.4168].

d) max1≤i≤nNodes

|uy,i | = ‖uy,11‖ ≈ 9.89775 · 10−1. Además, el nodo p11

está en la frontera. Concretamente, es el nodo más a la izquierdadel dominio, pues nodes(11,:)=[-2,2].

e) Vemos que p ≈ (4, 4). El nodo más cercano a esas coordenadases p9. Por tanto, p = p9 y σxy (p) = σxy,9 ≈ 1.982675 · 105.

El script de las siguientes páginas proporciona los resultados:

1 >> Elasticidad_Question92 u(233) = (3.070975e-01,-9.407586e-01)3 There are 19 loaded nodes4 There are 597 free nodes5 The reduced system has dimension 11946 Maximal sigma_VM = 7.56642e+05 (in node 72)7 Maximal |y-displacement| = 9.89775e-01 (in node 11)8 sigma_xy(p) = 1.982675e+05

Page 74: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 74 / 87

Respuestas

Script:

1 %FILE: Elasticidad_Question9.m (see question 9 of slides Elasticidad)23 %1.- Geometry (nodes & elements) and physics (coefficients)4 eval(’meshEscaire2foratsQuad’);5 nNodes = size(nodes,1); %Number of nodes6 nDoF = 2*nNodes; %Number of degrees of freedom7 nElem = size(elem,1); %Number of elements8 nVert = size(elem,2); %Number of vertices of each element9 E = 1e+7; %Young’s module: 1e7 N/mm^2

10 nu = 0.3; %Poisson’s ratio (adimensional)11 th = 0.5; %Thickness: 0.5 mm12 stressTrue = 1; %It is a stress problem13 drawingsTrue = 1; %0 -> No draw, 1 -> Draw 6-in-114 C = planeElasticityMatrix(E,nu,stressTrue); %Elasticity matrix1516 %2.- Matrices Ke and K [Note: F=0, so we do not need it]17 K = zeros(nDoF); %Space for the global stiff matrix18 rows = zeros(2*nVert,1); %Space for the indexes of rows19 for e=1:nElem %Run over all elements20 Ke = planeElastQuadStiffMatrix(nodes,elem,e,C,th);21 rows(1:2:end) = 2*elem(e,:)-1; %Indexes of x-components of vertices of element e22 rows(2:2:end) = 2*elem(e,:); %Indexes of y-components of vertices of element e23 colums = rows;24 K(rows,colums) = K(rows,colums) + Ke; %Assembly25 end

Page 75: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 75 / 87

Respuestas

27 %3.- Vector Q (Loads)28 Q = zeros(nDoF,1); %Space for the secondary variables vector29 tol = 1.e-3; %A small tolerance to avoid numerical errors30 %Loaded nodes: Inferior semicircle of radius 1 centered at (2,2)31 loadNodes = find(sqrt((nodes(:,1)-2).^2+(nodes(:,2)-2).^2)<1+tol & nodes(:,2)<2+tol);32 loadForce = [0;-50000]; %Constant downward force33 Q = applyLoadsQuad(nodes,elem,loadNodes,Q,loadForce);3435 %4.- Fixed & free components [Note: Do not confuse components and nodes]36 u = zeros(nDoF,1); %Space for the primary variables vector37 %Fixed nodes: Circle of radius 1 centered at (6,6)38 fixedNodes = find(sqrt((nodes(:,1)-6).^2 + (nodes(:,2)-6).^2) < 1+tol);39 fixedComp =[2*fixedNodes;2*fixedNodes-1]; %Fixed components (column vector)40 freeComp = setdiff(1:nDoF,fixedComp); %Complementary of fixed components4142 %5.- Solve the linear system for the free components43 Km = K(freeComp,freeComp);44 Qm = Q(freeComp);45 um = Km\Qm;46 u(freeComp) = um;4748 %6.- Post-process (secondary var., displacements, strain, stress, Von Mises)49 Q = K*u; %Secondary variables50 displacements = [u(1:2:end),u(2:2:end)]; %Displacements51 [stress,VonMises] = computeQuadStrainStressVM(nodes,elem,u,C);5253 %7.- Six plots (check geometry, check boundaries, comparison before-after,54 % Von Mises stress, x-displacements and y-displacements )55 if drawingsTrue56 plotPlaneElasticity(nodes,elem,fixedNodes,loadNodes,u,VonMises,6);57 end

Page 76: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 76 / 87

Respuestas

58 %Question 9.a)59 fprintf(’u(233) = (%e,%e)\n’,displacements(233,1),displacements(233,2));60 %Question 9.b)61 fprintf(’There are %d loaded nodes\n’,length(loadNodes));62 fprintf(’There are %d free nodes\n’,nNodes-length(fixedNodes));63 fprintf(’The reduced system has dimension %d\n’,length(freeComp));64 %Question 9.c)65 [maxVM,nodeMaxVM] = max(VonMises); %Maximal Von Mises stress66 fprintf(’Maximal sigma_VM = %11.5e (in node %d)\n’,maxVM,nodeMaxVM);67 %Question 9.d)68 [maxYD,nodeMaxYD] = max(abs(displacements(:,2))); %Maximal |y-displacements|69 fprintf(’Maximal |y-displacement| = %11.5e (in node %d)\n’,maxYD,nodeMaxYD);70 %Question 9.e)71 point = [4,4]; %Point p found loking at the given plot72 pointNode=find( abs(nodes(:,1)-point(1)) + abs(nodes(:,2)-point(2)) < 0.05 );73 fprintf(’sigma_xy(p) = %e\n’,stress(pointNode,3));

Page 77: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 77 / 87

Respuestas

10 Las figuras se obtienen con el script de las siguientes páginas.

Page 78: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 78 / 87

Respuestas

10 a) u333 = (2.765034 · 10−2,−3.090303 · 10−4).b) Hay 49 nodos cargados, 469 nodos libres y el sistema reducido tiene

dimensión 938. Es un error común decir que hay 50 nodos cargados.c) max

1≤e≤nNodesσe

VM = σ115VM ≈ 2.83329 · 105 y p115 es un nodo-frontera

situado en la circunferencia de radio 1/2 centrada en (1, 1):

1 >> sqrt( (nodes(115,1)-1).^2 + (nodes(115,2)-1).^2 )2 ans =3 5.0004e-01

d) max1≤i≤nNodes

|uy,i | = ‖uy,36‖ ≈ 2.41114 · 10−2 y p36 es un nodo-frontera.

De hecho, es el vértice superior derecho del dominio original:nodes(36,:)=[5,2].

e) Máxima tensión de Von Mises en nodos cargados: 2.17224 · 105

El script de las siguientes páginas proporciona los resultados:

1 >> Elasticidad_Question102 u(333) = (2.765034e-02,-3.090303e-04)3 There are 49 loaded nodes4 There are 469 free nodes5 The reduced system has dimension 9386 Maximal sigma_VM = 2.83329e+05 (in node 115)7 Maximal |y-displacement| = 2.41114e-02 (in node 36)8 the maximal sigma_VM in loaded nodes is 2.17224e+05

Page 79: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 79 / 87

Respuestas

Script:

1 %FILE: Elasticidad_Question10.m (see question 10 of slides Elasticidad)23 %1.- Geometry (nodes & elements) and physics (coefficients)4 eval(’meshPlacaForatQuad’);5 zz = nodes(:,1)+nodes(:,2)*1i; %First given instruction6 ww = sqrt(2-1i*zz); %Second given instruction7 newNodes=[real(ww),imag(ww)]; %Third given instruction8 nNodes = size(nodes,1); %Number of nodes9 nDoF = 2*nNodes; %Number of degrees of freedom

10 nElem = size(elem,1); %Number of elements11 nVert = size(elem,2); %Number of vertices of each element12 E = 1e+7; %Young’s module: 1e7 N/mm^213 nu = 0.3; %Poisson’s ratio (adimensional)14 th = 0.05; %Thickness: 0.5 mm15 stressTrue = 1; %It is a stress problem16 drawingsTrue = 1; %0 -> No draw, 1 -> Draw 6-in-117 C = planeElasticityMatrix(E,nu,stressTrue); %Elasticity matrix1819 %2.- Matrices Ke and K [Note: F=0, so we do not need it]20 K = zeros(nDoF); %Space for the global stiff matrix21 rows = zeros(2*nVert,1); %Space for the indexes of rows22 for e=1:nElem %Run over all elements23 Ke = planeElastQuadStiffMatrix(newNodes,elem,e,C,th);24 rows(1:2:end) = 2*elem(e,:)-1; %Indexes of x-components of vertices of element e25 rows(2:2:end) = 2*elem(e,:); %Indexes of y-components of vertices of element e26 colums = rows;27 K(rows,colums) = K(rows,colums) + Ke; %Assembly28 end

Page 80: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 80 / 87

Respuestas

30 %3.- Vector Q (Loads)31 Q = zeros(nDoF,1); %Space for the secondary variables vector32 tol = 1.e-3; %A small tolerance to avoid numerical errors33 %Loaded nodes: We compute their indices in the original mesh34 rightNodes = find( nodes(:,1) > 5-tol ); %Right nodes35 topNodes = find( nodes(:,2) > 2-tol ); %Top nodes36 loadNodes = unique([topNodes;rightNodes]); %WARNING: Unique to avoid one repetition37 loadForce = [1000;0]; %Constant horizontal force to the right38 Q = applyLoadsQuad(newNodes,elem,loadNodes,Q,loadForce);3940 %4.- Fixed & free components [Note: Do not confuse components and nodes]41 u = zeros(nDoF,1); %Space for the primary variables vector42 %Fixed nodes: Circle of radius 0.5 centered at (1,1) in the original mesh43 fixedNodes = find( sqrt((nodes(:,1)-1).^2 + (nodes(:,2)-1).^2) < 0.5+tol );44 fixedComp =[2*fixedNodes;2*fixedNodes-1]; %Fixed components (column vector)45 freeComp = setdiff(1:nDoF,fixedComp); %Complementary of fixed components4647 %5.- Solve the linear system for the free components48 Km = K(freeComp,freeComp);49 Qm = Q(freeComp);50 um = Km\Qm;51 u(freeComp) = um;5253 %6.- Post-process (secondary var., displacements, strain, stress, Von Mises)54 Q = K*u; %Secondary variables55 displacements = [u(1:2:end),u(2:2:end)]; %Displacements56 [stress,VonMises] = computeQuadStrainStressVM(newNodes,elem,u,C);

Page 81: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 81 / 87

Respuestas

58 %7.- Six plots (check geometry, check boundaries, comparison before-after,59 % Von Mises stress, x-displacements and y-displacements )60 if drawingsTrue61 plotPlaneElasticity(newNodes,elem,fixedNodes,loadNodes,u,VonMises,6);62 end63 %Question 10.a)64 fprintf(’u(333) = (%e,%e)\n’,displacements(333,1),displacements(333,2));65 %Question 10.b)66 fprintf(’There are %d loaded nodes\n’,length(loadNodes));67 fprintf(’There are %d free nodes\n’,nNodes-length(fixedNodes));68 fprintf(’The reduced system has dimension %d\n’,length(freeComp));69 %Question 10.c)70 [maxVM,nodeMaxVM] = max(VonMises); %Maximal Von Mises stress71 fprintf(’Maximal sigma_VM = %11.5e (in node %d)\n’,maxVM,nodeMaxVM);72 %Question 10.d)73 [maxYD,nodeMaxYD] = max(abs(displacements(:,2))); %Maximal |y-displacements|74 fprintf(’Maximal |y-displacement| = %11.5e (in node %d)\n’,maxYD,nodeMaxYD);75 %Question 10.e)76 maxVMLoadNodes = max(VonMises(loadNodes));77 fprintf(’the maximal sigma_VM in loaded nodes is %11.5e\n’,maxVMLoadNodes);

Page 82: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 82 / 87

Respuestas

11 Todas estas figuras se obtienen simultáneamente con el script de lassiguientes páginas, que invoca a la función plotPlaneElasticitytras calcular desplazamientos, deformaciones, tensiones, etcétera.

Page 83: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 83 / 87

Respuestas

11 Izquierda: El comando spy(K,ms) marca con un punto azul cadacoordenada (i, j) tal que Kij 6= 0. El valor ms es el tamaño de los puntos.Derecha: Zoom escogido con el ratón, para apreciar mejor los detallesde una submatriz.

Page 84: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 84 / 87

Respuestas

11 a) u2222 = (−0.02029868,−0.7755207) mm.b) La matriz de rigidez global tiene 57338 elementos no nulos. El vector de

variables secundarias tiene 72 elementos no nulos antes del post-proceso.c) El extremo izquierdo es el nodo p492 = (79.9879, 10). El extremo derecho

es el nodo p172 = (150, 10).d) max

1≤e≤nElemσe

VM = σ2169VM ≈ 3.8402 · 102 y Ω2169 es un triángulo-frontera

con dos vértices contenidos en el lado superior y = 10:

1 >> nodes(elem(2169,:),2)’2 ans =3 1.0000e+01 1.0000e+01 9.0810e+00

e) Al dibujar el mallado con plotElements y marcar ese nodo con el ratón,vemos que p ≈ (160, 0). El nodo más cercano a esas coordenadas esp235. Por tanto, p = p235. Finalmente, uy,235 ≈ −0.8644895 mm.

El script de las siguientes páginas proporciona los resultados:

1 >> Elasticidad_Question112 u(2222) = (-2.029868e-02,-7.755207e-01)3 There are 57338 non-zero elements in matrix K4 There are 72 non-zero components in vector Qini5 The left extrem is the node 492 where x=79.98796 The right extrem is the node 172 where x=1507 Maximal sigma_VM = 3.84019e+02 (in triangle 2169)8 The y-displacement for node p is -8.644895e-01

Page 85: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 85 / 87

Respuestas

Script:

1 %FILE: Elasticidad_Question11.m (see question 11 of slides Elasticidad)23 %1.- Geometry (nodes & elements) and physics (coefficients)4 eval(’meshClauAnglesa2’);5 nNodes = size(nodes,1); %Number of nodes6 nDoF = 2*nNodes; %Number of degrees of freedom7 nElem = size(elem,1); %Number of elements8 nVert = size(elem,2); %Number of vertices of each element9 E = 2.1e5; %Steel Young’s module: 2.1e5 MPa = 2.1e5 N/mm^2

10 nu = 0.3; %Steel Poisson’s ratio (adimensional)11 th = 4; %Thickness: 4 mm12 stressTrue = 1; %It is a stress problem13 drawingsTrue = 1; %0 -> No draw, 1 -> Draw 6-in-114 C = planeElasticityMatrix(E,nu,stressTrue); %Elasticity matrix1516 %2.- Matrices Ke and K [Note: F=0, so we do not need it]17 K = zeros(nDoF); %Space for the global stiff matrix18 rows = zeros(2*nVert,1); %Space for the indexes of rows19 for e=1:nElem %Run over all elements20 Ke = planeElastTriangStiffMatrix(nodes,elem,e,C,th);21 rows(1:2:end) = 2*elem(e,:)-1; %Indexes of x-components of vertices of element e22 rows(2:2:end) = 2*elem(e,:); %Indexes of y-components of vertices of element e23 colums = rows;24 K(rows,colums) = K(rows,colums) + Ke; %Assembly25 end

Page 86: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 86 / 87

Respuestas

27 %3.- Vector Q (Loads)28 Q = zeros(nDoF,1); %Space for the secondary variables vector29 tol = 2e-2; %A small tolerance to avoid numerical errors30 %Loaded nodes: Boundary-nodes such that |x-115| <= 35 & y=1031 [bdNodes,~,~,~] = boundaryNodes(nodes,elem); %All boundary nodes32 bdLoadNodes = find( abs(nodes(bdNodes,1)-115)<35+tol & nodes(bdNodes,2)>10-tol );33 loadNodes = bdNodes(bdLoadNodes); %WARNING: Key instruction34 loadForce = [0;-10]; %Constant downward force: 700N/70mm = 10 N/mm35 Q = applyLoadsTriang(nodes,elem,loadNodes,Q,loadForce);36 Qini = Q; %Copy of the initial Q (just in case)3738 %4.- Fixed & free components [Note: Do not confuse components and nodes]39 u = zeros(nDoF,1); %Space for the primary variables vector40 %Fixed nodes: Boundary-nodes such that |x|<=10 & |y|<=12.541 bdFixedNodes=find(abs(nodes(bdNodes,1))<10+tol & abs(nodes(bdNodes,2))<12.5+tol);42 fixedNodes = bdNodes(bdFixedNodes); %WARNING: Key instruction43 fixedComp =[2*fixedNodes;2*fixedNodes-1]; %Fixed components (column vector)44 freeComp = setdiff(1:nDoF,fixedComp); %Complementary of fixed components4546 %5.- Solve the linear system for the free components47 Km = K(freeComp,freeComp);48 Qm = Q(freeComp);49 um = Km\Qm;50 u(freeComp) = um;5152 %6.- Post-process (secondary var., displacements, strain, stress, Von Mises)53 Q = K*u; %Secondary variables54 displacements = [u(1:2:end),u(2:2:end)]; %Displacements55 [strain,stress,VonMises] = computeTriangStrainStressVM(nodes,elem,u,C);

Page 87: Elasticidad 2D - web.mat.upc.edu

Elasticidad 2D 87 / 87

Respuestas

57 %7.- Six plots (check geometry, check boundaries, comparison before-after,58 % Von Mises stress, x-displacements and y-displacements )59 if drawingsTrue60 plotPlaneElasticity(nodes,elem,fixedNodes,loadNodes,u,VonMises,6);61 end62 %Question 11.a)63 fprintf(’u(2222) = (%e,%e)\n’,displacements(2222,1),displacements(2222,2));64 %Question 11.b)65 nzK = find( K(:,:) ~= 0 );66 nzQini = find( Qini(:) ~=0 );67 fprintf(’There are %d non-zero elements in matrix K\n’,length(nzK));68 fprintf(’There are %d non-zero components in vector Qini\n’,length(nzQini));69 figure() %To avoid superposition with the previous figure70 spy(K) %This command "draws" the non-zero elements of a matrix71 %Question 11.c)72 xLoadNodes = nodes(loadNodes,1); %x-coordinates of ALL loaded nodes73 [xLeft,jz] = min(xLoadNodes); %WARNING: jz is a wrong answer74 nLeft = loadNodes(jz);75 fprintf(’The left extrem is the node %d where x=%g\n’,nLeft,xLeft);76 [xRight,kz] = max(xLoadNodes); %WARNING: kz is a wrong answer77 nRight = loadNodes(kz);78 fprintf(’The right extrem is the node %d where x=%g\n’,nRight,xRight);79 %Question 11.d)80 [maxVM,elemMaxVM] = max(VonMises); %Maximal Von Mises stress81 fprintf(’Maximal sigma_VM = %11.5e (in triangle %d)\n’,maxVM,elemMaxVM);82 %Question 11.e)83 point = [160,0]; %Point p found using plotElements & the mouse84 pointNode=find( abs(nodes(:,1)-point(1)) + abs(nodes(:,2)-point(2)) < 0.05 );85 fprintf(’The y-displacement for node p is %e\n’,displacements(pointNode,2));