Visualización de campos escalares y vectoriales en elasticidad. (Grupo 5)
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Visualización de campos escalares y vectoriales en elasticidad. (Grupo 5) |
| Asignatura | Teoría de Campos |
| Curso | 2023-24 |
| Autores | Laura León de Hoz Julia García Pérez Álvaro Sedano Hueso Eduardo Serrano Icarán Jaime Navalón Gómez |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Consideramos una placa plana que ocupa un cuarto de un anillo circular centrado en el origen y comprendido entre los radios 1 y 2, en el plano \(y≥|x|/2\). En esta placa tendremos definidas dos cantidades físicas:
- La temperatura [math] T(x,y) [/math], que en nuestro caso depende tanto de la variable espacial y como de la variable x.
[math]T(x,y)=cos((y-3)^2+x)[/math]. - Los desplazamientos [math]\overrightarrow { u } (x,y)[/math] producidos por la acción de una fuerza determinada, tal que:
[math]\vec u(ρ,θ)=\frac{1}{2}e^{ρ-1} sin(2θ-\frac{π}{2})[/math]\(\vec e_θ\).
A continuación, estudiaremos el efecto que producen ambas cantidades físicas sobre la placa y las tensiones que éstas generan.
Contenido
- 1 Mallado de los puntos interiores del sólido
- 2 Curvas de nivel de la temperatura y gradiente de temperatura
- 3 Ley de Fourier y energía calorífica
- 4 Campo de vectores en el mallado del sólido
- 5 Desplazamiento del sólido debido al campo de vectores
- 6 Divergencia
- 7 Rotacional
- 8 Tensor de deformaciones
- 9 Tensiones tangenciales
- 10 Tensión de Von Mises
- 11 Campo de fuerzas
- 12 Módulo del desplazamiento transversal
1 Mallado de los puntos interiores del sólido
Las condiciones que debe cumplir el anillo representado son:
- El radio debe estar contenido entre 1 y 2
- El anillo está comprendido en el plano \(y≥|x|/2\)
- Los ejes en el cuadrado son: \((x, y) ∈ [-3; 3] × [−1; 3]\)
- El paso de muestreo empleado es [math]h=\frac{2}{10}[/math] en las variables x e y que permitirá representar exactamente la placa en el espacio 2-D.
En coordenadas cilíndricas obtenemos: [math](ρ,θ)[/math] ∈ [1,2]×[arctg(1/2),[math]\pi[/math]-arctg(1/2)]
%Apartado 1
%Mallado
h = 2/10;
rho = 1:h:2;
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T]=meshgrid(rho,thetha);
x = R.*cos(T);
y = R.*sin(T);
mesh(x,y,0.*x);
%Visualicizacion del mallado
axis([-3,3,-1,3])
xlabel('Eje x')
ylabel('Eje y')
title ('Mallado')
axis equal
view(2)2 Curvas de nivel de la temperatura y gradiente de temperatura
2.1 Curvas de nivel de la temperatura
La distribución de temperaturas en cada punto del sólido viene dada por el campo escalar: [math]T(x,y)=cos((y-3)^2+x)[/math]
%Apartado 2.1
h = 2/10;
rho = 1:h:2;
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T] = meshgrid(rho,thetha);
%Temperatura
x = R.*cos(T); %Cambio a coordenadas cilíndricas
y = R.*sin(T);
T = cos((y-3).^2+x); %Función de temperaturas
%Representación el campo escalar de temperaturas
hold on
subplot(1,2,1)
surf(x,y,T)
view(2)
axis ([-3,3,-1,3])
xlabel('Eje X')
ylabel('Eje Y')
colorbar
subplot(1,2,2)
contour(x,y,T,4/h)
title('Curvas de Nivel')
colorbar
axis ([-3,3,-1,3])
xlabel('Eje X')
ylabel('Eje Y')
hold off
Maximo = max(max(T)) %0.9999
Obtenemos una temperatura máxima de 0.999912 ºC
2.2 Gradiente de temperatura
Al tener las curvas de nivel de nuestro sólido y la función en la que varía la temperatura podemos obtener el gradiente de la misma, [math]∇T[/math].
La fórmula general del cálculo de [math]∇T[/math] en coordenadas cartesianas:
[math]\nabla T=\frac { \partial T(x,y) }{ \partial x } \overrightarrow { i } \quad +\frac { \partial T(x,y) }{ \partial y } \overrightarrow { j } \quad +\frac { \partial T(x,y) }{ \partial z } \overrightarrow { k } [/math].
Particularizándolo a nuestra temperatura:
[math] ∇T=-sin((y-3)^2+x)\vec i-(2y-6)·sin((y-3)^2+x)\vec j [/math]
%Apartado 2.2
%Mallado
%Gradiente
h = 2/10; %Paso de Muestreo
rho = 1:h:2; %Asignación de las variables rho y theta
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T] = meshgrid(rho,thetha); %Creación del mallado
x= R.*cos(T); %Cambio a coordenadas cilíndricas
y= R.*sin(T);
%Función de temperatura
T = cos((y-3).^2+x);
Tx = -sin((y-3).^2 + x);
Ty = -sin((y-3).^2 + x).*(2*y-6)
%Representación del gradiente en 3D
figure(1)
subplot(1,2,1) %Graficación en 3D
hold on
surf(x,y,T)
quiver3(x,y,T,Tx,Ty,0*T)
view([75 25])
axis equal
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Eje Z')
title('Gradiente 3D')
hold off
%Representacion del gradiente en 2D
subplot(1,2,2)
mesh(x,y,0*x);
contour(x,y,T);
view(2);
axis equal
axis([-3,3,-1,3]);
colorbar;
hold on
quiver(x,y,Tx,Ty);
axis equal
axis([-3,3,-1,3]);
view(2);
title('Gradiente en 2D');
hold offComo podemos observar el [math]∇T[/math] es ortogonal a las curvas de nivel del anillo.
3 Ley de Fourier y energía calorífica
La Ley de Fourier dice que la energía calorífica [math]\vec Q~[/math] viaja de acuerdo con la fórmula:
Tal que k es la constante de conductividad térmica de la placa que supondremos k=1. Y quedaría:
%Apartado 3
%Mallado
%Gradiente
h = 2/10; %Paso de Muestreo
rho = 1:h:2; %Asignación de las variables rho y theta
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T] = meshgrid(rho,thetha); %Creación del mallado
x= R.*cos(T); %Cambio a coordenadas cilíndricas
y= R.*sin(T);
%Función de temperatura
T = cos((y-3).^2+x);
Tx = sin((y-3).^2 + x);
Ty = sin((y-3).^2 + x).*(2*y-6)
%Representación del gradiente en 3D
figure(1)
subplot(1,2,1) %Graficación en 3D
hold on
surf(x,y,T)
quiver3(x,y,T,Tx,Ty,0*T)
view([75 25])
axis equal
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Eje Z')
title('Energía calorífica 3D')
hold off
%Representacion del gradiente en 2D
subplot(1,2,2)
mesh(x,y,0*x);
contour(x,y,T);
view(2);
axis equal
axis([-3,3,-1,3]);
colorbar;
hold on
quiver(x,y,Tx,Ty);
axis equal
axis([-3,3,-1,3]);
view(2);
title('Energía calorífica en 2D');
hold off4 Campo de vectores en el mallado del sólido
Este apartado no es objeto del trabajo al ser dato el campo [math]\vec u[/math].
Observamos como es la gráfica de este campo vectorial [math]\vec u(ρ,θ)=\frac{1}{2}e^{ρ-1} sin(2θ-\frac{π}{2})[/math]\(\vec e_θ\) en matlab:
%Apartado 4
h = 2/10;
rho = 1:h:2;
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T] = meshgrid(rho,thetha);
x = R.*cos(T); %Cambio a coordenadas cilíndricas
y = R.*sin(T);
hold on
mesh(x,y,0.*x);
A = (1/2) .* exp(R-1) .* sin(2.*T-(pi/2)) .* -sin(T); %Campo vectorial
B = (1/2) .* exp(R-1) .* sin(2.*T-(pi/2)) .* cos(T);
quiver(x,y,A,B)
axis([-3,3,-1,3]);
title('Campo de vectores')
hold off5 Desplazamiento del sólido debido al campo de vectores
Analizamos el desplazamiento producido por el campo [math]\vec u(ρ,θ)=\frac{1}{2}e^{ρ-1} sin(2θ-\frac{π}{2})[/math]\(\vec e_θ\) en el cuarto de anillo, y comparamos ambas graficas para poder observarlo bien.
%Apartado 5
%Mallado
h = 2/10;
rho = 1:h:2;
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T] = meshgrid(rho,thetha);
x = R.*cos(T);
y = R.*sin(T);
% Situación inicial
subplot(2,2,1)
surf(x,y,y*0);
axis([-3,3,-1,3]);
view(2)
title('NO DESPLAZADA')
% Situación final
subplot(2,2,2)
A = (1/2) .* exp(R-1) .* sin(2.*T-(pi/2)) .* -sin(T); %Cambio a cartesianas
B = (1/2) .* exp(R-1) .* sin(2.*T-(pi/2)) .* cos(T);
X = x+A;
Y = y+B;
surf(X,Y,Y*0);
axis([-3,3,-1,4]);
view(2)
title('DESPLAZADA')
% Comparación de las 2 situaciones
subplot(2,2,3)
surf(X,Y,Y*0);
hold on
surf(x,y,y*0);
axis([-3,3,-1,4]);
view(2)
title('COMPARACIÓN')
hold off6 Divergencia
Mediante la divergencia estudiamos el cambio de volumen local provocado por el campo de desplazamientos. Tomaremos el campo [math]\vec u(ρ,θ)=\frac{1}{2}e^{ρ-1} sin(2θ-\frac{π}{2})[/math]\(\vec e_θ\).
La divergencia en cilíndricas se expresa tal que:
[math]\nabla\cdot\vec u=\frac{1}{\rho}[\frac{\partial}{\partial{\rho}}({\rho·u_ρ})+\frac{\partial}{\partial{\theta}}(u_θ)] [/math]
Calculamos la divergencia de nuestro campo: [math] \nabla\cdot\vec u= \frac{1}{ρ}e^{ρ-1}·cos(2θ- \frac{π}{2}) [/math]
y a continuación la representamos.
%Apartado 6
%Mallado
h = 2/10;
rho = 1:h:2;
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T] = meshgrid(rho,thetha);
x = R.*cos(T);
y = R.*sin(T);
%Divergencia
div = (exp(R -1) .* cos(2.*T-pi/2)) ./ R;
subplot(1,2,1)
%Gráfica 2D
surf(x,y,div)
shading interp
view(2)
axis([-3,3,-1,3])
colorbar
title('Divergencia 2D')
xlabel('Eje X')
ylabel('Eje Y')
%Gráfica 3D
subplot(1,2,2)
view(2)
surf(x,y,div)
shading interp
axis([-3,3,-1,3])
colorbar
axis vis3d
title('Divergencia 3D')
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Eje Z')
% Encontrar el máximo, mínimo y nulo de la divergencia
Maximo_div = max(max(div)) %1.3591
Minimo_div = min(min(div)) %-1.3591
Nulo_div = find(div == 0)La divergencia (∇·[math]\overrightarrow {u})[/math] nos permite conocer en que puntos la sección se comprime (tonos fríos) y en cuales se expande (tonos cálidos).
La divergencia mínima es de -1.35906 en el punto (-1.42186,1.40652)
La divergencia máxima es de 1.35906 en el punto (1.42186,1.40652)
La divergencia nula se da en el punto (0,1)
7 Rotacional
El rotacional representa el giro de la superficie cuando aplicamos el campo de desplazamientos [math]\overrightarrow { u }[/math]
En cilíndircas el rotacional se expresa como:
[math]\nabla×\vec u(ρ,θ) = \frac{1}{ρ}\left|\begin{matrix} \vec e_ρ & ρ\vec e_θ & \vec e_z \\ \frac{\partial}{\partial ρ} & \frac{\partial}{\partial θ} & \frac{\partial}{\partial z} \\ \vec v_ρ & \vec ρv_θ & \vec v_z \end{matrix}\right|[/math].
Tomaremos el campo [math]\vec u(ρ,θ)=\frac{1}{2}e^{ρ-1} sin(2θ-\frac{π}{2})[/math]\(\vec e_θ\).
Calculamos el rotacional de este campo, tal que: [math] \nabla×\vec u = [(\frac{1}{2}e^{ρ-1}·sen(2θ-\frac{π}{2}))·(1+ \frac{1}{ρ})] \vec e_z [/math]
y a continuación lo representamos:
%Apartado 7
%Mallado
h = 2/10;
rho = 1:h:2;
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T]=meshgrid(rho,thetha);
x = R.*cos(T);
y = R.*sin(T);
%Rotacional
rot = (0.5 * exp(R -1) .* sin(2.*T - pi/2)) .* (1./R + 1);
%Representación en 2D
subplot(1,2,1)
surf(x,y,rot)
shading interp
axis([-3,3,-1,3])
view(2)
title('Rotacional en 2D')
xlabel('Eje X')
ylabel('Eje Y')
%Representación en 3D
subplot(1,2,2)
surf(x,y,rot)
shading interp
colorbar
title('Rotacional en 3D')
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Eje Z')El máximo rotacional es de 2.03871 en el punto (0,2)
El mínimo rotacional es de -1.22323 en el punto (1.78885,0.894427)
8 Tensor de deformaciones
Tomamos [math]ε(\vec u)=\frac {\nabla \vec u + \nabla \vec u ^t}{2}[/math] como la parte simétrica del tensor gradiente de [math]\vec u[/math] conocido como tensor de deformaciones. 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]σ=λ\nabla·\vec u 1+2με[/math].
Obtenemos un tensor de dreformaciones tal que:
[math] σ = \begin{pmatrix}
\frac{1}{ρ}e^{ρ-1}·cos(2θ-\frac{π}{2}) & \frac{-e^{ρ-1}·sen(2θ-\frac{π}{2})}{2ρ} & \ 0 \\
\frac{-e^{ρ-1}·sen(2θ-\frac{π}{2})}{2ρ} & \frac{1}{ρ}e^{ρ-1}·cos(2θ-\frac{π}{2})+\frac{2·e^{ρ-1}·cos(2θ-\frac{π}{2})}{ρ} & \ 0 \\
\ 0 &\ 0 & \frac{1}{ρ}e^{ρ-1}·cos(2θ-\frac{π}{2}))
\end{pmatrix}[/math]
%Apartado 8
%Mallado
h = 2/10;
rho = 1:h:2;
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T] = meshgrid(rho,thetha);
x = R.*cos(T);
y = R.*sin(T);
mesh(x,y,0.*x);
%Definimos la matriz
a = (exp(R - 1) .* cos(2.*T - pi./2)) ./R; %Elemento (1,1) y (3,3) de la matriz
b = (-exp(R - 1) .* sin(2.*T - pi./2)) ./ 2.*R; %Elemento (1,2) y (2,1) de la matriz
c = (2 .*(exp(R - 1) .* cos(2.*T - pi./2))) ./ R;
d = a+c %Elemento (2,2) de la matriz
%Representación 2D
%Tensión normal en e_rho
subplot(1,3,1)
surf(x,y,a)
axis equal
shading interp
view(2)
colorbar
title('Tensión normal eje e sub rho')
%Tensión normal en e_theta
subplot(1,3,2)
surf(x,y,d)
axis equal
shading interp
view(2)
colorbar
title('Tensión normal eje e sub theta')
%Tensión normal en e_z
subplot(1,3,3)
surf(x,y,a)
axis equal
shading interp
view(2)
colorbar
title('Tensión normal eje e_z')
%Representación 3D
%Tensión normal en e_rho
figure
subplot(1,3,1)
surf(x,y,a)
axis equal
shading interp
colorbar
title('Tensión normal eje e sub rho')
%Tensión normal en e_theta
subplot(1,3,2)
surf(x,y,d)
axis equal
shading interp
colorbar
title('Tensión normal eje e sub theta')
%Tensión normal en e_z
subplot(1,3,3)
surf(x,y,a)
axis equal
shading interp
colorbar
title('Tensión normal eje e_z')9 Tensiones tangenciales
La tensión tangencial respecto al plano ortogonal a [math]\vec{i}[/math] (en t=0), viene dada por la siguiente expresión:
[math]\ \left| \sigma ·\vec i -(\vec i·\sigma·\vec i)\vec i \right| [/math]
Así, el tensor de tensiones tangenciales particularizado es: [math]\frac{-e^{ρ-1}·sin(2θ-\frac{π}{2})}{2ρ}[/math]
%Apartado 9
%Mallado
h = 2/10;
rho = 1:h:2;
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T] = meshgrid(rho,thetha);
x = R.*cos(T);
y = R.*sin(T);
m = mesh(x,y,0.*x);
%Cambio a coordenadas cilíndricas
x = R.*cos(T);
y = R.*sin(T);
%Función de la tensión tangencial
tang = (-exp(R-1).*sin(2.*T-pi/2))./(2.*R);
tantan = 0;
%Eliminamos los ceros
for i=1:15
for j=1:6
ii= tang(i,j);
if ii~=0
tantan(i,j)=[tang(i,j)];
end
end
end
%Representación en 2D
hold on
subplot(2,1,1)
surf(x,y,tantan)
shading interp
axis equal
xlabel('x')
ylabel('y')
zlabel('z')
view(2)
colorbar
title('Tensión tangencial a la dirección del eje e sub rho')
%Representación en 3D
subplot(2,1,2)
surf(x,y,tantan)
shading interp
axis equal
xlabel('x')
ylabel('y')
zlabel('z')
view(3)
colorbar
title('Tensión tangencial a la dirección del eje e sub rho')
hold off10 Tensión de Von Mises
La tensión de Von Mises se define como:
[math]{ \sigma }_{ VM }=\sqrt { \frac { { \left( { \sigma }_{ 1 }-{ \sigma }_{ 2 } \right) }^{ 2 }+{ \left( { \sigma }_{ 2 }-{ \sigma }_{ 3 } \right) }^{ 2 }+{ \left( { \sigma }_{ 3 }-{ \sigma }_{ 1 } \right) }^{ 2 } }{ 2 } } [/math].
Sabemos que [math]{ \sigma }_{ 1 } ,{ \sigma }_{ 2 }, { \sigma }_{ 3 }[/math] son las tensiones principales, conocidas como los autovalores de [math]\sigma[/math].
La tensión de von Mises es una magnitud escalar que nos indica cuando un material inicia un comportamiento plástico.
%Aprtado 10
%Mallado
h = 2/10;
rho = 1:h:2;
thetha = linspace(atan(1/2),pi-atan(1/2),pi/h);
[R,T] = meshgrid(rho,thetha);
LR = length(rho);
LT = length(thetha);
X = R.*cos(T); % Cambio a coordenadas cilíndricas
Y = R.*sin(T);
%Componentes de nuestra matriz
a = @(R,T) (1./R).*exp(R-1).*cos(2.*T-(pi/2)); %Elemento (1,1) y (3,3) de la matriz
b = @(R,T) (1/2).*exp(R-1).*sin(2.*T-(pi/2)); %Elemento (1,2) y (2,1) de la matriz
c = @(R,T) 3.*(1./R).*exp(R-1).*cos(2.*T-(pi/2)); %Elemento (2,2) de la matriz
sig=[];
%Autovalores
for i=1:LT
for j=1:LR
A = a(R(i,j),T(i,j));
B = b(R(i,j),T(i,j));
C = c(R(i,j),T(i,j));
sig = [A,B,0;B,C,0;0,0,A];
autovalores = eig(sig);
V = sqrt(((autovalores(1)-autovalores(2))^2+((autovalores(2)-autovalores(3))^2+((autovalores(3)-autovalores(1))^2))*1/2));
W(i,j) = V;
end
end
%Tensión de Von Mises
subplot(1,2,1)
surf(X,Y,W);
axis equal
xlabel('x')
ylabel('y')
view(2)
axis([-3,3,-1,3])
title('Tensión de Von Mises')
colorbar
shading interp
subplot(1,2,2)
surf(X,Y,W);
axis equal
xlabel('x')
ylabel('y')
zlabel('z')
view(3)
title('Tensión de Von Mises')
colorbar
shading interp
%Máximo tensión de Von Mises
Maximo = max(max(W))
%El maximo es 3.3291


