Post on 13-Mar-2016
description
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
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
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
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;
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;
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
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
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;