Visualización de campos escalares y vectoriales en elasticidad. (Grupo 15-C)

De MateWiki
Saltar a: navegación, buscar

1 Introducción

Vamos a realizar el estudio de una placa plana con forma de corona circular centrada en el origen y de radio interior 1 y radio exterior 2, al verse sometida a diversos campos. Para empezar, representamos el mallado sobre el que vamos a trabajar. La visualización de la misma nos sirve para situar la placa en nuestro espacio de trabajo.

2 Espacio de trabajo

En nuestro caso vamos a suponer que tenemos definidas dos cantidades físicas: la temperatura [math]T(\rho,\theta,t)[/math], que depende de las dos coordenadas polares [math](\rho,\theta)[/math] y el tiempo [math]t[/math], y los desplazamientos [math]\vec u(\rho,\theta,t)[/math]. De esta forma, si definimos [math]r_0(\rho,\theta)[/math] el vector de posición de los puntos de la placa en reposo, la posición de cada punto [math](\rho,\theta)[/math] de la placa en un instante de tiempo [math]t[/math] viene dada por:: [math] \vec r (\rho,\theta,t)= \vec r_{0}(\rho,\theta)+\vec u(\rho,\theta,t). [/math] Queda reflejado en Matlab con el siguiente código:

Fig1buena.jpg
h=0.1                      % Intervalos de separación
    u=1:h:2;               % Intervalo de rho [1,2]
    v=0:h:2*pi+h;          % Intervalo de theta [0,2*pi]
    [uu,vv]=meshgrid(u,v); % Matrices de u y v
    figure(1)
    xx=uu.*cos(vv);        % Parametrización
    yy=uu.*sin(vv);
    mesh(xx,yy,0*xx)       % Dibujo del mallado
    axis([-3,3,-3,3])      % Región del dibujo
    view(2)


Tras la visualización deseamos estudiar cómo nuestra placa se va a comportar frente a un foco calorífico.

3 Comportamientos ante un foco calorífico

Nuestro foco calorífico se sitúa en el origen de coordenadas, siguiendo la expresión [math]T(\rho,\theta)=-\log(\rho+0.1)[/math]. Representado en Matlab con el siguiente código:

Campo de temperaturas sobre la placa.
Campo de temperaturas sobre la placa (3D).
h=(0.1);                     % Intervalo de separación

    u=[1:h:2];                % Intervalo de rho [1,2]

    v=[0:h:2*pi+h];           % Intervalo de theta [0,2π]

    [uu,vv]=meshgrid(u,v);    % Matrices de rho y theta

    figure(1)

    xx=uu.*cos(vv);           % Parametrización

    yy=uu.*sin(vv);

    f=-log(0.1+sqrt(xx.^2+yy.^2)); % Campo escalar

    surf(xx,yy,f)             % Dibujar la superficie

    axis([-2,2,-2,2])         % Región del dibujo

    colorbar

    view(2)


Como observamos en la ilustración la temperatura desciende a medida que nos alejamos del origen de coordenadas. Por lo tanto la placa tiene mayor temperatura cuánto menor es su radio (valor de [math]\rho[/math]) , es decir cuanto más cerca del foco nos encontramos. En este caso el foco calorífico no varía en función de [math]\theta[/math].

3.1 Variación de la temperatura

Derivando la función [math]T(\rho,\theta)=-\log(\rho+0.1)[/math] en función de [math]\rho[/math] y [math]\theta[/math], obtenemos una expresión del gradiente de la temperatura que en coordenadas cartesianas nos da como resultado el siguiente campo vectorial::

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

Gradiente del campo de temperaturas sobre la placa.
h=0.1;                      % Intervalo de separación

    u=1:h:2;                % Intervalo de rho [1,2]

    v=0:h:2*pi+h;           % Intervalo de theta [0,2*pi]

    [uu,vv]=meshgrid(u,v);  % Matrices de rho y theta

    figure(1)

    xx=uu.*cos(vv);         % Parametrización

    yy=uu.*sin(vv);
    
    f=-log(0.1+sqrt(xx.^2+yy.^2)); % Campo escalar
    
    contour(xx,yy,f)        % Dibujar las líneas de nivel

    hold on
    
    fx=-xx./((xx.^2+yy.^2)+0.1.*sqrt(xx.^2+yy.^2)); % Derivada parcial respecto de X
    
    fy=-yy./((xx.^2+yy.^2)+0.1.*sqrt(xx.^2+yy.^2)); % Derivada Parcial respecto de Y

    quiver(xx,yy,fx,fy)     % Dibujar el Campo Vectorial

    axis([-2,2,-2,2])       % Región del dibujo

    view(2)               

    colorbar


Si observamos la imagen obtenida con Matlab, podemos ver que las curvas de nivel de la temperatura parten del foco calorífico formando circunferencias concéntricas sin respetar una equidistancia determinada, ya que la función logarítmica no es lineal. Por tanto, estas líneas tienen mayor temperatura cuanto más próximas a él se localicen.

Por otro lado podemos observar que las flechas que representan el gradiente son radiales y que apuntan hacia el origen de coordenadas, debido a que el signo obtenido en las derivadas parciales es negativo. Podemos por tanto decir que el gradiente es menor cuanto más se aproxima al origen de coordenadas.

Gráficamente observamos que [math]\nabla T[/math] es ortogonal a las curvas de nivel de la temperatura.

4 Campo de desplazamiento

Vamos a suponer que sobre la placa se ha aplicado una fuerza que ha provocado una vibración de manera que los desplazamientos en un tiempo [math]t_0[/math] dado vienen dados por:: [math] \vec u(\rho,\theta)=\frac{\sin(\pi \theta/2)}{30\rho}\vec g_{\rho}. [/math] El código de Matlab para dibujar el campo de vectores en los puntos del mallado del sólido es el que mostramos a continuación:

Campo de desplazamiento.
h=0.1                     % Intervalo de separación
    u=1:h:2;              % Intervalo de rho
    v=0:h:2*pi+h;         % Intervalo de theta
    [uu,vv]=meshgrid(u,v);% Matriz de rho y theta
    figure(1)
    xx=uu.*cos(vv);       % Parametrización
    yy=uu.*sin(vv);
    figure(1)
    m=((sin((pi.*vv)./2).*cos(vv))./(30*uu));
    n=((sin((pi.*vv)./2).*sin(vv))./(30*uu));
    quiver(xx,yy,m,n);    % Dibujo de la función
    view

4.1 Aplicación del desplazamiento

El desplazamiento que realiza la placa consiste en una serie de movimientos transversales en distintas direcciones. Como podemos ver en la siguiente imagen, obtenida con el código Matlab, el desplazamiento es prácticamente inapreciable.

Desplazamiento de la placa producido por un campo vectorial. Estado inicial y final.
subplot(1,2,1)
h=0.1;                     % Intervalo de separación

    u=1:h:2;               % Intervalo de rho

    v=0:h:2*pi+h;          % Intervalo de theta

    [uu,vv]=meshgrid(u,v); % Matriz de rho y theta

    figure(1)

    xx=uu.*cos(vv);        % Parametrización

    yy=uu.*sin(vv);

    mesh(xx,yy,0*xx)       % Dibujo del mallado

    axis([-3,3,-3,3])      % Región del dibujo 

    axis equal                   
    
    subplot(1,2,2)

   h=0.1                   % Intervalo de separación

    u=1:h:2;               % Intervalo de rho

    v=0:h:2*pi+h;          % Intervalo de theta

    [uu,vv]=meshgrid(u,v); % Matriz de rho y theta

    figure(1)

    xx=uu.*cos(vv);        % Parametrización

    yy=uu.*sin(vv);

    figure(1)

    m=((sin((pi.*vv)./2).*cos(vv))./(30*uu));

    n=((sin((pi.*vv)./2).*sin(vv))./(30*uu));

    mesh(m+xx,n+yy,xx*0)   % Dibujo de las funciones

    axis([-3,3,-3,3])

    axis equal

    view


5 Estudio de la divergencia

La divergencia es una medida del cambio de volumen local debido al desplazamiento. En este caso vamos a estudiarla tomando como volumen el de nuestra placa. En este caso, al considerar el campo [math]\vec u(\rho,\theta)=\frac{\sin(\pi \theta/2)}{30\rho}\vec g_{\rho}[/math], la divergencia la obtenemos con la siguiente expresión en coordenadas cilíndricas::

[math] \nabla \cdot \vec u = \frac{1}{\sqrt{|g|}} \frac{\partial}{\partial x^i} \left(\sqrt{|g|} u^i \right)= \frac{1}{\rho} \frac{\partial}{\partial\rho} ({\rho} \frac{\sin(\pi \theta/2)}{30\rho})= 0\ [/math]

En el estudio de la divergencia nos damos cuenta de que todos los puntos tienen la misma, ya que sobre nuestra placa es cero. Esto se debe a que la placa se ve sometida a desplazamientos transversales (como hemos visto en el apartado anterior) sin deformación de volumen, por lo que no habría un cambio del mismo.

6 Estudio del rotacional

En la corona circular de estudio donde los desplazamientos vienen representados por el vector [math] \vec u(\rho,\theta)=\frac{\sin(\pi \theta/2)}{30\rho}\vec g_{\rho} [/math], el rotacional muestra la tendencia de un campo vectorial a inducir rotación alrededor de un punto::

[math] \nabla\times\vec u = \frac{1}{\rho} \begin{vmatrix} \vec g_{\rho} & \vec g_{\theta} & \vec g_{z} \\ \frac{\partial}{\partial \rho} & \frac{\partial}{\partial \theta} & \frac{\partial}{\partial z} \\ \frac{\sin(\pi \theta/2)}{30\rho} & 0 & 0 \end{vmatrix} = \frac{1}{\rho} \frac{\partial}{\partial\theta} (\frac{\sin(\pi \theta/2)}{30\rho})\vec g_{z}= -\frac{\pi}{2}\frac{\cos(\pi \theta/2)}{30\rho^2}\vec g_{z} [/math]

Una vez calculado el rotacional, obtenemos su módulo::

[math]|\nabla × \vec u| =\frac{\pi \cos(\pi \theta/2)}{60\rho^2} [/math]

Campo Rotacional aplicado a una placa circular (2D).
Campo rotacional aplicado a una placa circular (3D).
h=0.1;                     % Intervalo de separación

    u=1:h:2;               % Intervalo de rho

    v=0:h:2*pi+h;          % Intervalo de theta

    [uu,vv]=meshgrid(u,v); % Matriz de rho y theta
     
    xx=uu.*cos(vv);        % Parametrización

    yy=uu.*sin(vv);
    
    figure(1)

    f=abs(pi.*cos((pi.*vv)./2))./(60.*uu.^2); % Campo del rotacional

    surf(xx,yy,f)          % Líneas de nivel del rotacional

    hold on               

    view(2)            
    
h=0.1;                     % Intervalo de separación

    u=1:h:2;               % Intervalo de rho

    v=0:h:2*pi+h;          % Intervalo de theta

    [uu,vv]=meshgrid(u,v); % Matriz de rho y theta

    figure(1)

    xx=uu.*cos(vv);        % Parametrización

    yy=uu.*sin(vv);

    mesh(xx,yy,0*xx)       % Dibujo de la malla

    axis([-3,3,-3,3])      % Región del dibujo

    view(2)           

hold off


Matemáticamente, los puntos en los que hay un mayor rotacional son aquellos en los que [math]\cos(\pi\theta/2)=\pm 1 [/math] y [math]\rho=1[/math]. Gráficamente, estas zonas con un mayor valor del rotacional vienen representadas con un color rojizo.

7 Estudio del tensor de tensiones

Definamos [math]\epsilon(\vec u)=(\nabla \vec u + \nabla \vec u^t)/2[/math], la parte simétrica del tensor gradiente de [math]\vec u[/math], que se denomina 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] \sigma_{ij}=\lambda \nabla \cdot \vec u \delta_{ij} + 2\mu \epsilon_{ij}, [/math] Siendo [math] \nabla \cdot \vec u = 0 [/math] y calculando el gradiente de [math]\vec u[/math] como:: [math]\nabla\vec u=u^i_{.j}\vec g_i \otimes \vec g^j[/math] donde [math]u^i_{.j}= \vec g^i \nabla\vec u \vec g_j=\frac{\partial u^i}{\partial x^j}+\Gamma^i_{kj}u^k.[/math] Podemos calcular el tensor de deformaciones como 1-contravariante 1-covariante:: [math](\epsilon^i_{.j})=(\nabla \vec u + \nabla \vec u^t)/2=\left(\begin{array}{ccc}-\frac{\sin(\pi\theta/2)}{30\rho^2}& \frac{\pi\cos(\pi\theta/2)}{120\rho}&0\\\frac{\pi\cos(\pi\theta/2)}{120\rho}& \frac{\sin(\pi\theta/2)}{30\rho^2}&0\\0&0&0\end{array}\right)[/math] En coordenadas 2-covariantes tendríamos:: [math]\epsilon(\vec u)=(\epsilon_{ij})=G(\epsilon^i_{.j})=\left(\begin{array}{ccc}-\frac{\sin(\pi\theta/2)}{30\rho^2}& \frac{\pi \cos(\pi\theta/2)}{120\rho}&0\\\frac{\pi\rho\cos(\pi\theta/2)}{120}& \frac{\sin(\pi\theta/2)}{30}&0\\0&0&0\end{array}\right)[/math]

Sustituyendo ahora los valores en la fórmula del tensor de tensiones,y tomando [math]\lambda=\mu=1[/math], siendo [math]\lambda[/math] y [math]\mu[/math] los conocidos como coeficientes de Lamé, obtenemos:: [math](\sigma_{ij})=2(\epsilon_{ij})=\left(\begin{array}{ccc}-\frac{\sin(\pi\theta/2)}{15\rho^2}& \frac{\pi \cos(\pi\theta/2)}{60\rho}&0\\\frac{\pi\rho\cos(\pi\theta/2)}{60}& \frac{\sin(\pi\theta/2)}{15}&0\\0&0&0\end{array}\right)[/math]

Las tensiones normales en la dirección [math]\vec g_{\rho}[/math] serían:: [math]\vec g_{\rho} \cdot \sigma \cdot \vec g_\rho =\frac{-sen(\pi \theta/2)}{15\rho^2} [/math]


Las tensiones normales en la dirección [math]\vec g_\theta/\rho[/math] serían:: [math]\vec g_\theta/\rho \cdot \sigma \cdot \vec g_\theta/\rho = \frac{\sin(\pi\theta/2)}{15\rho^2} [/math]

A continuación se muestra el código Matlab empleado para dibujar estas tensiones normales en ambas direcciones:

Tensiones normales en diversas direcciones.
h=0.1;                         % Intervalo de separación

    u=[1:0.1:2];               % Intervalo de rho [1,2]

    v=[0:h:2*pi+h];            % Intervalo de theta [0,2*pi]

    [uu,vv]=meshgrid(u,v);     % Matrices de rho and theta

    figure(1)

    subplot(1,2,1)

    xx=uu.*cos(vv);            % Parametrización

    yy=uu.*sin(vv);

    f=((-sin(pi*vv./2))./(15*(xx.^2+yy.^2))); % Campo escalar

    surf(xx,yy,f)              % Dibujar el mallado

    axis([-2,2,-2,2])          % Región seleccionada
    
    axis equal
    
    colorbar

    title('Tensión normal en dirección g sub rho')

    view(2)                  

    subplot(1,2,2)

    f=sin(pi.*vv/2)./(15.*uu.^2);  % Campo escalar

    surf(xx,yy,f)              % Dibujar el mallado

    axis([-2,2,-2,2])          % Región del dibujo
    
    axis equal
    
    colorbar

    title('Tensión normal en dirección g sub theta')

    view(2)

7.1 Tensiones tangenciales

7.1.1 Respecto al plano ortogonal a [math]\vec g_\rho[/math] y respecto al plano ortogonal a [math]\vec g_\theta/\rho[/math]

Por un lado, vamos a analizar las tensiones tangenciales respecto al plano ortogonal a [math]\vec g_\rho[/math]:: [math]|\sigma \cdot \vec g_\rho-(\vec g_\rho \cdot \sigma \cdot \vec g_\rho) \vec g_\rho| = \frac{\pi\rho cos(\pi \theta/2)}{60} [/math]

Como podemos observar, en este caso, las tensiones son máximas cuando $\rho$ =2 y $\cos(\pi\theta/2)=\pm1$.

Por otro lado, analizamos las tensiones tangenciales respecto al plano ortogonal a [math]\vec g_\theta/\rho[/math]::

[math]|\sigma \cdot \vec g_\theta/\rho-(\vec g_\theta/\rho \cdot \sigma \cdot \vec g_\theta/\rho) \vec g_\theta/\rho|= \frac{\pi cos(\pi \theta/2)}{60 \rho^2}[/math]

En este otro caso, las tensiones son máximas cuando $\rho=1$ y $\cos(\pi\theta/2)=\pm1$, por tanto observamos que coinciden con los puntos en los cuales es máximo el rotacional.

En Matlab podemos dibujar estas tensiones mediante el siguiente código:

Tensiones tangenciales respecto al plano ortogonal a g⃗ ρ (izquierda) y respecto al plano ortogonal a g⃗ θ/ρ (derecha)
h=(0.1);                    % Intervalo de separación

    u=[1:h:2];              % Intervalo de rho [1,2]

    v=[0:h:2*pi+h];         % Intervalo de theta [0,2*pi]

    [uu,vv]=meshgrid(u,v);  % Matrices de rho y theta

    figure(1)

    subplot(1,2,1)

    xx=uu.*cos(vv);         % Parametrización

    yy=uu.*sin(vv);

    f=abs((pi.*uu.*cos(pi*vv./2)))./(60); % Campo escalar

    surf(xx,yy,f)           % Dibujar el mallado

    axis([-2,2,-2,2])       % Región para dibujar
    
    axis equal 
 
    colorbar

    view(2)                

    subplot(1,2,2)

    f=abs((pi*(cos(pi*vv./2)))./(60*uu.^2)); % Campo escalar

    surf(xx,yy,f)          % Dibujar el mallado

    axis([-2,2,-2,2])      % Región para dibujar

    axis equal 
    
    colorbar

    view(2)