Visualización de campos escalares y vectoriales en elasticidad. Grupo 18

De MateWiki
Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título Deformaciones de una placa plana en elasticidad. Grupo 18
Asignatura Teoría de Campos
Curso 2014-15
Autores Pablo Roman Vegue Sanchez, Alberto Rodriguez Soto, Juan Manuel Rueda Olmedo, Santiago Gomez Fernandez, David Toledo Menendez, Jose Ramon Jimenez Villaseca
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


1 Planteamiento del Problema

Se pretende conocer la visualizacion de un campo escalar y vectorial en elasticidad sobre la malla formada por la interseccion de dos parabolas P1= [math]18·y−81^2−1=0[/math] y P2= [math]2·y+x^2−1=0[/math] .Para ello empleamos un sistema de coordenadas apropiado (coordenadas parabolicas): [math]x=u·v[/math]

[math]y=\frac{(u^2−v^2)}{2}[/math] con u,v definidas en (u,v) ∈ [1/3,1] × [−1,1].

Con todo lo anterior implentando en matlab el mallado anterior es:

u=linspace(1/3,1,20); %creamos el vector u en el intervalo [1/3,1]
v=linspace(-1,1,20); %creamos el vector v en el intervalo[-1,1]
[uu,vv]=meshgrid(u,v); %matrices de las coordenadas u y v
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
mesh(xx,yy,0*xx) %dibujamos el mallado
axis([-1 1 -1 1])%en los sucesivos pasos ajustamos y damos forma a los ejes
xlabel('eje x')
ylabel('eje y')
title('Mallado de los puntos interiores del solido')
grid off


Mallado del sólido

2 Representacion de lineas coordenadas y vectores de la base natural

Para representar los vectores de la base natural en cada punto del mallado hay que tener en cuenta que esta varia en funcion del punto de la placa en que nos encontremos. Por otro lado las lineas coordenadas se obtienen fijando un parametro y haciendo variar el otro. Si calculamos los vectores de la base natural, estos son: [math] \vec{g_u}=v\hat{e_1} +2u \hat{e_2}[/math] : [math] \vec{g_v}=u\hat{e_1} -v^2 \hat{e_2}[/math] : [math]\vec{g}_w=\hat{e_3} [/math]

Para obtenerlo con matlab:

hold on
u=linspace(1/3,1,20); 
v=linspace(-1,1,20);
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
axis([-1 1 -1 1])
xlabel('eje x')
ylabel('eje y')
title('Vectores de la base natural y lineas coordenadas')
grid off
gux=vv; %componente en la dirección i del vector gu de la base natural
guy=uu; %componente en la dirección j del vector gu de la base natural
quiver(xx,yy,gux,guy)%representamos los vectores gu en cada punto del mallado
gvx=uu; %componente en la dirección i del vector gv de la base natural
gvy=-vv; %componente en la dirección j del vector gv de la base natural
quiver(xx,yy,gvx,gvy)%representamos los vectores gv en cada punto del mallado
for k=1:20; %creamos yy1 correspondiente a las ordenadas de las primeras lineas coordenadas
    for p=1:20;
        yy1(k,p)=1/2*(((xx(k,p)^2)/(vv(k,p)^2))-(vv(k,p)^2));
    end
end
plot(xx,yy1,'k') %representamos las primeras lineas coordenadas
for k=1:20; %creamos yy2 correspondiente a las ordenadas de las segundas lineas coordenadas.
    for p=1:20;
        yy2(k,p)=1/2*((uu(k,p)^2)-((xx(k,p)^2)/(uu(k,p)^2)));
    end
end
plot(xx,yy2,'k')%representamos las segundas lineas coordenadas.
hold off


Mallado del sólido

3 Curvas de nivel de la temperatura

Dado el campo escalar [math]T(x,y)=e^{-y} [/math] que representa la Temperatura, las curvas de nivel obtenidas serian:

u=linspace(1/3,1,20); 
v=linspace(-1,1,20); 
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
f=exp(-yy); %definimos la funcion temperatura
contour(xx,yy,f)%dibujamos las curvas de nivel de la temperatura         
colorbar
axis([-1 1 -1 1])
xlabel('eje x')
ylabel('eje y')
title('Curvas de nivel de la temperatura')



Distribución de la temperatura a lo largo del sólido

Como podemos observar en el grafico adjunto, la leyenda representa con color rojo aquellos en que la temperatura es maxima, se corresponde con la parte inferior de la placa, mientras que el color azul, representa la minima temperatura.

El gradiente de la temperatura es:


hold on
u=linspace(1/3,1,20); 
v=linspace(-1,1,20); 
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
T=inline('exp(-yy)','xx','yy');%funcion temperatura
Tyy=inline('-exp(-yy)','xx','yy');%derivada respecto a y de la temperatura
zz=T(xx,yy);%valores de la funcion temperatura
V=Tyy(xx,yy); %componente en la direccion i del gradiente de la temperatura
U=zeros(size(V)); %componente en la direccion j del gradiente de la temperatura
contour(xx,yy,zz)%dibujamos las lineas de nivel de la temperatura
quiver(xx,yy,U,V)%representamos el campo gradiente de la temperatura
axis([-1 1 -1 1])
xlabel('eje x')
ylabel('eje y')
title('Gradiente y curvas de nivel de la temperatura')
hold off


Distribución de la temperatura a lo largo del sólido

El campo gradiente de la temperatura se visualiza en la imagen de forma ortogonal a las curvas de nivel.

4 Campo de desplazamientos w(u,v)

Al aplicar una fuerza sobre la placa, esta experimenta un cierto desplazamiento que viene determinado por el vector [math] \vec{w}(u,v) [/math] : Este vector será [math] {w}\vec (u,v)= \vec{a} (\vec{b} \vec{r_o)^{2}} [/math] siendo [math] \vec{a}= \frac{\vec{g}_u}{|\vec{g_u}|}[/math] y [math] \vec{b}=-4 \frac{\vec{g}_u}{|\vec{g_u}|}[/math].

[math]\vec{w}=-4(u^2+v^2)^{1/2}\vec{g_u}=-4v(u^2+v^2)^{1/2} \hat{e_1} + 4u(u^2+v^2)^{1/2} \hat{e_2}[/math]

El desplazamiento provocado por el campo [math]\vec{w}[/math] será:

u=linspace(1/3,1,20); 
v=linspace(-1,1,20); 
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
Wx=4.*vv.*(uu.^2+vv.^2).^(1/2);%componente i del campo u de desplazamientos
Wy=4.*uu.*(uu.^2+vv.^2).^(1/2);%componente j del campo u de desplazamientos
quiver(xx,yy,Wx,Wy)%dibujamos el campo de desplazamintos u
axis([-1 1 -1 1])
xlabel('eje x')
ylabel('eje y')
title('Campo de desplazamientos w')


Distribución de la temperatura a lo largo del sólido

Una vez aplicado el campo [math]\vec{w}[/math] la placa se deforma adoptando la siguiente forma:

Distribución de la temperatura a lo largo del sólido

Implementacion en matLAB:

u=linspace(1/3,1,20); 
v=linspace(-1,1,20); 
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
subplot(1,2,1)
mesh(xx,yy,0*xx)%dibujamos el solido sin desplazar
xlabel('eje x')
ylabel('eje y')
title('Solido sin desplazar')
axis([-1 1 -1 1])
grid off
Wx=4.*vv.*(uu.^2+vv.^2).^(1/2);%componente i del campo u de desplazamientos
Wy=4.*uu.*(uu.^2+vv.^2).^(1/2);%componente j del campo u de desplazamientos
xxt=xx+Wx;%solido tras el desplazamiento
yyt=yy+Wy;%solido tras el desplazamiento
subplot(1,2,2)
mesh(xxt,yyt,0*xx)%dibujamos el solido tras el desplazamiento
xlabel('eje x')
ylabel('eje y')
title('Solido tras aplicarle el desplazamiento')
grid off
view(2)


5 Divergencia

La divergencia del campo vectorial nos proporciona el flujo que sale por cada punto por unidad de volumen

[math]\nabla· \vec{w}= \frac{1}{ \sqrt{g} } \frac{\partial \sqrt{g} u^{i} }{\partial u^i}= \frac{1}{u^2+v^2} \frac{\partial}{\partial u}((u^2+v^2)(4(u^2+v^2)^{1/2}) = \frac{12}{(u^2+v^2){1/2} } [/math]


Implementacion en matLAB:

u=linspace(1/3,1,20); 
v=linspace(-1,1,20); 
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
div=12./(uu.^2+vv.^2).^(1/2);
mesh(xx,yy,div)
surf(xx,yy,div)
axis([-1,1,-1,1])
xlabel('eje x')
ylabel('eje y')
title('Divergencia de w')
colorbar


Distribución de la temperatura a lo largo del sólido

Conforme a la definicion de divergencia, en el grafico podemos observar que aquellos puntos de color rojo son los que tienen mayor divergencia, y como es positiva, actuan como fuentes. En el caso de los puntos azules, tienen menor divergencia. R

6 Rotacional

El rotacional mide la cantidad de giroal rededor del vector normal a la superficie.

[math]\nabla \times\vec{u}= \frac{1}{ \sqrt{g} } \begin{bmatrix} g_{u} & g_{v} & g_{w} \\ \frac{\partial}{\partial u} & \frac{\partial}{\partial v} & \frac{\partial}{\partial w} \\ u^{u} &u^{v}&u^{w}\end{bmatrix} = \frac{1}{ u^2+v^2 } \begin{bmatrix} g_{u} & g_{v} & g_{w} \\ \frac{\partial}{\partial u} & \frac{\partial}{\partial v} & \frac{\partial}{\partial w} \\ 4/(u^2+v^2)^{1/2} &0&0\end{bmatrix}= 4v/(u^2+v^2)^{2}[/math]

Implementacion en matLAB:

u=linspace(1/3,1,20); 
v=linspace(-1,1,20); 
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
rot=4.*vv./(uu.^2+vv.^2).^(3/2);%modulo del rotacional de u
subplot(1,2,1)
mesh(xx,yy,rot)
surf(xx,yy,rot)
axis([-1 1 -1 1])
xlabel('eje x')
ylabel('eje y')
title('Rotacional de w')
view(2)
subplot(1,2,2)
mesh(xx,yy,rot)
surf(xx,yy,rot)
axis([-1 1 -1 1])
xlabel('eje x')
ylabel('eje y')
title('Rotacional de w')
colorbar


Distribución de la temperatura a lo largo del sólido

7 Tensiones normales en la direcciones gu y gv

Dado є(u) en la placa podemos describir los desplazamientos provocados por las tensiones a traves de la formula:

[math]σ=λ\nabla·\vec{u}1+2μЄ[/math] siendo Є(u): [math]\epsilon (\vec{u})=\frac{ \nabla \vec{u}+ \nabla \vec{u}^t}{2}[/math]

siendo [math]λ=μ=1[/math]

Implementando en matLAB

u=linspace(1/3,1,20); 
v=linspace(-1,1,20); 
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
%Tensiones en la direccion de gu
Ngu=(12*vv.^2+16.*uu.*vv.^2+12.*uu.^2)./(uu.^2+vv.^2).^(3/2);
subplot(1,2,1)
surf(xx,yy,Ngu)
colorbar
axis([-1,1,-1,1])
xlabel('eje x')
ylabel('eje y')
title('Tensiones normales en la direccion gu')
%Tensiones en la direccion de gv
Ngv=(12.*uu.^2-8.*uu.^3-8.*vv.^2.*uu+12.*vv.^2)./(uu.^2+vv.^2).^(3/2);
subplot(1,2,2)
surf(xx,yy,Ngv)
colorbar
axis([-1,1,-1,1])
xlabel('eje x')
ylabel('eje y')
title('Tensiones normales en la direccion gv')


Mallado del sólido

Observando las graficas correspondientes a la divergencia, rotacional y tensiones normales, llegamos a la conclusion de que estas ultimas guardan cierta similitud con la divergencia

8 Tensiones de Von Mises

A partir de la tensión de Von Mises que se define con la siguiente fórmula: [math] \sigma _{VM}= \sqrt{ \frac{( \sigma _1- \sigma _2)^2+(\sigma_2-\sigma_3)^2+(\sigma_3-\sigma_1)^2 }{2} }[/math] donde [math] \sigma_1 \sigma_2 [/math] y [math] \sigma_3 [/math] son los autovalores del tensor σ (tensiones principales), podemos conocer el comportamiento plastico de la placa y asi saber que puntos pueden llegar a colapsar

Implementacion en matLAB:

hold on
u=linspace(1/3,1,20); 
v=linspace(-1,1,20); 
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
x=u.*v; 
y=1/2.*(u.^2-v.^2);
for i=1:20
    for j=1:20
        A=[(12+8.*u(i))./(u(i).^2+v(j).^2).^(1/2),4.*v(j)./(u(i).^2+v(j).^2).^(1/2),0;4.*v(j)./(u(i).^2+v(j).^2).^(1/2),(12)./(u(i).^2+v(j).^2).^(1/2),0;0,0,(12)./(u(i).^2+v(j).^2).^(1/2)];
        a=eig(A);
        vonmises(i,j)=sqrt(((a(1)-a(2)).^2+(a(2)-a(3)).^2+(a(3)-a(1)).^2)./2);
    end
end
subplot(1,2,1)
surf(xx,yy,vonmises)
colorbar
axis([-1,1,-1,1])
xlabel('eje x')
ylabel('eje y')
title('Tensiones de vonmises')
subplot(1,2,2)
surf(xx,yy,vonmises)
colorbar
axis([-1,1,-1,1])
xlabel('eje x')
ylabel('eje y')
title('Tensiones de vonmises')
hold off


Mallado del sólido

A partir de la barra de colores observamos que los puntos de color rojo estan en la cresta de la figura y experimentan una mayor tension de Von Mises.


9 Masa de la placa

A partir de la funcion de densidad calculamos la masa de la placa tomando un elemento notablemente pequeño del mallado, posteriormente se obtiene el area de ese elemento y se realiza para todo el dominio de la placa, efectuando una suma final de todos los valores obtenidos. Esta resulta ser 4.2809e-006.

Implementacion en matLAB:

u=linspace(1/3,1,20); 
v=linspace(-1,1,20); 
[uu,vv]=meshgrid(u,v); 
xx=uu.*vv; 
yy=1/2.*(uu.^2-vv.^2);
h=1/100;
f=abs(xx).*exp(1).^(-1./(yy.^2));
a=h^2.*f;
masa=sum(sum(a))