Estructura básica del programa de elementos finitos

8
CoordenadasElemento1=[1,1;0,1;0,0;1.5, 0]; CoordenadasElemento2=[2.5,1;1,1;1.5,0; 2.5,0]; NodosDatos=[1,2,5,6]; ValorNodosDatos=[273,273,278,278]; VectorFuerzas=zeros(6,1); NODES=[3,5;1,3;2,4;4,6]; datos=[400,0]; %CalcK(XY,tipodeproblema,tipodeelement o, puntosdecuadratura,datos) KE1=CalcK(CoordenadasElemento1,1,3,2,d atos); KE2=CalcK(CoordenadasElemento2,1,3,2,d atos); KG=zeros(6,6); KG=ensamble(KG,KE1,NODES,1); KG=ensamble(KG,KE2,NODES,2); Solucion=reducir(KG,VectorFuerzas,Nodo sDatos, ValorNodosDatos); Datos: Coordenadas de cada nodo Condiciones de contorno lación entre las C locales y globales Datos de la Matriz constitutiva Calculo de las matrices elementales nsamble de las matrices elementales en la matriz global Incorporación de las CC y solución del sistema de ecuaciones Estructura básica del programa de elementos finitos

description

Estructura básica del programa de elementos finitos. CoordenadasElemento1=[1,1;0,1;0,0;1.5,0]; CoordenadasElemento2=[2.5,1;1,1;1.5,0;2.5,0]; NodosDatos=[1,2,5,6]; ValorNodosDatos=[273,273,278,278]; VectorFuerzas=zeros(6,1); NODES=[3,5;1,3;2,4;4,6]; datos=[ 400 ,0]; - PowerPoint PPT Presentation

Transcript of Estructura básica del programa de elementos finitos

Page 1: Estructura básica del programa de elementos finitos

CoordenadasElemento1=[1,1;0,1;0,0;1.5,0];

CoordenadasElemento2=[2.5,1;1,1;1.5,0;2.5,0];

NodosDatos=[1,2,5,6];

ValorNodosDatos=[273,273,278,278];

VectorFuerzas=zeros(6,1);

NODES=[3,5;1,3;2,4;4,6];

datos=[400,0];

%CalcK(XY,tipodeproblema,tipodeelemento,

puntosdecuadratura,datos)

KE1=CalcK(CoordenadasElemento1,1,3,2,datos);

KE2=CalcK(CoordenadasElemento2,1,3,2,datos);

KG=zeros(6,6);

KG=ensamble(KG,KE1,NODES,1);

KG=ensamble(KG,KE2,NODES,2);

Solucion=reducir(KG,VectorFuerzas,NodosDatos,

ValorNodosDatos);

Datos: Coordenadas de cada nodoCondiciones de contorno

Relación entre las C locales y globalesDatos de la Matriz constitutiva

Calculo de las matrices elementales

Ensamble de las matrices elementales en la matriz global

Incorporación de las CC y solución del sistema de ecuaciones

Estructura básica del programa de elementos finitos

Page 2: Estructura básica del programa de elementos finitos

CalcKif puntosdecuadratura==1

R=[0];

P=[2];

elseif puntosdecuadratura==2

R=[-sqrt(1/3),sqrt(1/3)];

P=[1,1];

elseif puntosdecuadratura==3

R=[-sqrt(3/5),0,sqrt(3/5)];

P=[5./9.,8./9.,5./9.];

elseif puntosdecuadratura==4

R=[-0.861136311594053,-0.339981043584856,0.339981043584856,0.861136311594053];

P=[0.347854845137454,0.652145154862546,0.652145154862546,0.347854845137454];

end

Page 3: Estructura básica del programa de elementos finitos

CalcK 2K=zeros(4,4);

k=datos(1);

Ce=k*eye(2);

for i=1:puntosdecuadratura

for j=1:puntosdecuadratura

r=R(j);

s=R(i);

p=P(i)*P(j);

DH=Calc_DH_2D_4N(r,s);

%Derivadas de la forma:

% Dh1/Dr Dh2/Dr .... Dh4/Dr

% Dh1/Ds Dh2/Ds .... Dh4/Ds

Je=DH*CoordenadasElemento; %genera el Jacobiano

InvJe=Je^-1; %Calcula la inversa

detJe=det(Je); %Calcula el determinante del jacobiano

Be=InvJe*DH;

% Be es la matriz de las derivadas de las funciones de forma, de la forma:

% Dh1/Dx Dh2/Dx .... Dh4/Dx

% Dh1/Dy Dh2/Dy .... Dh4s/Dy

K=K+p*Be'*Ce*Be*detJe;

end

end

Page 4: Estructura básica del programa de elementos finitos

Ensamblefunction a=ensamble(KG,KE,NODES,elemento)

Nodosporelemento=length(KE);

for il=1:Nodosporelemento

for jl=1:Nodosporelemento

ig=NODES(il,elemento);

jg=NODES(jl,elemento);

KG(ig,jg)=KG(ig,jg)+K(il,jl);

end

end

a=KG;

Page 5: Estructura básica del programa de elementos finitos

Reducirfunction Solucion=reducir(KG,VectorFuerzas,NodosDatos,ValorNodosDatos)

Ncondicionesdecontorno=length(NodosDatos);

Nnodosglobales=length(KG);

for ig=1:Ncondicionesdecontorno

nodo=NodosDatos(ig);

for jg=1:Nnodosglobales

if jg~=nodo

VectorFuerzas(jg)=VectorFuerzas(jg)-KG(jl,nodo)*ValorNodosDatos(ig);

KG(jg,nodo)=0;

end

end

for jg=1:Nnodosglobales

if jg~=nodo

KG(nodo,jg)=0;

else

KG(nodo,nodo)=1;

VectorFuerzas(nodo)=ValorNodosDatos(ig);

end

end

end

%[V,D] = eig(KG);

%V

%D

Solucion=KG\VectorFuerzas;

Page 6: Estructura básica del programa de elementos finitos

Problema de elasticidadCoordenadasElemento1=[ 10,10;

0,10;

0,0;

10,0;

5,10;

0,5;

5,0;

10,5];

NodosDatos=[6,7,8,13,14];

ValorNodosDatos=zeros(1,5);

NODES=[1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16];

VectorFuerzas=zeros(16,1);

VectorFuerzas(2,1)=-100;

VectorFuerzas(4,1)=100;

VectorFuerzas(10,1)=100;

E=2.1E6;

v=0.3;

datos=[E,v];

%CalcK(XY,tipodeproblema,tipodeelemento,puntosdecuadratura,datos)

KE1=CalcK(CoordenadasElemento1,2,4,3,datos);

KG=zeros(16,16);

KG=ensamble(KG,KE1,NODES,1);

Solucion=reducir(KG,VectorFuerzas,NodosDatos,ValorNodosDatos);

Datos: Coordenadas de cada nodoCondiciones de contorno

Relación entre las C locales y globalesDatos de la Matriz constitutiva

Calculo de las matrices elementales

Ensamble de las matrices elementales en la matriz global

Incorporación de las CC y solución del sistema de ecuaciones

Page 7: Estructura básica del programa de elementos finitos

CalcK elasticidad [E,v]=datos;

Ce2D=Calc_Ce2D(E,v);

K=zeros(16,16);

Be2D=zeros(3,16);

for i=1:puntosdecuadratura

for j=1:puntosdecuadratura

r=R(j);

s=R(i);

p=P(i)*P(j);

DH=Calc_DH_2D_8N(r,s);

NNodos=8;

Je=DH*CoordenadasElemento;

detJe=det(Je);

InvJe=Je^-1;

Be=InvJe*DH;

% Be es la matriz de las derivadas de las funciones de forma, de la forma:

% Dh1/Dx Dh2/Dx .... Dh8/Dx

% Dh1/Dy Dh2/Dy .... Dh8/Dy

for m=1:NNodos

Be2D(1,(m*2-1))=Be(1,m);

Be2D(2,(m*2))=Be(2,m);

Be2D(3,(m*2-1))=Be(2,m)/2;

Be2D(3,(m*2))=Be(1,m)/2;

end

% Con eso creo una matriz de 3x2NNodos, de la forma

% Dh1/Dx 0 Dh2/Dx 0 ....

% 0 Dh1/Dy 0 Dh2/Dy ....

% 1/2*Dh1/Dx 1/2*Dh1/Dy 1/2*Dh2/Dx 1/2*Dh2/Dy ....

K=K+p*Be2D'*Ce2D*Be2D*detJe;

end

End

Page 8: Estructura básica del programa de elementos finitos

Recuperar deformaciones y tensiones ValoresNodalesElemento=zeros(16,1);

for jl=1:16

jg=NODES(jl,1);

ValoresNodalesElemento(jl)=Solucion(jg);

end

VectorTensiones=zeros(21,3);

VectorDeformaciones=zeros(21,3);

for m=1:21

r=1;

s=(m-1)/10-1;

Be=CalcB(CoordenadasElemento1,2,4,datos,r,s);

Ce2D=Calc_Ce2D(E,v);

deformaciones=Be*ValoresNodalesElemento;

tensiones=Ce2D*deformaciones;

VectorDeformaciones(m,1:3)=deformaciones';

VectorTensiones(m,1:3)=tensiones';

end

save VectorDeformaciones.dat VectorDeformaciones -Ascii;

save VectorTensiones.dat VectorTensiones -Ascii;