Visualización de campos escalares y vectoriales en elasticidad (Grupo 5-A)

De MateWiki
Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título Visualización de campos escalares y vectoriales en elasticidad (Grupo 5-A)
Asignatura Teoría de Campos
Curso 2016-17
Autores Antón Fernández Arriola, Bruno Campuzano, Antonio Manso
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


1 Enunciado

En este trabajo vamos a analizar y visualizar campos escalares y vectoriales en el espacio en relación a su elasticidad.

Consideraremos una placa rectangular plana en dos dimensiones que ocupa la región (x, y) ∈ [−2, 2]×[0, 4].

Vamos a definir en ella dos cantidades físicas: la temperatura [math] T(\rho,\theta)= \rho^2\sin(\theta) [/math] y los desplazamientos [math]\vec{u}=xf(y)\vec{j} [/math] producidos por la acción de una fuerza determinada. Dado que trabajaremos en coordenadas cartesianas hemos pasado la temperatura de coordenadas polares a cartesianas

[math] T(\rho,\theta)= \rho^2\sin(\theta) [/math]

[math] \rho = \sqrt{x^2+y^2} [/math] ; [math] \sin\theta = \displaystyle\frac{y}{x^2+y^2} [/math]

[math] T(x,y) = y\sqrt{x^2+y^2} [/math]


Por otro lado, consideramos también la divergencia [math] \nabla\cdot\vec{u} = x/10 [/math], la densidad [math] d(x,y) = \displaystyle\frac{1}{x^2+y^2+2} [/math] , que los puntos situados en el eje y = 0 no sufren desplazamiento en la


dirección [math] \vec{j} [/math], la fórmula para hallar la tensión a partir del desplazamiento: [math] \sigma = \lambda\nabla\cdot\vec{u}1 + 2\mu\epsilon [/math]


, la tensión de Von Mises [math] \sigma_{VM} = \sqrt{\displaystyle\frac{(\sigma_{1}-\sigma_{2})^2+(\sigma_{2}-\sigma_{3})^2+(\sigma_{1}-\sigma_{1})^2}{2}} [/math] donde [math] \sigma_{1}, \sigma_{2} y \sigma_{3} [/math] son los autovalores de [math] \sigma [/math] y el campo de fuerzas [math] \vec{F} = -\nabla \cdot \sigma = -\displaystyle\frac{{\partial\sigma_{ji}}}{{\partial x_{j}}}\vec{e}_i [/math]


2 Representación del sólido

En primer lugar dibujaremos un mallado representando todos los puntos del interior del sólido. Tomamos los ejes en el rectángulo [math] (x,y) \in -3≤x≤3;0≤y≤5 [/math], y utilizamos como paso de muestreo [math] h=1/10 [/math] para las variables x e y. El código es el siguiente:

x= (-2:0.1:2);               %Región de rango x entre los valores dados
y= (0:0.1:4);                %Región de rango y
[X,Y]= meshgrid(x,y);        %Mallado de la placa 
n=size(x,2);
m=size(y,2);
Z= zeros(n,m);              %Altura de los puntos del intervalo
surf(X,Y,Z);                 %Representación de la superficie
axis equal;                  %Caracterización de los ejes   
axis([-3,3,0,5]);            %Limitamos una región en los ejes
view(2)


Mallado inicial


3 Temperatura del sólido

En este apartado representamos las curvas de nivel de la temperatura definidas por la función de la misma, anteriormente pasada de polares a cartesianas [math] T(\rho,\theta)= \rho^2\sin(\theta) [/math] pasa a [math] T(x,y) = y\sqrt{x^2+y^2} [/math]

x= (-2:0.1:2);                                      %Región de rango x entre los valores dados
y= (0:0.1:4);                                       %Región de rango y
[X,Y]= meshgrid(x,y)                                %Mallado de la placa
F=inline('y.*sqrt(x.^2+y.^2)','x','y');             %Función de temperatura
Z1=F(X,Y)                                           %Elevación de los puntos de la función de temperatura
axis([-3,3,0,5])                                    %Caracterización de los ejes
subplot(1,3,1)                                      %Creación de subventana en el espacio de representación
surf(X,Y,Z1)                                        %Representación superficie en 3D
view([0,0,1])                                       %Vista desde arriba (paso a 2D)
subplot(1,3,2)                                      %Cambio a subventana 2
mesh(X,Y,Z1)                                        %Representación en mallado de la superficie
max(max(F(X,Y)))                                    %Calculo del máximo de la matriz
subplot(1,3,3)
contour(X,Y,Z1)
view(2)


Mallado inicial

Podemos deducir a partir de los gráficos que la temperatura máxima se da en los extremos (-2,4) Y (2,4)

4 Gradiente de temperatura

Después de representar la temperatura, calcularemos su gradiente y lo representaremos como un campo vectorial

x= (-2:0.1:2);                                      %Región de rango x entre los valores dados
y= (0:0.1:4);                                       %Región de rango x entre los valores dados
[X,Y]= meshgrid(x,y)                                %Mallado de la placa
T=Y.*sqrt(X.^2+Y.^2);                               %Función de temperatura
[X,Y]= gradient(T,0.1,0.1);                         %Cálculo del gradiente
contour(x,y,T,100)                                  %Representación de las curvas de nivel
hold on
quiver(x,y,X,Y);                                    %Representación de los vectores del campo gradiente
axis equal
hold off


Colocamos los vectores encima de las curvas de nivel y comprobamos que son ortogonales

Mallado inicial


5 Cálculo del campo de desplazamientos

Tomamos las condiciones que nos dan en el enunciado

[math]\vec{u}=xf(y)\vec{j} [/math]

[math] \nabla\cdot\vec{u} = x/10 [/math]

Y que los puntos situados en el eje y = 0 no sufren desplazamiento en la dirección [math] \vec{j} [/math]


Sabemos que [math] \nabla\cdot\vec{u} = {\partial x_{1}}/{\partial x} + {\partial x_{2}}/{\partial y} + {\partial x_{3}}/{\partial z} [/math]

Por tanto, la divergencia de vector [math] \vec{u} [/math] será [math] \nabla\cdot\vec{u} = xf'(y) [/math]

Igualando esta con la divergencia del encunciado [math] xf'(y) = \displaystyle\frac{x}{10} [/math] deducimos que [math] f'(y) = \displaystyle\frac{1}{10} [/math] y finalmente la integral da como resultado [math] f(y) = \displaystyle\frac{y}{10} + C [/math] Tomando por último la condición según la cual en el eje [math] y = 0 [/math] la dirección [math] \vec{j} [/math] no sufre desplazamiento y por tanto, se anula, nos quedará C = 0 y por tanto

[math] \vec{u} = xf(y) = x\displaystyle\frac{y}{10} [/math]

6 Representación del campo de vectores

En este apartado se nos pide dibujar el campo de vectores en los puntos del mallado del sólido. El código para ello es:

x= (-2:0.1:2);               %Región de rango x entre los valores dados
y= (0:0.1:4);                %Región de rango y
[X,Y]= meshgrid(x,y)         %Mallado de la placa
Ux=zeros(size(X));           %solo se desplazan en el eje j
Uy=X.*Y./10;                    
quiver(X,Y,Ux,Uy);           %Representación de los vectores de desplazamiento
axis equal
axis([-3,3,0,5]);            %Limitamos una región en los ejes
view(2)


Mallado inicial

7 Sólido antes y después del desplazamiento

Vamos a representar el cambio en el sólido una vez tiene lugar el desplazamiento debido al campo de vectores [math] \vec{u} [/math]

x= (-2:0.1:2);               %Región de rango x entre los valores dados
y= (0:0.1:4);                %Región de rango y
[X,Y]= meshgrid(x,y);        %Mallado de la placa 
n=size(x,2);
m=size(y,2);
subplot(1,2,1);
Z= zeros(n,m);               %Altura de los puntos del intervalo
mesh(X,Y,Z);                 %Representación de la superficie
axis equal;                  %Caracterización de los ejes   
axis([-3,3,0,5]);            %Limitamos una región en los ejes
title('Antes')
view(2)
subplot(1,2,2);
Ux2=zeros(size(X));          %solo se desplazan en el eje j
Uy2=X.*Y./10;   
Rx = X+ Ux2;
Ry = Y + Uy2;              
mesh(Rx,Ry,0*Rx)           %Representación de los vectores de desplazamiento
axis equal
axis([-3,3,0,5]);            %Limitamos una región en los ejes
title('Después')
view(2)


Mallado inicial

8 Representación de [math] \nabla\cdot\vec{u} [/math]

x= (-2:0.1:2);                                      %Región de rango x entre los valores dados
y= (0:0.1:4);                                       %Región de rango x entre los valores dados
[X,Y]= meshgrid(x,y)                                %Mallado de la placa
Divergencia=X/10;                                   %divergencia dada por el enunciado
surf(X,Y,Divergencia)


Mallado inicial

Se observa en la imagen que los valores máximos de la divergencia se dan en los puntos donde x = 2 y los mínimos allí donde x = -2. Es nula en x = 0

9 Cálculo y representación de [math] \left | \nabla \times \vec{u} \right | [/math]

Siguiendo la fórmula del rotacional nos queda que [math] \nabla \times \vec{u} = \displaystyle\frac{y}{10}\vec{k} [/math] Como nos piden el módulo, [math] \left | \nabla \times \vec{u} \right | = \sqrt{\displaystyle\frac{y^2}{100}} [/math] y por tanto,


[math] \left | \nabla \times \vec{u} \right | = \displaystyle\frac{y}{10} [/math]

El código queda

x=(-2:0.1:2);                                      %Región de rango x entre los valores dados
y=(0:0.1:4);                                       %Región de rango y
z=zeros(size(x));                                  
[X,Y,Z]=meshgrid(x,y,z);
x2=X.*0;
y2=Y.*0;
z2=Y./10;
quiver3(X,Y,Z,x2,y2,z2)
Mallado inicial

Los puntos que sufren un mayor rotacional son aquellos en los que y = 4

10 Representación de las tensiones normales en las direcciones [math] \vec{i} , \vec{j} , \vec{k} [/math]

Definido [math] \epsilon (\vec{u}) = (\nabla \vec{u} + \nabla \vec{u}^{t} )/2 [/math] como la parte simétrica del tensor de deformaciones y conocido el tensor de tensiones [math] \sigma = \lambda\nabla\cdot\vec{u} 1 + 2\mu\epsilon [/math] calculamos la tensión en cada una de las direcciones analíticamente. En la dirección [math] \vec{k} [/math] concluimos que no hay tensiones. A continuación, las escribimos directamente en Matlab:

%Eje x
x=(-2:0.1:2);               
y=(0:0.1:4);           
[X,Y]=meshgrid(x,y);
Txx=X/10;                             %Tensiones en la dirección x
Tyx=Y*0;  
subplot(1,2,1)
quiver(X,Y,Txx,Tyx)
axis equal
axis([-3,3,0,5]);
title('Tensiones normales eje i')

%Eje y
Txy=0*Y;                             %Tensiones en la dirección y
Tyy=3*X/10;
subplot(1,2,2)
quiver(X,Y,Txy,Tyy)
axis equal
axis([-3,3,0,5]);
title('Tensiones normales eje j')
Mallado inicial

11 Cálculo de tensiones tangenciales

Nos piden calcular [math] \left |\sigma\cdot\vec{i} - (\vec{i}\cdot\sigma\cdot\vec{i} )\vec{i}\right | [/math]

[math] (\vec{i}\cdot\sigma\cdot\vec{i} )\cdot\vec{i} = (x/10\cdot (1,0,0)) = \begin{pmatrix} x/10 \\ 0 \\ 0 \end{pmatrix} [/math]


[math] \sigma\cdot\vec{i} = \begin{pmatrix} x/10 & y/10 & 0 \\ y/10 & 3x/10 & 0 \\ 0 & 0 & x/10 \end{pmatrix}\begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix} = \begin{pmatrix} x/10 \\ y/10 \\ 0 \end{pmatrix} [/math]


[math] \sigma\cdot\vec{i} - (\vec{i}\cdot\sigma\cdot\vec{i} )\vec{i} = \begin{pmatrix} 0 \\ -y/10 \\ 0 \end{pmatrix} [/math]


[math] \left | \sigma\cdot\vec{i} - (\vec{i}\cdot\sigma\cdot\vec{i} )\vec{i} \right | = y/10 [/math]

12 Representación de la tensión de Von Mises

Nos dan la fórmula [math] \sigma_{VM} = \sqrt{\displaystyle\frac{(\sigma_{1}-\sigma_{2})^2+(\sigma_{2}-\sigma_{3})^2+(\sigma_{1}-\sigma_{1})^2}{2}} [/math]

donde [math] \sigma_{1}, \sigma_{2} y \sigma_{3} [/math] son los autovalores de [math] \sigma [/math]

x=(-2:0.1:2);               
y=(0:0.1:4);           
[X,Y]=meshgrid(x,y);
sigma=[];                                                                                             %Vector sigma vacío.
 for i=1:length(x);                                                                                   %Bucle para crear sigmatotal
     for j= 1: length(y);
              sigma=[X(i,j)./10 Y(i,j)./10 0;Y(i,j)./10 (3.*X(i,j))./10 0;0 0 X(i,j)./10];            %Matriz sigma
              EI=eig(sigma);                                                                          %Función para sacar los autovalores de la matriz sigma
              sigmavm= sqrt(((EI(1)-EI(2))^2+(EI(2)-EI(3))^2+(EI(3)-EI(1))^2)/2);                     %Ecuación de la tensión de Von Mises
              Z(i,j)=sigmavm;
     end
                                                    
     

 end
 surf(X,Y,Z)                                                                                           %Dibujo de la tensión


Mallado inicial

13 Dibujar el campo de fuerzas [math] \vec{F} [/math]

Dada la fórmula del enunciado [math] \vec{F} = -\nabla \cdot \sigma = -\displaystyle\frac{{\partial\sigma_{ji}}}{{\partial x_{j}}}\vec{e}_i [/math] que nos indica el campo de fuerzas que actúan sobre la placa y que provocan el desplazamiento:

x=(-2:0.1:2);                                      %Region de rango x entre los valores dados
y=(0:0.1:4);                                       %Region y
z=zeros(size(x));                                                                                                              
[X,Y,Z]=meshgrid(x,y,z);
X1=-X/10-Y/10;
Y1=X*0;
Z1=Z*0;
quiver3(X,Y,Z,X1,Y1,Z1)
Mallado inicial

14 Masa total

Para calcular la masa total de la placa calculamos la integral doble de la función de densidad [math] d(x,y) = \displaystyle\frac{1}{x^2+y^2+2} [/math] tomando como extremos los de la placa

x1=2;
x2=-2;
y1=4;
y2=0;
L1=x1-x2;                        %lado1 de la placa
L2=y1-y2;                        %lado2
AREA=L1*L2;  
syms X Y;                        %funcion para nombrar las variables de la integral
D=inline( 1./(X.^2+Y.^2+2));     %funcion de densidad
f=int(int(D,X,x2,x1),Y,y2,y1);   %Integral de la función de densidad  
Masa=D*AREA


La masa total es M = 1088