Software Elementos Finitos Compatible Gid PDF
Software Elementos Finitos Compatible Gid PDF
Software Elementos Finitos Compatible Gid PDF
INTRODUCCIÓN .................................................................................................3
6. Tetraedro lineal............................................................................................................................... 31
METODOLOGÍA ................................................................................................50
TRABAJO FUTURO..........................................................................................50
CONCLUSIONES ..............................................................................................51
REFERENCIAS .................................................................................................52
2
Introducción
3
Marco teórico
ξ (u ) = f
u ∈V f ∈V
A(u ) = f ,
A :V → V ′ A ∈ ξ (V ,V ′)
4
Donde V ′ es el espacio dual de V , la forma variacional débil se obtiene buscando la
única solución u ∈ V tal que:
a ( u , v ) = Au , v
a (u , v ) = f , v , ∀v ∈ V donde
f , v = ∫ fvdx
Ω
1. Ω ⊂ ℜ n
2. Cada Ω ( e ) es un conjunto compacto con una frontera Lipschitz-continua.
3. int(Ω ( i ) ) ∩ int(Ω ( j ) ) = 0, i≠ j
{F (e) ˆ → Ω (e)
F (e) : Ω }
En los análisis 2D el dominio de referencia Ω̂ se suele tomar como un triángulo
equilátero o un cuadrado, mientras que en los análisis 3D, el dominio de referencia
típicamente es un tetraedro o un hexaedro. Además sobre cada elemento se
considerarán algunos puntos especiales, llamados nodos y que generalmente incluirán
los vértices del elemento finito y se requerirá la condición adicional de que dos
elementos adyacentes tengan los compartan los nodos sobre el subconjunto
Ω ( i ) ∩ Ω ( j ) , es decir:
x ∈ Ω ( i ) ∩ Ω ( j ) ∧ ( x ∈ nod (Ω ( i ) )) → ( x ∈ nod (Ω ( j ) ))
Una vez definida la partición en elementos finitos, se define sobre cada elemento un
espacio funcional de dimensión finita, usualmente formado por polinomios de grado.
Este espacio funcional servirá para aproximar localmente la solución del problema
variacional. El problema variacional en su forma débil se plantea sobre un espacio de
dimensión no-finita, y por tanto la función buscada será una función de dicho espacio.
El problema en esa forma exacta es computacionalmente inabordable, así que en la
práctica se considerará un subespacio de dimensión finita V h del espacio vectorial
original V . Y en lugar de la solución exacta presentada anteriormente se automatizará
la proyección de la solución original sobre dicho el subespacio vectorial de dimensión
finita, es decir, se resolverá numéricamente el siguiente problema:
a (u h , v h ) = f , v h , ∀v h ∈ V h
5
Donde
u h = ∏ e ( u ) ∈ V h , es la solución aproximada.
u − uh ≤ inf
h h
u − vh
v v ∈V v
Es decir, el error dependerá ante todo de lo bien que el subespacio vectorial asociado
a la discretización en elementos finitos V h aproxime el espacio vectorial original V .
Los elementos finitos pueden ser clasificados por grupos de acuerdo al orden
polinomial que posean, lineal, cuadrático, cúbico o de mayor orden.
φ = α1 + α 2 x + α 3 y (1.1)
6
El polinomio es lineal en x , en y , y además contiene unos coeficientes que hacen
referencia a cada uno de los nodos.
φ = φ1 para x = x1 y = y1
φ = φ2 para x = x 2 y = y2 (1.3)
φ = φ3 para x = x3 y = y3
Así,
φ = α 1 + α 2 x1 + α 3 y1
φ = α 1 + α 2 x2 + α 3 y 2 (1.4)
φ = α 1 + α 2 x3 + α 3 y 3
1
α1 = [( x 2 y 3 − x3 y 2 )φ1 + ( x3 y1 − x1 y 3 )φ 2 + ( x1 y 2 − x 2 y1 )φ3 ]
2A
1
α2 = [( y 2 − y 3 )φ1 + ( y3 − y1 )φ 2 + ( y1 − y 2 )φ3 ] (1.5)
2A
1
α3 = [( x3 − x 2 )φ1 + ( x1 − x3 )φ 2 + ( x 2 − x1 )φ3 ]
2A
2 A = ( x1 y 2 − x 2 y1 ) + ( x3 y1 − x1 y 3 ) + ( x 2 y 3 − x3 y 2 ) (1.6)
1
1 ( x, y ) = [( x 2 y3 − x3 y 2 ) + ( y 2 − y3 ) x + ( x3 − x 2 ) y ] (1.8.1)
2A
1
2 ( x, y ) = [( x3 y1 − x1 y3 ) + ( y3 − y1 ) x + ( x1 − x3 ) y ] (1.8.2)
2A
1
3 ( x, y ) = [( x1 y 2 − x 2 y1 ) + ( y1 − y 2 ) x + ( x 2 − x1 ) y ] (1.8.3)
2A
7
Estas ecuaciones se ajustan a la relación general expresada por la ecuación (1.1).
Como ejemplo, el valor de 1 en el nodo 1 se puede obtener mediante la sustitución
de x = x1 , y = y1 en la ecuación (1.8.1) así obtenemos:
1
1 = [x2 y3 − x3 y 2 + y 2 x1 − y3 x1 + x3 y1 − x2 y1 ] (1.9)
2A
1 es igual a cero en los nodos 2, 3, y todos los puntos de una línea que pasan a
través de estos nodos. El valor entre paréntesis en la ecuación (1.9) también es igual a
2 A , por lo tanto tenemos
2A
1 = =1 con x = x1 , y = y1
2A
1 = 0 con x = x 2 , y = y2 y x = x3 , y = y3 (1.10)
∂φ ∂ 1 ∂ ∂
= φ1 + 2 φ 2 + 3 φ 3
∂x ∂x ∂x ∂x
∂φ ∂ 1 ∂ 2 ∂ 3
= φ1 + φ2 + φ3 (1.11)
∂y ∂y ∂y ∂y
∂ 1 y 2 + y 3
= (1.12)
∂x 2A
∂φ 1
= [( y 2 − y 3 )φ1 + ( y 3 − y1 )φ 2 + ( y1 − y 2 )φ3 ] (1.13)
∂x 2 A
8
Sin embargo es algo complicado encontrar los α i por medio de este sistema de
ecuaciones por lo cual se hace necesario escribir las funciones de forma en términos
de las coordenadas de área.
A1
L1 =
A
A
L2 = 2 (1.17)
A
A
L3 = 3
A
Las líneas Li serán paralelas al lado del triángulo opuesto al nodo i . Teniendo en
cuenta que L1 + L2 + L3 = 1 , en cualquier punto dentro del triángulo. La Fig.4 muestra
la dirección cada vez mayor para cada coordenada. Es evidente que cada Li varía
entre 0 y el largo del lado opuesto el nodo i .
9
Para un triángulo lineal, podemos definir las funciones de forma como:
1 = L1
2 = L2 (1.18)
3 = L3
x = L1 x1 + L2 x2 + L3 x3
x = L1 y1 + L2 y 2 + L3 y3 (1.19)
1 = L1 + L2 + L3
∂ i ∂ i ∂x ∂ i ∂y
= +
∂L1 ∂x ∂L1 ∂y ∂L1
∂ i ∂ i ∂x ∂ i ∂y
= + (1.21)
∂L2 ∂x ∂L2 ∂y ∂L2
∂ i ∂x ∂y ∂ i ∂ i
∂L ∂L ∂L1
1= 1 ⋅ ∂x = J ∂x (1.22)
∂ i ∂x ∂y ∂ i ∂ i
∂L ∂L2
∂L2 ∂y ∂y
2
10
La matriz de 2 x 2, se llama la matriz Jacobiana (J). Además se pude ver que L3 es
una función de φ
L3
= −1 (1.24)
L1
∂φ ∂φ ∂φ
≡ −
∂L1 ∂L1 ∂L3
∂φ ∂φ ∂φ
≡ − (1.25)
∂L2 ∂L2 ∂L2
matrix=[ 1 coordenate_node1;...
1 coordenate_node2;...
1 coordenate_node3;];
A = 0.5*det(matrix);
end
%-----------------------------------------------------------------------------
% Calculo de B
function B = calcular_B(A,coordenate_node1,coordenate_node2,coordenate_node3)
b1 = coordenate_node2(2)-coordenate_node3(2);
b2 = coordenate_node3(2)-coordenate_node1(2);
b3 = coordenate_node1(2)-coordenate_node2(2);
c1 = coordenate_node3(1)-coordenate_node2(1);
c2 = coordenate_node1(1)-coordenate_node3(1);
c3 = coordenate_node2(1)-coordenate_node1(1);
11
2. Elemento triangular cuadrático bidimensional
φ = α 1 + α 2 x + α 3 y + α 4 x 2 + α 5 xy + α 6 y 2 ( 2.1)
Los seis coeficientes indican que el elemento debe tener seis nodos.
Los elementos cúbicos o de orden superior también utilizan polinomios con términos
lineales y de orden superior, sin embargo, los límites del elemento deben ser paralelos
a los ejes de coordenadas.
φ1 = α 1 + α 2 x1 + α 3 y1 + α 4 x12 + α 5 x1 y1 + α 6 y12
φ 2 = α 1 + α 2 x2 + α 3 y 2 + α 4 x22 + α 5 x2 y 2 + α 6 y 22 (2.2)
φ6 = α 1 + α 2 x6 + α 3 y 6 + α 4 x62 + α 5 x6 y 6 + α 6 y 62
12
Como se menciono anteriormente esta metodología es un poco complicada para
encontrar los α por lo cual se escriben las ecuaciones de forma con respecto a las
coordenadas de área de la misma manera que se realizo para los triángulos.
Para el triángulo de segundo orden que se muestra en la Fig.5, las funciones de forma,
se escriben como funciones de L1 , L2 , y L3 :
1 = L1 (2 L1 − 1)
2 = L2 (2 L2 − 1)
3 = L3 (2 L3 − 1)
4 = 4 L2 L3
5 = 4 L1 L3
6 = 4 L1 L2 (2.3)
x = L1 x1 + L2 x2 + L3 x3
y = L1 y1 + L2 y2 + L3 y3 (2.4)
x = 3L2 + L3
y = L2 + 3L3 (2.5)
13
La derivada de la ecuación (1.25) utilizando la matriz Jacobiana, se convierten en:
∂x ∂x ∂x
≡ − = −1
∂L1 ∂L1 ∂L3
∂x ∂x ∂x
≡ − =2
∂L2 ∂L2 ∂L2
∂y ∂y ∂y
≡ − = −3
∂L1 ∂L1 ∂L3
∂y ∂y ∂y
≡ − = −2 ( 2. 6)
∂L2 ∂L2 ∂L2
− 1 − 3
J = (2.7)
2 − 2
∂ i ∂ i
∂x −1
∂ = J ∂∂x (2.8)
i i
∂y ∂x
∂ 5 ∂ 5 ∂ 5
= − = 4 L3 − 4 L1
∂L1 ∂L1 ∂L3
∂ 5 ∂ 5 ∂ 5
= − = −4 L1 (2.9)
∂L2 ∂L2 ∂L2
∂ i
∂x −1
4 L3 − 4 L1
∂ = J (2.10)
i − 4 L1
∂y
1 − 2 3
J −1 = (2.11)
8 − 2 − 1
14
∂ i
∂x 1 − 2 3 4 L3 − 4 L1
∂ =
i 8 − 2 − 1 − 4 L1
∂y
1 − 8 L3 − 4 L1
=
8 − 8L3 + 12 L1
1
− L3 − 2 L1
= (2.12)
3
− L3 + L1
2
Estas dos ecuaciones son aplicables en todo el elemento. Para encontrar los valores
reales de las dos derivadas, determinamos L1 , L2 y L3 en el punto (1,1) mediante la
ecuación (4.32) y el hecho de que L1 + L2 + L3 = 1
1 = 0 L1 + 3L2 + L3
1 = 0 L1 + L2 + 3L3
1 = L1 + L2 + L3 (2.13)
1
L1 =
2
1
L2 =
4
1
L3 = (2.14)
4
∂ 5 1 1
= − L3 − L1 = −
∂x 2 2
∂ 5 3 1
= − L3 + L1 = (2.15)
∂y 2 2
15
dydl1 = y(1)-x(3);
dydl2 = y(2)-x(3);
detJ1 = det(J1);
% Calculo de la matriz B
B = [dN(1,1) 0 dN(2,1) 0 dN(3,1) 0 dN(4,1) 0 dN(5,1) 0 dN(6,1) 0; ...
0 dN(1,2) 0 dN(2,2) 0 dN(3,2) 0 dN(4,2) 0 dN(5,2) 0 dN(6,2); ...
dN(1,2) dN(1,1) dN(2,2) dN(2,1) dN(3,2) dN(3,1) dN(4,2) dN(4,1) dN(5,2)
dN(5,1) dN(6,2) dN(6,1)];
end
%-----------------------------------------------------------------------------
L
a!b!
∫ L L dx = (1 + a + b + c)! 2 A
a b
1 2 (2.16)
0
La integral de longitud L se define entre dos nodos a , b . esta relación también será
válida en la definición de las integrales que son sólo una función de la longitud a lo
largo de un borde de un elemento. Para los dos elementos tridimensionales con L1 ,
L2 , y L3 se tiene:
16
L
a!b!
∫ L L L dA = (2 + a + b + c)! 2 A
a b c
1 2 3 (2.17)
0
L L
1!1!0! A
∫ 1 2 dA = ∫ L1L2 L3dA 2A =
1 1 0
(2.18)
0 0
(2 + 1 + 1 + 0)! 12
∫ ∫ f ( L , L ,L ) J dL L
0 0
1 2 3 1 2 (2.19)
17
Tabla1: Muestra los pesos y los valores de las coordenadas para las fórmulas de
integración numérica de diversos órdenes.
18
A continuación se presenta el código en Matlab par la construcción de la integración
numérica de un triangulo de 6 nodos.
%-----------------------------------------------------------------------------
%%Calcular k de del elemento
material_element = elements(element,end); % Numero de material
thickness_element = 1;
%Valores de L para la integración numerca
L =[1/2 0 1/2; 1/2 1/2 0; 0 1/2 1/2];
w = 1/3; %peso de Gauss
sum = zeros(12);
B_aux = zeros(3,12);
for p=1:3
[B detJ1] = calcular_B(x,y,L,p);
f = detJ1*B'*D{material_element}*B ;
sum = sum + f;
B_aux = B_aux + B;
end
k_element = 0.5*w*sum*thickness_element;
%-----------------------------------------------------------------------------
φ = α 1 + α 2 x + α 3 y + α 4 xy (3.1)
∂φ
= α2 +α4 y
∂x
∂φ
= α3 + α4 x (3.2)
∂y
19
.
φ = φ1 para x = −b y = −a
φ = φ2 para x=b y = −a
(3.3)
φ = φ3 para x=b y=a
φ = φ4 para x = −b y=a
φ1 + φ 2 + φ3 + φ 4
α1 =
4
φ1 − φ 2 − φ3 + φ 4
α2 =
4a
φ1 + φ 2 − φ3 − φ 4
α3 =
4b
φ1 − φ 2 + φ3 − φ 4
α4 = (3.4)
4ab
1
1 = (b − x)(a − y )
4ab
1
2 = (b + x)(a − y )
4ab
1
3 = (b + x)(a + y )
4ab
1
4 = (b − x)(a + y ) (3.6)
4ab
20
3.2 Sistema de coordenadas naturales
x = x(r , s)
y = y (r , s) (3.6)
x
r=
b
y
s= (3.7)
a
1
1 = (1 − r )(1 − s )
4
1
2 = (1 + r )(1 − s )
4
1
3 = (1 + r )(1 + s )
4
1
4 = (1 − r )(1 + s ) (3.8)
4
21
Fig.8: Sistema de coordenadas naturales
1
x= (3s + 5)
2
y =r+2 (3.9)
∂x ∂y
∂s = 1 3 0
J = ∂s
∂y 2 0 2
(3.10)
∂x
∂r ∂r
1 2 0
J −1 = (3.11)
3 0 3
(1 − s)(1 − r )
1 = (3.12)
4
∂ 1 (1 − r )
=
∂s 4
∂ 1 (1 − s )
= (3.13)
∂r 4
22
Despejando de la ecuación (3.9) y remplazando x = 2 y y = 2 tenemos
1 1
s = ( 2 x − 5) = −
3 3
r = y−2=0 (3.14)
Así
∂ 1 (1 − 0) 1
= =−
∂s 4 4
1
1 −
∂ 1 3 1
= =− (3.15)
∂r 4 3
Remplazando obtenemos
∂ 1 1 1
∂x 1 2 0 − −
∂ = 4 6
0 3 ⋅ 1 = 1 (3.16)
1
3 − −
∂y 3 3
detJ1 = det(J1);
23
% Calculo de la matriz de derivadas de las funciones de forma respecto a
% los ejes coordenados
dN = (inv(J1)*derN)';
% Calculo de la matriz B
B = [dN(1,1) 0 dN(2,1) 0 dN(3,1) 0 dN(4,1) 0; ...
0 dN(1,2) 0 dN(2,2) 0 dN(3,2) 0 dN(4,2); ...
dN(1,2) dN(1,1) dN(2,2) dN(2,1) dN(3,2) dN(3,1) dN(4,2) dN(4,1)];
end
%-----------------------------------------------------------------------------
φ = α 1 + α 2 x + α 3 y + α 4 xy + α 5 x 2 + α 6 y 2 + α 7 x 2 y + α 8 xy 2 + ( 4.1)
24
φ = φ1 para x = −b y = −a
φ = φ2 para x=0 y = −a
φ = φ3 para x=b y = −a
φ = φ4 para x=b y=0
φ = φ5 para x=b y=a
φ = φ6 para x=0 y=a
(4.2)
φ = φ7 para x = −b y=a
φ = φ8 para x = −b y=0
Sustituyendo los valores de la ecuación (2.8) a (2.7) los valores de las siguientes ocho
ecuaciones (expresado en forma de matriz):
1 −b −a ab b2 a2 − ab 2 − a 2b α 1 φ1
α φ
1 0 −a 0 0 a2 0 0 2 2
1 b −a − ab b2 a2 − ab 2 − a 2b α 3 φ3
1 b 0 0 b2 0 0 0 α 4 = φ 4 (4.3)
1 b a ab b2 a2 − ab 2 − a 2b α 5 φ5
1 0 a 0 0 a2 0 0 α 6 φ 6
1 −b a − ab b 2
a 2
− ab 2 − a 2b α φ
7 7
1 −b 0 0 b2 0 0 0 α 8 φ8
1
1 = (b − x)(a − y )(ab + ca + yb)
4(ab) 2
1
2 = (b 2 + x 2 )(a − y )
4ab 2
1
3 = (b + x)(a − y )(ax + by − ab)
4(ab) 2
1
4 = 2 (a 2 − y 2 )(b + x)
4a b
1
5 = (b + x)(a + y )(ax + by − ab)
4(ab) 2
1
6 = (b 2 − x 2 )(a + y )
4ab 2
1
7 = (b − x)(a + y )(ab + ax − by )
4(ab) 2
1
8 = 2 (a 2 − y 2 )(b − x) (4.5)
4a b
25
A continuación se presenta el código en Matlab para la construcción de la matriz B
de un elemento cuadrilátero de 8 nodos
%-----------------------------------------------------------------------------
function [B detJ1] = calcular_B(r,s,x,y)
detJ1 = det(J1);
% Calculo de la matriz B
B=[dN(1,1) 0 dN(2,1) 0 dN(3,1 0 dN(4,1) 0 dN(5,1) 0 dN(6,1) 0 dN(7,1) 0
dN(8,1) 0; 0 dN(1,2) 0 dN(2,2) 0 dN(3,2) 0 dN(4,2) 0 dN(5,2) 0 dN(6,2)
0 dN(7,2) 0 dN(8,2);dN(1,2) dN(1,1) dN(2,2) dN(2,1) dN(3,2) dN(3,1)
dN(4,2) dN(4,1) dN(5,2) dN(5,1) dN(6,2) dN(6,1) dN(7,2) dN(7,1) dN(8,2)
dN(8,1)];
%-----------------------------------------------------------------------------
26
4.2 Integración numérica por medio de la cuadratura de Gauss
1 1
∂ i ∂ j ∂ i ∂ j
= ∫ ∫ K ∂x
−1 −1
∂x
+
∂y ∂y
J drds ( 4 .7 )
1 1
∫∫ Ω
i j dxdy = ∫∫
−1 −1
i j J drds ( 4 .8)
Integración del termino derecho esta dado por la ecuación 4.7, ya no implica
polinomios simples debido a la condición 1 / J de la expresión de las derivadas con
respecto a r y s , puede llegar a ser molesto. La práctica más común es utilizar el
procedimiento de integración numérica se conoce como la cuadratura de Gauss. El
procedimiento es fácil de programar y tiene soluciones muy aproximadas para las
integrales
Una cuadratura de Gauss aproxima una integral definida por medio de una suma
ponderada de un conjunto finito de puntos. Por ejemplo, en una dimensión tenemos
1
∫ f ( r ) dr ≅ ∑W
i =1
i f ( ri ) ( 4 .9 )
−1
27
r1 = −1 / 3
r2 = 1 / 3 ( 4.10 )
r1 = −1 / 3
r2 = 1 / 3
s1 = −1 / 3
s2 = 1 / 3 ( 4.12 )
Para cuatro puntos de Gauss se utilizan los cuatro elementos del cuadrilátero como se
muestra en la Fig. 10 y el tabla2
∫ ∫ f (r , s )drds ≅ ∑ ∑ W W
−1 −1 i =1 j =1
i j f ( ri , s j ) ( 4.13)
28
Los nueve puntos de integración son presentados en la Fig11 y los pesos se muestran
en la tabla 3
La solución obtenida con cuadriláteros bilineales implica una matriz 4x4, mientras que
un cuadrilátero cuadrático implica una matriz de 8x8. Además, los elementos bilineales
requieren una evaluación en 4 puntos de Gauss, y no involucran ecuaciones
cuadráticas, por lo que es nueve veces menos costoso en términos de cálculo para
construir la matriz de rigidez de elemento por elemento. Esto puede ser una
consideración importante al escoger el tipo de elemento que se utilizará, ya que
significa una diferencia de casi un orden de magnitud en el tiempo computacional.
29
for si = 1:2
s = pg(si);
%%Calcular B del elemento
[B detJ1] = calcular_B(r,s,x,y);
k_element = k_element +
B'*D{material_element}*B*detJ1*thickness_element;
aux = aux + B;
end
end
%-----------------------------------------------------------------------------
5. Elementos tridimensionales
30
6. Tetraedro lineal
Un tetraedro lineal esta definido por cuatro nodos como se muestra en la Fig.13, y su
función de interpolación esta dada por:
φ = α1 + α 2 x + α 3 y + α 4 z ( 6 . 1)
Para los cuatro nodos situados en los vértices del tetraedro, se pude escribir el
siguiente sistema de ecuaciones
φ1 = α 1 + α 2 x1 + α 3 y 1 + α 4 z 1
φ2 = α 1 + α 2 x2 + α 3 y2 + α 4 z2
φ3 = α 1 + α 2 x3 + α 3 y3 + α 4 z3
φ4 = α 1 + α 2 x4 + α 3 y4 + α 4 z4 ( 6 .2 )
φ = Cα ( 6 .3)
φ 1 1 x1 y1 z1 α 1
φ 1 x2 y2 z 2 α 2
2 = ⋅ ( 6 .4 )
φ 3 1 x3 y3 z 3 α 3
φ 4 1 x4 y4 z 4 α 4
α 1
α
φ = [1 x y z ] ⋅ 2 = [1 x y z ] ⋅ C −1 φ ( 6 .5 )
α 3
α 4
31
La cantidad [1 x y z ] ⋅ C − 1 es en realidad la forma de las funciones matriciales, es
decir,
φ = φ ( 6 .6 )
Donde
= [1 x y z ]⋅ C −1
( 6 .7 )
L1 + L 2 + L 3 + L 4 = 1 ( 6 .8 )
1 = L1
2 = L2
3 = L3
4 = L4 ( 6 .9 )
a ! b! c! d !
∫L Lb2 Lc3 L d4 dV =
a
1 6V ( 6 . 10 )
V
( 3 + a + b + c + d )!
32
Fig.15: Tetraedro cuadrático
La funciones de forma de los elementos de orden superior son similares a las del
tetraedro lineal, Por ejemplo, la función de forma en el nodo 1 para el tetraedro de
segundo grado, que se muestra en la Fig.15 queda definida por
1 = ( 2 L 1 − 1) L 1 ( 6 . 11 )
5 = 4 L1 L 2 ( 6 . 12 )
Ejemplo 3: Determinar las funciones de forma para el elemento de tetraedro lineal que
se muestra en la Fig. 16 de la ecuación 6.4.
33
En primer lugar evaluaremos C :
1 x1 y1 z 1 1 3 2 0
1 x2 y2 z 2 1 0 4 0
C = = ( 6 . 13 )
1 x3 y3 z 3 1 0 0 0
1 x4 y4 z 4 1 1 2 5
0 0 60 0
20 − 10 − 10 0
0 15 − 15 0
− 4 − 4 − 4 12
=
adjC
C = ( 6 . 14 )
c 60
0 0 60 0
0
= [1 x y z ] ⋅ C −1 =
[1 x y z ] 20 − 10 − 10
60 0 15 − 15 0
− 4 −4 −4 12
1
= [( 20 x − 4 z )( − 10 x + 15 y − 4 z )( 60 − 10 x − 15 y − 4 z )(12 z ) ] ( 6 .15 )
60
1
1 = (5 x − z )
15
1
2 = ( − 10 x + 15 y − 4 z )
60
1
3 = ( 60 − 10 x − 15 y − 4 z )
60
z
4 = ( 6 . 16 )
5
%-----------------------------------------------------------------------------
%calcular_V
function V = calcular_V(coordenate_node1,coordenate_node2,coordenate_node3,
coordenate_node4)
m = [coordenate_node1-coordenate_node2,coordenate_node2- coordenate_node3,
coordenate_node3-coordenate_node4];
V = (1/6)*abs(det(m));
34
end
%-----------------------------------------------------------------------------
function B = calcular_B(coordenate_node1,coordenate_node2,coordenate_node3,
coordenate_node4)
35
7. Hexaedro lineal
φ = α 1 + α 2 x + α 3 y + α 4 z + α 5 xy + α 6 xz + α 7 yz + α 8 xyz ( 7 . 1)
φ 1 1 x1 y1 z1 x1 y 1 x1 z 1 y1 z1 x1 y 1 z 1 α 1
φ 1 x2 y2 z2 x2 y2 x2 z2 y2 z2 x 2 y 2 z 2 α 2
2 = ⋅ ( 7 .2 )
φ 8 1 x8 y8 z8 x8 y 8 x8 z 8 y8 z8 x 8 y 8 z 8 α 8
φ = [1 x y z xy xz yz xyz ] ⋅ C − 1 φ ( 7 .3)
= [1 x y z xy xz yz xyz ] ⋅ C − 1 ( 7 .3)
36
Fig.18: Sistema de coordenadas naturales
1 (1 − r )(1 − s )(1 − t )
(1 + r )(1 − s )(1 − t )
2
3 (1 + r )(1 + s )(1 − t )
4 = 1 (1 − r )(1 + s )(1 − t )
( 7 .4 )
5 8 (1 − r )(1 − s )(1 + t )
6 (1 + r )(1 − s )(1 + t )
(1 + r )(1 + s )(1 + t )
7
8 (1 − r )(1 + s )(1 + t )
1
i = (1 − rri )(1 − ss i )(1 − tt i ) con i = 1, 2 , … ,8 ( 7 .5 )
8
1
1 = (1 − rr i )(1 − ss i )(1 − tt i ) ( 7 .6 )
8
ri = − 1 si = − 1 ti = − 1
Así,
1
1 = (1 − r )(1 − s )(1 − t ) ( 7 .7 )
8
37
Fig.19: Hexaedro cuadrático
Las funciones de forma para los nodos de esquina se obtienen de la siguiente relación
1
i = (1 − rri )(1 − ss i )(1 − tt i )( rri + ss i + tt i − 2 ) con i = 1, 2 , … ,8 ( 7 .8 )
8
1
i = (1 − r 2 )(1 − ss i )(1 − tt i ) con i = 10 ,12 ,18 , 20 ( 7 .9 )
4
1
i = (1 − rr i )(1 − s 2 )(1 − tt i ) con i = 9 ,11 ,17 ,19 ( 7 . 10 )
8
1
i = (1 − rr i )(1 − ss i )(1 − t 2 ) con i = 13 ,14 ,15 ,16 ( 7 . 11 )
8
Observe que cuando una de las coordenadas natural es ± 1 , los tres elementos de
dimensiones se reducen a sus dos dimensiones homólogas. Asimismo, cuando dos de
las coordenadas de la iguales ± 1 , la forma de la función se reduce a la función de una
forma tridimensional, permitiendo tres elementos de dimensiones que se unió a los
elementos de línea. La continuidad entre los elementos de existir más de una cara de
elemento (área) de un elemento tridimensional, de los valores nodales describir la
variación de la variable (φ ) desconocida de forma idéntica en la cara elemento común
a los elementos adyacentes.
38
dyds = (1/2)*(y(2)-y(1));
dydt = 0;
dzdr = 0;
dzds = 0;
dzdt = (1/2)*(z(5)-z(1));
detJ1 = det(J1);
% Calculo de la matriz B
B = [dN(1,1) 0 0 dN(2,1) 0 0 dN(3,1) 0 0 dN(4,1) 0 0 dN(5,1) 0 0 dN(6,1) 0
0 dN(7,1) 0 0 dN(8,1) 0 0; 0 dN(1,2) 0 0 dN(2,2) 0 0 dN(3,2) 0 0
dN(4,2) 0 0 dN(5,2) 0 0 dN(6,2) 0 0 dN(7,2) 0 0 dN(8,2) 0; 0 0
dN(1,3) 0 0 dN(2,3) 0 0 dN(3,3) 0 0 dN(4,2) 0 0 dN(5,3) 0 0 dN(6,3) 0
0 dN(7,3) 0 0 dN(8,3); dN(1,2) dN(1,1) 0 dN(2,2) dN(2,1) 0 dN(3,2)
dN(3,1) 0 dN(4,2) dN(4,1) 0 dN(5,2) dN(5,1) 0 dN(6,2) dN(6,1) 0 dN(7,2)
dN(7,1) 0 dN(8,2) dN(8,1) 0; dN(1,3) 0 dN(1,1) dN(2,3) 0 dN(2,1) dN(3,3)
0 dN(3,1) dN(4,3) 0 dN(4,1) dN(5,3) 0 dN(5,1) dN(6,3) 0 dN(6,1) dN(7,3)
0 dN(7,1) dN(8,3) 0dN(8,1); 0dN(1,3) dN(1,2) 0dN(2,3) dN(2,2) 0 dN(3,3)
dN(3,2) 0 dN(4,3) dN(4,2) 0 dN(5,3) dN(5,2) 0 dN(6,3) dN(6,2) 0 dN(7,3)
dN(7,2) 0 dN(8,3) dN(8,2)];
end
%-----------------------------------------------------------------------------
39
8. Integración numérica
1 1− L 2
I = ∫∫ 0 0
f ( L 1 , L 2 , L 3 ) J dL 1 dL 2
n
1
=
6
∑ w g [( L ) , ( L
i =1
i 1 i 2 ) i , ( L3 ) i , ( L 4 ) i ] ( 8 . 1)
40
Tabla4: Puntos nodales para un tetraedro.
∑∑∑ww
1 1 1
∫ ∫ ∫
−1 −1 −1
f ( r , s , t ) J drds dt =
i =1 j =1 k =1
i j w k f ( ri , s j , t k ) J ( ri , s j , t k ) (8 . 2 )
w i , w j , wk son los factores de peso asociada con los puntos de Gauss respectivos.
Obsérvese que la ecuación. 8.2 se obtiene combinando una fórmula tridimensional
establecida originalmente para el único elemento tridimensional. Los factores de
ponderación y el punto de integración de las coordenadas se muestran en la tabla5.
41
%-----------------------------------------------------------------------------
pg = [sqrt(1/3); -sqrt(1/3)]; %pesos de gauss
k = ∫ B i′DB i d Ω ( 9 .1)
Ω
Donde B es una matriz que depende de cada tipo de elemento ya que esta definida
por las derivadas parciales de las funciones de forma con respecto a x y y (las
funciones de forma cambian para cada tipo de elemento como se presento
anteriormente), la matriz B queda definida por:
∂ i
0
∂x
∂ i
Bi = 0 (9 .2 )
∂y
∂ i ∂ i
∂ y ∂ x
1 v 0
E
D= v 1 0 ( 9 . 3)
1− v2
0 0 0 .5 (1 − v )
42
Matriz D para elementos de volumen:
v v
1 1− v 1− v
0 0 0
v v
1 0 0 0
1 − v 1− v
v v
1 0 0 0
E (1 − v ) 1 − v 1− v
D= 1 − 2v (9 .4 )
(1 + v )(1 − 2 v ) 0 0 0 0 0
2 (1 − v )
1 − 2v
0 0 0 0
2 (1 − v )
0
0 1 − 2v
0 0 0 0
2 (1 − v )
EA
k1 = (9 .5 )
l1
k1(1,1) k1(1, 2 ) u1 R
k ⋅ =
k1( 2 , 2 ) u 2 0
(9 .6 )
1( 2 ,1)
EA
k2 = (9 .7 )
l2
k 2 (1,1) k 2 (1, 2 ) u 2 0
k ⋅ =
k 2 ( 2 , 2 ) u 3 0
(9 .8 )
2 ( 2 ,1)
43
Para el tercer elemento compuesto por los nodos 3 y 4 tenemos:
EA
k3 = (9 .9 )
l3
k 3 (1,1) k 3 (1, 2 ) u 3 0
k ⋅ =
k 3 ( 2 , 2 ) u 4 P
(9 .10 )
3 ( 2 ,1)
Después de tener cada una de las k por cada elemento comenzamos a ensamblar la
matriz de rigidez global para esto construimos una matriz cuadrada del numero total de
desplazamientos, para este caso es una matriz de 4x4; la forma como se ensambla es
colocando la matriz k de tal forma que al multiplicar por el vector de desplazamientos
obtengamos el mismo sistema de ecuaciones, como se muestra a continuación
k1(1,1) k1(1, 2 ) 0 0 u1 R
k
1( 2 ,1) k 1( 2 , 2 ) 0 0 u 2 0
⋅ = (9 .11)
0 0 0 0 u 3 0
0 0 0 0 u 4 P
Esto se realiza para cada una de las matrices k , teniendo en cuenta que si hay algo
en la posición que le corresponde se suma a lo que había, como se muestra en la
ecuación (9.12)
Otra forma de construir la matriz de rigidez global de manera más simple para trabajar
con muchos elementos será explicada a partir del ejemplo 6
Lo primero que vamos a realizar es una tabla que esta compuesta por el nodo, la
posición del nodo y las restricciones en x , y que este posee.
44
Fig.21: Viga con 12 elementos triangulares
Después de esto se construye una tabla que nos permita saber que nodos pertenecen
a un mismo elemento, además de esto construimos una tabla que nos permita
identificar donde están las fuerzas a las que es sometida la pieza.
45
Tabla8: Fuerzas por elemento
Tabla9: Matriz ID
LM = [0 0 1 2 0 0] (9 .13 )
Después de esto se multiplica cada casilla por el vector LM y las coordenadas de los
productos que den diferentes de cero son las coordenadas del valor de la matriz k del
elemento que tiene que ser ensamblado en las posiciones del vector LM en la matriz
de rigidez global, para el caso del primer elemento al multiplicar la casilla tres del
46
vector LM por la casilla tres LM da diferente de cero, lo que indica que el valor en la
posición (3,3) de la matriz k del elemento es el valor que corresponde a la posición
(1,1) en la matriz de rigidez global.
Cuando dos valores tienen que ocupar la misma posición en la matriz de rigidez global
K , lo que se hace es sumar estos elementos.
%%----------------------------------------------------------------------------
%%Ensamblaje de K
LM_element = [ ID(node1,:) ID(node2,:) ID(node3,:) ID(node4,:) ID(node5,:)
ID(node6,:) ID(node7,:) ID(node8,:)];
assemble_K(k_element,LM_element);
%%----------------------------------------------------------------------------
%%Nested functions:
%Ensamblaje de K
function assemble_K(k,LM)
%Guarda en m el número de columnas de la matriz k
m = length(k);
%Guarda el número de elementos del vector K_VAL (que es igual que K_COL y
K_ROW)
LENGTH_K = length(K_VAL);
for i=1:m
47
for j=1:m
if (LM(i)*LM(j))>0 % Si el nodo no está restringido
CONTADOR = CONTADOR+1;
%Este bloque duplica la longitud de los vectores cuando
ya se han llenado los espacios que estaban predefinidos
if CONTADOR>LENGTH_K
% Duplica la longitud del vector K_ROW llenando lo
nuevo con ceros
K_ROW(2*CONTADOR)= 0;
% Duplica la longitud del vector K_COL llenando lo
nuevo con ceros
K_COL(2*CONTADOR)= 0;
% Duplica la longitud del vector K_VAL llenando lo
nuevo con ceros
K_VAL(2*CONTADOR)= 0;
LENGTH_K = 2*CONTADOR;
End
%Fila de la K global donde ira el valor k(i,j)
K_ROW(CONTADOR) = LM(i);
%Columna de la K global donde ira el valor k(i,j)
K_COL(CONTADOR) = LM(j);
% Valor en la K global
K_VAL(CONTADOR) = k(i,j);
end
end
end
end
end
%% ---------------------------------------------------------------------------
K = sparse(K_ROW(1:CONTADOR),K_COL(1:CONTADOR),K_VAL(1:CONTADOR
%%Liberar Memoria
clear K_ROW K_COL K_VAL CONTADOR
%%Resolver sistema
U = K\applied_forces; % esto es una function de matlab
R = K*U - applied_forces;
F = R + applied_forces;
disp(F)
%-----------------------------------------------------------------------------
[σ ] = [D ]⋅ [B ]⋅ [u ] (9 .14 )
48
end
end
%-----------------------------------------------------------------------------
S = zeros(6,n_nodes);
node_count = zeros(n_nodes,1);
49
Metodología
En la primera etapa del proyecto se construyo una función en GID que permite por
medio de ficheros almacenar la información de la maya generada por GID, en el primer
fichero se encontrara la cantidad de nodos que posee la maya, cuantos elementos son
triangulares, cuantos cuadriláteros, cuantos tetraedros y por ultimo el tipo de material;
en el segundo fichero se encontrara las restricciones y los momentos para cada nodo
en x, y, z; en los ficheros 3, 4 y 5 se presenta el numero de elemento, números de
nodos de este elemento y los nodos i, j, k, l, m, n, o, p, según sea el caso; en el fichero
sexto se encuentra las coordenadas de los nodos; en el séptimo numero de materiales
y por ultimo en el fichero octavo se encuentra las fuerzas y los momentos en x, y ,z.
Después de esto se construyo una plataforma en Matlab que permite leer y almacenar
la información que se encuentra en cada uno de los ficheros.
A partir de esto se construyo una función en Matlab que permite ensamblar la matriz
de rigidez global de una manera mas eficiente (utilizando matrices dispersas), para así
poder encontrar la solución a nuestro problema ( KU = F ).
Trabajo futuro
Después que el software este refinado realizarle algunas pruebas y lograr con esto
optimizar el tiempo de computo y o la memoria requerida en su ejecución.
50
Conclusiones
Se implemento una función que lee la información y determina con esta que
tipo de elementos requiere utilizar.
51
Referencias
Pepper, Darrell y Heinrich, Juan. (1992), The Finite Element Method Basic
Concepts and Applications. United States of America: Hemisphere Publishing
Corporation.
P. G. Ciarlet (1978): The Finite Element Method for Elliptic Problems, North-
Holland, Amsterdam.
Paginas web
• http://gid.cimne.upc.es/index.html (manual)
• www.mathworks.com
52