Visualización de campos escalares y vectoriales en elasticidad. Grupo C-1
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Deformaciones de una placa plana rectangular. Grupo C-1 |
| Asignatura | Teoría de Campos |
| Curso | 2017-18 |
| Autores | Luis Pablo Rincón Bagüés, Adriana Mata Calvo |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Consideramos una placa rectangular plana (en dimensión 2) que ocupa la region \((x,y) ∈ [-1,1]×[0,2]\). En ella vamos a suponer que tenemos definidas dos cantidades físicas:
- La temperatura \(T(x,y)\), que depende de las variables espaciales \((x,y)\)
- Los desplazamientos [math]\vec u(x,y) [/math] producidos por la acción de una fuerza determinada.
De esta forma, si definimos [math]\vec r_{0}(x,y) [/math] el vector de posición de los puntos de la placa antes de la deformación, la posición de cada punto \((x,y)\) de la placa después de la deformación viene dada por:
- [math]\vec r(x,y) = \vec r_{0}(x,y) + \vec u(x,y) [/math]
Vamos a suponer que la fuerza aplicada sonre la placa ha provocado un desplazamiento de los puntos de la misma dado por el vector de desplazamientos:
- [math]\vec u(x,y) = x( -y + \frac{y^2}{2}) \vec i [/math].
Contenido
- 1 Mallado
- 2 Visualización campo de la temperatura
- 3 Cálculo y visualización del gradiente de Temperatura
- 4 Variación de la temperatura
- 5 Visualización del campo de desplazamientos
- 6 Visualización del sólido antes y después del desplazamiento
- 7 Visualización divergencia del campo de desplazamientos
- 8 Rotacional
- 9 Tensiones Normales
- 10 La Tensión de Von Mises
- 11 Campo de Fuerzas
- 12 Cálculo de la masa total de la placa
1 Mallado
Dibujar un mallado que represente los puntos interiores del sólido. Tomar los ejes en el rectángulo \((x,y) ∈ [-2,2]×[-1,3] \) y como paso de muestreo [math] h=\frac{1}{10} [/math] para las variables \(x\) e \(y\).
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(xx,yy);
%Dibujo
mesh(xx,yy,0*xx)
%Ajuste de la gráfica
axis([-2,2,-1,3])
grid off
view(2)
2 Visualización campo de la temperatura
La temperatura del sólido viene dada por la función [math]T(x,y)=(x+2)(y-1)^2 +2[/math] en grados centígrados. Dibujar las curvas de nivel y decidir en qué punto la temperatura es máxima.
La función anterior es un campo escalar, es decir, es el campo de la temperatura del sólido.
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
% TEMPERATURA (campo escalar)
T= inline('(x+2).*(y-1).^2+2','x','y');
zz=T(xx,yy);
% Dibujo
figure
pcolor(xx,yy,zz);
axis equal
shading flat
hold on
contour(xx,yy,zz,'k')
colorbar
title('Temperatura máxima en (1,0)')
hold off
% Ajuste de la gráfica
axis([-1,1,0,2])
view(2)
Se observa que en el punto \((1,0)\) la temperatura es máxima.
3 Cálculo y visualización del gradiente de Temperatura
El gradiente del campo de la temperatura (campo escalar) es el campo vectorial:
- [math]\nabla T =\frac{\partial T}{\partial x_i} \vec e_i = (y-1)^2 \vec i + (x+2)(2y-2) \vec j [/math]
Como se puede observar en el dibujo el gradiente es ortogonal a las curvas de nivel del campo \(T\) y por tanto el [math]\nabla T[/math] es ortogonal a la superficie del campo \(T\) en todos los puntos de éste.
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
%Campo de Temperatura
T= inline('(x+2).*(y-1).^2+2','x','y');
%Gradiente
Tx= inline('(y-1).^2','x','y');
Ty= inline('(y.*2-2).*(x+2)','x','y');
%
zz=T(xx,yy);
gradTx=Tx(xx,yy);
gradTy=Ty(xx,yy);
% Dibujo de las curvas de nivel del campo de temperatura
figure
quiver(xx,yy,gradTx,gradTy)
title('Gradiente')
axis tight
hold on
Mz=T(xx,yy);
contour(xx,yy,zz,'r')
title('Curvas de nivel')
hold off
4 Variación de la temperatura
Calcular la variacion de temperatura por segundo si, partiendo del punto de coordenadas \((x,y)=(0,1)\) me muevo en la dirección \((1,1)\) con una velocidad de 2 metros por segundo.
- Planteamiento:
- Partiendo del origen \(O\) nos movemos hacia \(P=(0,1)\), es decir, en la dirección [math] \vec e = \frac{\vec {OP}}{|\vec {OP}|} = \frac{\vec i}{|\vec i|} =\vec i [/math] con velocidad \(v=2\)m/s.
- De las propiedades del gradiente de un campo escalar:
- [math] \frac{dT}{dt} = \frac{T(\vec r (t))}{dt} = \nabla{T(\vec r (t))} · \vec r ' = \nabla{T} · \vec v = \nabla{T} · (v \vec e) = v(\nabla{T} · \vec e)[/math]
- y puesto que ya conocemos el \(\nabla{T}\):
- [math] \nabla{T}(x,y) = (y-1)^2 \vec i + (x+2)(2y-2) \vec j [/math]
- Entonces operando se obtiene:
- [math] \frac{dT}{dt} = v·(y-1)^2 = 2(y-1)^2 [/math] ºC/s que en el punto \((1,1)\) es nula.
5 Visualización del campo de desplazamientos
A partir del vector de desplazamientos dado en el enunciado obtenemos el dibujo del campo de desplazamientos sobre los puntos del mallado del sólido.
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
%Componentes en la dirección de i y de j del campo de desplazamientos
ux=xx.*(-yy+(yy.^2)/2);
uy=0.*xx;
figure
%dibujo del mallado
mesh(xx,yy,0*xx)
hold on
%campo de desplazamientos
quiver(xx,yy,ux,uy,'k')
axis([-2,2,-1,3])
view(0,90)
hold off
6 Visualización del sólido antes y después del desplazamiento
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
%posicion final
rx=(xx.*(-yy+yy.^2/2))+xx;
ry=0*xx+yy;
%representacion de la superficie antes del desplazamiento
figure
subplot(1,3,1)
surf(xx,yy,0*xx)
title('antes del desplazamiento')
axis([-2,2,-1,3])
view(2)
xlabel('x')
ylabel('y')
zlabel('z')
%representacion de la superficie después del desplazamiento
subplot(1,3,2)
surf(rx,ry,0*rx)
axis([-2,2,-1,3])
title('después del desplazamiento')
axis([-2,2,-1,3])
xlabel('x')
ylabel('y')
zlabel('z')
%comparacion
subplot(1,3,3)
surf(xx,yy,0*xx)
hold on
surf(rx,ry,0*rx)
axis([-2,2,-1,3])
xlabel('x')
ylabel('y')
zlabel('z')
title('comparacion')
view(0,90)
hold off
7 Visualización divergencia del campo de desplazamientos
Representar el campo: [math]\nabla\cdot\vec{u}=-y+\frac{y^2}{2}[/math]
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
%valor de la divergencia
divu=-yy+(yy.^2)/2;
%representacion
surf(xx,yy,divu)
shading interp
colorbar
title('divergencia')
xlabel('x')
ylabel('y')
zlabel('z')
%Dibujo de la superficie que representa la divergencia y de sus curvas de
%nivel visto cuando z tiende a infinito
figure
pcolor(xx,yy,divu)
shading interp
hold on
contour(xx,yy,divu,'k')
xlabel('x')
ylabel('y')
hold off
%Dibujo de la proyección sobre el plano YOZ de la superficie que representa
%la divergencia
figure
plot(yy,divu)
title('proyección sobre el eje YOZ')
xlabel('y')
ylabel('z')
grid on
maxi=max(max(divu));
mini=min(min(divu));
No se produce aumento de volumen alguno, hay reducción de la parte central de la placa y los laterales no sufren alteraciones.
Como consecuencia de que la expresión de la [math]\nabla\cdot\vec{u}[/math] dependa únicamente de \(y\), ha sido posible determinar los puntos en los que la divergencia es máxima, mínima y nula gráficamente mediante la proyección de dicho campo sobre el plano \(YOZ\).
8 Rotacional
8.1 Cálculo del Rotacional
Siendo el campo de desplazamientos:
- [math]\vec u[/math] como: [math]\vec u = u_x \vec i + u_y \vec j + u_z \vec k[/math]
ell rotacional de dicho campo se calcula como:
- [math]
\nabla\times \mathbf{u} =\left(
\frac{\partial u_z}{\partial y} - \frac{\partial u_y}{\partial z}\right)\vec i +
\left(\frac{\partial u_x}{\partial z} - \frac{\partial u_z}{\partial x}\right)\vec j +
\left(\frac{\partial u_y}{\partial x} - \frac{\partial u_x}{\partial y}\right)\vec k
[/math]
Resultando finalmente:
- [math]\nabla\times \mathbf{u}=x(1-y)\vec k [/math]
Siendo su módulo:
- [math] |\nabla\times \mathbf{u}|= x(1-y)[/math]
8.2 Visualización
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
rot=xx.*(1-yy);
%representacion del rotacional a partir del mallado
surf(xx,yy,rot)
colorbar
axis([-2,2,-1,3])
view(2)
title('rotacional')
xlabel('x')
ylabel('y')
zlabel('z')
%valores maximos y minimos
rotmax=max(max(rot));
rotmin=min(min(rot));Los puntos que sufren un mayor rotacional son \((x,y)=(-1,2)\) y \((x,y)=(1,0)\) y el menor son \((x,y)=(-1,0)\) y \((x,y)=(-2,1)\).
9 Tensiones Normales
9.1 Cálculo del tensor de deformaciones
Se llama tensor de deformaciones a la parte simétrica del tensor gradiente de [math]\vec u [/math]
- [math]e(\vec u) =\frac{(\nabla{\vec u}+\nabla{\vec u}^t)}{2}[/math]
Para ello debemos calcular [math]\nabla{\vec u}[/math] y [math]\nabla{\vec u}^t[/math]
- [math]\nabla{\vec u}=\frac{\partial{\vec u}}{\partial{x_m}}\otimes\vec e_m =(-y+\frac{y^2}{2})(\vec i\otimes\vec i)+(x(-1+y))(\vec i\otimes\vec j) [/math]
- [math]\nabla{\vec u}^t =(-y+\frac{y^2}{2})(\vec i\otimes\vec i)+(x(-1+y))(\vec j\otimes\vec i)[/math]
Finalmente obtenemos el tensor de deformaciones:
- [math]e(\vec u)=(-y+\frac{y^2}{2})(\vec i\otimes\vec i)+\frac{x}{2}(-1+y)[(\vec i\otimes\vec j)+(\vec j\otimes\vec i)][/math]
9.2 Cálculo del tensor de tensiones [math]\sigma_{ij}[/math]
En un medio elástico lineal, isótropo y homogéneo los desplazamientos permiten escribir el tensor de tensiones [math]\sigma_{ij}[/math] a través de la fórmula
- [math]\sigma = λ\nabla · \vec u 1 +2μe [/math]
donde λ y μ son conocidos como coeficientes de Lamé que dependen de las propiedades elásticas de cada material. A pesar de que los desplazamientos son planos ( es decir [math]\vec u[/math] no tiene componente en la dirección de [math]\vec k[/math]) las tensiones no tienen por qué ser planas y puede haber tensiones en la dirección ortogonal al plano de la placa.
Tras haber calculado el tensor de deformaciones y la divergencia del campo [math]\vec u[/math] en los apartados anteriores, y tomando λ=μ=1 calculamos el tensor de tensiones
- [math]\sigma = (-y+\frac{y^2}{2}) 1 + 2[(-y+\frac{y^2}{2})(\vec i\otimes\vec i)+\frac{x}{2}(-1+y)[(\vec i\otimes\vec j)+(\vec j\otimes\vec i)][/math]
9.3 Cálculo de las tensiones normales
9.3.1 Tensiones normales en la dirección que marca el eje [math]\vec i [/math]
Las tensiones normales en la dirección que marca el eje [math]\vec{i}[/math] se obtienen a partir de la expresión:
- [math]\vec{i}\cdot\sigma_{ij}\cdot\vec{i}=3(-y+\frac{y^2}{2})[/math]
9.3.2 Tensiones normales en la dirección que marca el eje [math]\vec j [/math]
Las tensiones normales en la dirección que marca el eje [math]\vec{j}[/math] se obtienen a partir de la expresión:
- [math]\vec{j}\cdot\sigma_{ij}\cdot\vec{j}=(-y+\frac{y^2}{2})[/math]
9.3.3 Tensiones normales en la dirección que marca el eje [math]\vec k [/math]
Las tensiones normales en la dirección que marca el eje [math]\vec{k}[/math] se obtienen a partir de la expresión:
- [math]\vec{k}\cdot\sigma_{ij}\cdot\vec{k}=(-y+\frac{y^2}{2})[/math]
9.4 Visualización de las tensiones normales
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
%tensiones normales en las direcciones de los ejes coordenados sobre el
%mallado
TNi=(-yy+(yy.^2)/2).*3;
TNj=-yy+(yy.^2)/2;
TNk=-yy+(yy.^2)/2;
%representacion de las tensiones normales
figure
subplot(1,3,1)
surf(xx,yy,TNi)
axis image
view(2)
colorbar
xlabel('x')
ylabel('y')
zlabel('z')
title('Tensiones normales en la dirección del eje i')
subplot(1,3,2)
surf(xx,yy,TNj)
axis image
view(2)
colorbar
xlabel('x')
ylabel('y')
zlabel('z')
title('Tensiones normales en la dirección del eje j')
subplot(1,3,3)
surf(xx,yy,TNk)
axis image
view(2)
colorbar
xlabel('x')
ylabel('y')
zlabel('z')
title('Tensiones normales en la dirección del eje k')10 La Tensión de Von Mises
La tensión de Von Mises se define por la 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 de [math]\sigma[/math] (también conocidos como tensiones principales) cuya expresión es:
- [math](\sigma_{ij})=\begin{pmatrix} -3y+\frac{3y^2}{2} & -x+xy & 0 \\ -x+xy & -y+\frac{y^2}{2} & 0 \\ 0 & 0 & -y+\frac{y^2}{2} \end{pmatrix}[/math]
La tensión de Von Mises es una magnitud escalar que se suele usar como indicador para saber cuando un material inicia un comportamiento plástico (y no elástico puro).
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
%calculo de los autovalores
A= inline('3.*(-y+(y.^2)./2)','x','y');
B= inline('x.*(-1+y)','x','y');
C= inline('-y+(y.^2)./2','x','y');
sigma=[];
for i=1:length(x)
for j=1:length(y)
J=A(xx(i,j),yy(i,j));
K=B(xx(i,j),yy(i,j));
I=C(xx(i,j),yy(i,j));
sigma=[J K 0; K I 0 ; 0 0 I ];
AU=eig(sigma); %autovalores de sigma
VM=sqrt(((AU(1)-AU(2))^2+(AU(2)-AU(3))^2+(AU(3)-AU(1))^2)/2);
zz(i,j)=VM;
end
end
%dibujo
figure
subplot(1,2,1)
surf(xx,yy,zz)
colorbar
xlabel('x')
ylabel('y')
zlabel('z')
title('Tensión de Von Mises')
%Estudio del máximo valor de la tensión de Von Mises
subplot(1,2,2)
hold on
m=zz(1,1:length(zz));
%Dibujo de la proyección sobre el plano XOZ de la superficie que genera la tensión de Von Mises
plot(x,m,'b');
maxzz=max(m);
%Bucle que pinta los puntos donde la tensión de Von Mises es máxima sobre la proyección
for k=1:length(m);
if m(k)==maxzz
plot(x(k),maxzz,'xr','markersize',10)
end
end
axis([-3 3 -0 2]);
xlabel('Eje x')
ylabel('Eje z')
legend('Proyección sobre el plano XOZ','Punto máximo')
hold off
fprintf('El máximo valor de la tensión de Von Mises es %f\n',maxzz)
El máximo valor de la tensión de Von Mises se alcanza para [math]x=±1[/math] y el valor de la tensión de Von Mises para dicho punto es de \(1.732051\).
11 Campo de Fuerzas
El campo de fuerzas [math]\vec F[/math] que actúa sobre la placa (y que son causantes del desplazamiento observado) se aproxima usando la ecuación de la elasticidad lineal
- [math]\vec{F}=-\nabla\cdot\sigma=-\frac{\partial \sigma_{ji}}{\partial x_{j}}\vec{e}_{i}[/math]
Lo calculamos
- [math]\vec F_1=-\frac{\partial \sigma_{j1}}{\partial x_{j}} \vec e_{1} = -[\frac{\partial (-y+\frac{3y^2}{2})}{\partial x} + \frac{\partial(-x+xy)}{\partial y} + \frac{\partial 0}{\partial z}]\vec i = -x \vec i[/math]
- [math]\vec F_2=-\frac{\partial \sigma_{j2}}{\partial x_{j}} \vec e_{2} = -[\frac{\partial (-x+xy)}{\partial x} + \frac{\partial (-y+\frac{y^2}{2})}{\partial y} + \frac{\partial 0}{\partial z}]\vec j = 2(1-y) \vec j [/math]
- [math]\vec F_3=-\frac{\partial \sigma_{j3}}{\partial x_{j}} \vec e_{3} = -[\frac{\partial 0}{\partial x} + \frac{\partial 0}{\partial y} + \frac{\partial (-y+\frac{y^2}{2})}{\partial z}]\vec k = 0 \vec k[/math]
Entonces, la expresión del campo de fuerzas [math]\vec{F}[/math] es:
- [math]\vec{F}= -x \vec i + 2(1-y) \vec j [/math]
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
%componentes del campo de fuerzas
Fx=-xx;
Fy=2.*(1-yy);
%Dibujo del campo de fuerzas
figure
mesh(xx,yy,0*xx)
hold on
quiver(xx,yy,Fx,Fy,'k')
axis image
view(2)
xlabel('x')
ylabel('y')
title('campo de fuerzas')
hold off
- Interpretación de la gráfica
En el dibujo podemos ver un campo de fuerzas cuyo modulo decrece progresivamente a medida que nos acercamos al centro de esta simetría radial en el punto \((0,1)\) en donde se anula.
12 Cálculo de la masa total de la placa
Suponiendo que la placa tiene una densidad que responde a la ecuación:
- [math]d(x,y)=3+e^{\frac{-|x|}{(y+1)^{4}}}[/math]
Calculamos la masa total de la placa:
- [math]\int_{A} d(x,y) dA=\int_{-1}^{1}\int_{0}^{2} d(x,y) dydx=\int_{-1}^{1}\int_{0}^{2} 3+e^{\frac{-|x|}{(y+1)^{4}}} dydx=15.71 [/math]
Sin embargo, puesto que, en esta ocasión, la primitiva es difícil de calcular, se recurre a la utilización de métodos numéricos. Por esta razón, empleamos la fórmula del trapecio para la aproximación de integrales:
%Discretización de los parámetros de la superficie:
% siendo 0.1 el "paso de muestreo"
x=-1:0.1:1;
y=0:0.1:2;
%Creación del mallado
[xx,yy]=meshgrid(x,y);
%extremos integracion:
a=-1; b=1; c=0; d=2;
N1=length(x)-1; N2=N1; %subintervalos
h1=(b-a)/N1; h2=(d-c)/N2;
u=a:h1:b;
v=c:h2:d;
[U,V]=meshgrid(u,v);
%densidad
densidad=3+exp(-abs(U)./((V+1).^4));
%formula del trapecio
w1=ones(N1+1,1);
w1(1)=1/2;
w1(N1+1)=1/2;
w2=ones(N2+1,1);
w2(1)=1/2;
w2(N2+1)=1/2;
masa=h1*h2*(w2')*densidad*w1;