Visualización de campos escalares y vectoriales (grupo A2)

De MateWiki
Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título Visualización de campos escalares y vectoriales (grupo A2)
Asignatura Teoría de Campos
Curso 2020-2021
Autores CHENGYI XU
JINGJING MA
YIJING ZHENG
FANGZHENG YANG
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


Visualización de campos escalares y vectoriales en elasticidad. Consideramos una placa rectangular plana (en dimensión 2) que ocupa la región (x, y) ∈ [0, 10] × [−1, 1]. En ella vamos a suponer que tenemos definidas dos cantidades físicas: la temperatura [math]T(p,\theta)[/math], que viene dada por,

[math]\vec T(p,\theta ) =p^2cos(\theta ) [/math]

y los desplazamientos ~u(x, y) producidos por la acción de una fuerza determinada. De esta forma, si definimos ~r0(x, y) 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}=\vec{ro}(x,y)+\vec{u}(x,y) [/math]

Vamos a suponer que la fuerza aplicada sobre la placa ha provocado un desplazamiento de los puntos de la misma dado por el vector de desplazamientos

[math]\vec{u}(x,y)=\frac{xy^2}{20}+f(y)\vec{j}.[/math]

donde \(f(y)\) es una cierta función.

1 Ejercicio 1

Dibujar un mallado que represente los puntos interiores del sólido. Tomar los ejes (comando axis) en el rectángulo (x, y) ∈ [−0.5; 10.5] × [−1.5; 1.5] y como paso de muestreo h = 1/10 para las variables x e y.

En primer lugar representamos los puntos interiores de la placa con un mallado usando la función ‘mesh’, el mallado está definida entre el rectángulo (x, y) ∈ [−0.5; 10.5] × [−1.5; 1.5], con un paso de muestreo h=0.1 para los ejes de coordenadas, que usamos la función ‘axis’.

Mallado


x=0:0.1:10;      
y=-1:0.1:1; 
% La region la placa y su muestreo        
[xx,yy]=meshgrid(x,y);
%Genelacion del mallado 
figure(1)
mesh(xx,yy,0*xx)     
axis([-0.5,10.5,-1.5,1.5])  
 %Valor de los ejes de la grafica 
title('Mallado de la placa plana rectangular');                        
% Título del gráfico
xlabel('EJE X');                                       
% Título del eje x
ylabel('EJE Y');
% Título del eje y
 view(2)


2 Ejercicio2

Dibujar las curvas de nivel de la temperatura (comando contour) y decidir en qué punto la temperatura es máxima a partir de la gráfica.

Dibujamos las curvas de nivel de la temperatura que se define como [math]T\left ( \rho ,\theta  \right )= \rho ^{2}cos(\theta ) [/math].[math] T\left ( \rho ,\theta  \right )= \rho ^{2}cos(\theta )[/math] Como [math]x=\rho cos\theta e y=\rho sen\theta[/math] se deduce que [math]T=\rho x=x\sqrt{x^{2}+y^{2}}[/math] . Representando las curvas de nivel con la función ’contour’ y la función ‘colorbar’ para mostrar la escala de colores que nos define la temperatura, a mayor temperatura tiene un color más claro y a menor temperatura tiene un color más oscuro.   En la gráfica se muestra que la temperatura se aumenta al desplazar a la derecha, con una temperatura máxima de 100.4988.

Temperatura
x=0:0.1:10;      
y=-1:0.1:1;         
[xx,yy]=meshgrid(x,y);
%Creacion del mallado 
figure(1)
f=xx.*(sqrt(xx.^2+yy.^2));
%Funcion de la temperature 
contour(xx,yy,f)      
hold on             
plot(x,-1+x-x,'k','linewidth',1);
plot(x,1+x-x,'k','linewidth',1);
plot(y-y,y,'k','linewidth',1);
plot(10+y-y,y,'k','linewidth',1);
title('FUNCIÓN DE LA TEMPERATURA');    
%Título de la grafica                     
 xlabel('EJE X');    
%Título del eje x                                    
ylabel('EJE Y'); 
%titulo del eje y 
axis([-0.5,10.5,-1.5,1.5]) 
%Valor de los ejes de la grafica  
view(2)              
colorbar 
Tmax=max(max(f))
 
hold off


3 Ejercicio3

Calcular ∇T y dibujarlo como campo vectorial. Observar gráficamente que ∇T es ortogonal a dichas curvas. (Nota: es muy importante que la escala de los ejes sea la misma para apreciar el ángulo que forman las curvas de nivel y el gradiente)

Primero calculamos el gradiente de la temperatura: [math]\triangledown [/math]T donde la función de la temperatura es[math] T\left ( \rho ,\theta  \right )= \rho ^{2}cos(\theta )[/math] Como [math]x=\rho cos\theta e y=\rho sen\theta[/math] se deduce que [math]T=\rho x=x\sqrt{x^{2}+y^{2}}[/math] . Y el gradiente de un campo escalar T podemos definir como:[math]\triangledown T=\frac{\partial T}{\partial x}\overrightarrow{i}+\frac{\partial T}{\partial y}\overrightarrow{j}+\frac{\partial T}{\partial z}\overrightarrow{k} [/math]. Calculando las derivadas parciales[math]\frac{\partial T}{\partial x}=\frac{2x^2+y^2}{\sqrt{x^2+y^2}} y \frac{\partial T}{\partial y}=\frac{xy}{\sqrt{y^2+x^2}} [/math].   Con el grafico podemos ver que cumplen la propiedad del gradiente de que los:[math] \triangledown T [/math]son ortogonales a las superficies de nivel.   Sobre la representación gráfica, la creación de las curvas de nivel es lo mismo que el apartado anterior, y añadimos los gradientes para hacer una comparación. Para ello usamos la función ‘quiver’ para representar el campo vectorial calculado.

right
x=0:0.1:10;      
y=-1:0.1:1;         
[xx,yy]=meshgrid(x,y);
figure(1)
f=xx.*(sqrt(xx.^2+yy.^2));
contour(xx,yy,f)      
hold on             
plot(x,-1+x-x,'k','linewidth',1);
plot(x,1+x-x,'k','linewidth',1);
plot(y-y,y,'k','linewidth',1);
plot(10+y-y,y,'k','linewidth',1);
title('GRADIENTE DE TEMPERATURA');                        
xlabel('EJE X');                                        
ylabel('EJE Y'); 
axis([-0.5,10.5,-1.5,1.5])   
view(2)              
colorbar
 
x=0:0.1:10;      
y=-1:0.1:1; 
[xx,yy]=meshgrid(x,y);
u=((2.*xx.^2)+(yy.^2))./sqrt((xx.^2)+(yy.^2));
v=(xx.*yy)./sqrt((yy.^2)+(xx.^2));
%Gradientes de la función temperatura 
quiver(xx,yy,u,v)
%Representacion del campo vectorial.
view(2)
hold off


4 Ejercicio4

Consideramos ahora el campo de desplazamientos [math] \vec{u} [/math]. Calcularlo sabiendo: El campo de desplazamiento dado es : [math] \overrightarrow{u}=\frac{xy^2}{20}\overrightarrow{i}+f(y)\overrightarrow{j} [/math],

Y el enunciado nos dicen:

1. Los puntos situados en el eje y = 0 no sufren desplazamiento en la dirección [math] \overrightarrow{i} [/math]. 2.[math] \triangledown \cdot u=\frac{y^2-2}{20} [/math]. Como la divergencia del campo vectorial es: [math]\triangledown \cdot \overrightarrow{u}=\frac{\partial u_{1}}{\partial x}+\frac{\partial u_{2}}{\partial y}+\frac{\partial u_{3}}{\partial z}[/math], aplicando esto igualando al [math] \triangledown\cdot u[/math] obteniendo el resultado de [math]\frac{y^2}{20}+{f}'(y)=\frac{y^2-2}{20} [/math], sacando que[math] f(y)=\frac{-y}{10} [/math]. Igualando las ecuaciones tenemos que: [math]\overrightarrow{u}=\frac{xy^2}{20}-\frac{y}{10}[/math]

5 Ejercicio5

Dibujar el campo de vectores en los puntos del mallado del sólido.

Disponiendo de la fórmula del campo de desplazamientos del apartado anterior, podemos dibujar el campo de vectores en los puntos del mallado del solido, primer con meshgrid se transforma a dos matrices asociado a cada coordenada y los dos vectores al función del resultado de meshgrid, representamos la grafica con la función de la biblioteca mesh y quiver para presentar el campo de vector

campo vectorial
x=0:0.1:10;
y=-1:0.1:1;
[xx,yy]=meshgrid(x,y);
u=(xx.*yy.^2)/20;
v=-(yy/10)-((xx.*yy.^2)/20);

figure
mesh(xx,yy,0.*xx)
hold on
quiver(xx,yy,u,v,'k')
axis([-0.5,10.5,-1.5,1.5])
view(0,90)
hold off


6 Ejercicio6

Dibujar el sólido antes y después del desplazamiento dado por el campo de vectores [math] \vec{u} [/math]. Dibujar ambos en la misma figura usando el comando subplot.

Definimos como siempre el rectángulo de la malla utilizando la función meshgrid para convertir a dos matrices respectivamente asociada, la placa sin deformación lo representamos mediante la función con el valor cambiado al solución de la función meshgrid, utilizando subplot para dibujar en la misma figura y añadimos la placa influido con respecto la deformación al lado.

la figura
x=0:0.1:10;
y=-1:0.1:1;
[xx,yy]=meshgrid(x,y);

u=(xx.*yy.^2)./20;
v=-yy./10;

Rx=u+xx;
Ry=v+yy;

subplot(1,2,1);
mesh(xx,yy,0*xx);

axis([-0.5,10.5,-1.5,1.5])
title('PLACA SIN DEFORMACIÓN');
xlabel('Eje x');
ylabel('Eje y');
zlabel('Eje z');
subplot(1,2,2);
mesh(Rx,Ry,0*Rx)
axis([-0.5,10.5,-1.5,1.5])
title('PLACA CON DEFORMACIÓN');
xlabel('Eje x');
ylabel('Eje y');
zlabel('Eje z');


7 Ejercicio7

Dibujar ∇ · [math] \vec{u} [/math]. Determinar analíticamente los puntos en los que la divergencia de [math] \vec{u} [/math] es máxima, mínima y nula. La divergencia es una medida del cambio de volumen local debido al desplazamiento. ¿Se puede apreciar esto en la gráfica?

Primero obtenemos el resultado del calculo de la divergencia que es la suma de las derivadas en cada vector. Representamos gráficamente, nombrando a cada eje y con la función de la biblioteca pcolor,countour,surf mostramos la grafica y colorbar refrescamos su altura,con hold on y hold off representamos en la misma grafica y utilizamos el max y min para definir los valore máximos y mínimos.

right
right
right
x=0:0.1:10;
y=-1:0.1:1;
[xx,yy]=meshgrid(x,y);
divu=(yy.^2-2)/20;
surf(xx,yy,divu)
shading interp 
colorbar 
title('divergencia') 
xlabel('x')
ylabel('y') 
zlabel('z')
figure
pcolor(xx,yy,divu)
shading interp 
hold on 
contour(xx,yy,divu,'k')
xlabel('x')
ylabel('y') 
hold off 
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))
maxi = -0.050000
mini = -0.10000

8 Ejercicio8

Calcular | ∇ × [math] \vec{u} [/math]| en todos los puntos del sólido y dibujarlo. ¿Qué puntos sufren un mayor rotacional?

Para calcular esto aplicamos la formula de rotacional, y a la hora de representar gráficamente usamos como siempre en primer lugar meshgrid, para devolver dos matrices con la coordenada X e Y de los puntos de la retícula obtenida y el rotacional en función con respecto la solución de meshgrid, representamos el rotacional a partir del mallado rectangular al final con el criterio max para calcular el valor máximo.

[math] \left | \bigtriangledown \times u \right |[/math] =[math] \begin{vmatrix}\vec{i} & \vec{j}& \vec{k}\\ \frac{\partial }{\partial x}& \frac{\partial }{\partial y}& \frac{\partial }{\partial z}\\ F_{1}& F_{2}& F_{3} \end{vmatrix}[/math] = [math] \begin{vmatrix} \vec{i} & \vec{j} & \vec{z}\\ \frac{\partial }{\partial x} &\frac{\partial }{\partial y} &\frac{\partial }{\partial z} \\ \frac{xy^{2}}{20} & \frac{-y}{10} & 0\end{vmatrix}[/math] =-[math]\frac{xy}{10}\vec{k} [/math].

right
x=0:0.1:10;
y=-1:0.1:1;
%Creación del mallado
[xx,yy]=meshgrid(x,y);  

 rot=-(xx.*yy)./10; 
%representacion del rotacional a partir del mallado 
 surf(xx,yy,rot)
colorbar
axis([-0.5,10.5,-1.5,1.5])
 view(2) 
 title('Rotacional') 
 xlabel('EJE X')
 ylabel('EJE Y') 
 zlabel('EJE Z')
 %valores maximos y minimos 
rotmax=max(max(rot))
rotacional máximo=1

9 Ejercicio9

Definamos [math] \vec{u} [/math] = (∇ [math] \vec{u} [/math] + ∇ [math] \vec{u} [/math]t)/2, 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 σij a través de la formula σ = λ∇ · [math] \vec{u} [/math] 1 + 2µ[math]\varepsilon [/math], donde λ y µ son los 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. Tomando λ = µ = 1, dibujar las tensiones normales en la dirección que marca el eje [math] \vec{i} [/math], es decir [math] \vec{i} [/math] · σ ·[math] \vec{i} [/math], las tensiones normales en la dirección que marca el eje [math] \vec{j} [/math], es decir [math] \vec{j} [/math] · σ · [math] \vec{j} [/math] y las correspondientes al eje [math] \vec{k} [/math], es decir [math] \vec{k} [/math] · σ ·[math] \vec{k} [/math].

[math]\nabla \vec u = \frac{\partial u}{\partial x} \vec i + \frac{\partial u}{\partial y} \vec j = ( \frac{y^2}{20}\vec i )\cdot\vec i + (\frac{xy}{10}\vec i-\frac{1}{10}\vec j)\cdot\vec j = \frac{y^{2}}{20}\vec i\otimes \vec i +\frac{xy}{10}\vec i\otimes \vec j - \frac{1}{10}\vec j \otimes \vec j[/math]
[math]\left ( \nabla \vec u ^{t} \right )= \frac{y^{2}}{20}\vec i\otimes \vec i +\frac{xy}{10}\vec j\otimes \vec i - \frac{1}{10}\vec j \otimes \vec j[/math]
[math]\epsilon \left ( \vec{u}\right )=\frac{\nabla \vec u+ \nabla \vec u ^{t}}{2}= \frac{y^{2}}{20}\vec i\otimes \vec i - \frac{1}{10}\vec j \otimes \vec j+\frac{xy}{20}\left [ \left ( \vec{i}\otimes \vec{j} \right )+\left ( \vec{j}\otimes \vec{i} \right ) \right ][/math]
[math]\sigma =\lambda \triangledown \cdot \vec{u}I+2\mu \epsilon [/math]
[math]\lambda =\mu =1[/math]
[math]\rightarrow \sigma =\triangledown \cdot \vec{u}\cdot I+2\cdot 1\cdot \epsilon [/math]
[math]\triangledown \cdot \vec{u}\cdot I= \frac{y^{2}-2}{20}\cdot\begin{pmatrix} 1& 0 & 0\\ 0& 1& 0\\ 0& 0 & 1 \end{pmatrix}=\begin{pmatrix} \frac{y^{2}-2}{20}& 0 & 0\\ 0& \frac{y^{2}-2}{20} & 0\\ 0& 0& \frac{y^{2}-2}{20} \end{pmatrix}[/math]
[math]\sigma =\begin{pmatrix} \frac{y^{2}-2}{20}& 0 & 0\\ 0& \frac{y^{2}-2}{20} & 0\\ 0& 0& \frac{y^{2}-2}{20} \end{pmatrix}+2\cdot \begin{pmatrix} \frac{y^{2}}{20} & \frac{xy}{20} & 0\\ \frac{xy}{20}& -\frac{1}{10} & 0\\ 0& 0 & 0 \end{pmatrix}=\begin{pmatrix} \frac{3y^{2}}{20} & \frac{xy}{10} & 0\\ \frac{xy}{10}& \frac{y^{2}-6}{20} & 0\\ 0 & 0 & \frac{y^{2}-2}{20} \end{pmatrix} [/math]
[math]\vec{i}\cdot \sigma \cdot \vec{i}=\frac{3y^{2}-2}{20} [/math]
[math]\vec{j}\cdot \sigma \cdot \vec{j}=\frac{y^{2}-6}{20}[/math]
[math]\vec{k}\cdot \sigma \cdot \vec{k}=\frac{y^{2}-2}{20}[/math]

10 Ejercicio10

Calcular las tensiones tangenciales respecto al plano ortogonal a [math] \vec{i} [/math], es decir |σ · [math] \vec{i} [/math] − ( [math] \vec{i} [/math] · σ · [math] \vec{i} [/math]) [math] \vec{i} [/math]|

calculamos directamente con la solución obtenida de sigma y i*σ*i, y nos dice con respecto vector i(1,0,0),a través de hacer las operaciones producto de la matriz se puede obtener el resultado.

[math]\left | \sigma \cdot \vec{i}-\left ( \vec{i}\cdot \sigma \cdot \vec{i} \right )\vec{i} \right |=\left | \begin{pmatrix} \frac{3y^{2}}{20} & \frac{xy}{10} & 0\\ \frac{xy}{10}& \frac{y^{2}-6}{20} & 0\\ 0 & 0 & \frac{y^{2}-2}{20} \end{pmatrix} \begin{pmatrix} 1\\ 0\\ 0 \end{pmatrix}-(\frac{3y^{2}-2}{20})\begin{pmatrix} 1\\ 0\\ 0 \end{pmatrix} \right |=\frac{xy}{10}[/math]

11 Ejercicio11

La tensión de Von Mises se define por la fórmula σvm=[math]\sqrt{\frac{(σ1-σ2)^2+(σ2-σ3)^2+(σ3-σ1)^2}{2}}[/math] donde σ1, σ2 y σ3 son los autovalores de σ (también conocidos como tensiones principales). Se trata de una magnitud escalar que se suele usar como indicador para saber cuando un material inicia un comportamiento plástico (y no elástico puro). Pintar la tensión de Von Mises y señalar en qué punto se alcanza el mayor valor. (Para calcular autovalores con OCTAVE/Matlab usar el comando eig.m)

primero determina los intervalos de vector x,y, obtención del mallado a través de meshgrid, y obtenemos los valores de la tensión a partir de los intervalores.Dibujamos y podemos saber que el valor máximo=1.7521

right
x=0:0.1:10;
y=-1:0.1:1;
%Creación del mallado
[xx,yy]=meshgrid(x,y);  

Sigma=zeros(3,3);
 
%Obtenemos los valores de la tensión de Von Mises a partir de los autovalores
for i=1:21
     for j=1:101
          r=xx(i,j);
          t=yy(i,j);

          Sigma(1,1)=(3.*t.^2-2)./20;
          Sigma(1,2)=(r.*t)/10;
          Sigma(2,1)=(r.*t)/10;
          Sigma(2,2)=(t.^2-6)./20;
          Sigma(3,3)=(t.^2-2)./20;
          %Obtención de los autovalores de la matriz sigma
          [v,d]=eig(Sigma); 
        
           %Fórmula de Von Mises
           M(i,j)=sqrt(((d(1,1)-d(2,2))^2+(d(2,2)-d(3,3))^2+(d(3,3)-d(1,1))^2)/2);  
 
            end
         end
 
 %Dibujamos la tensión de Von Mises
 surf(xx,yy,M)

 colorbar
 view(2)
 title('Tensión de Von Mises')

%Valor Máximo
ValorMaximo=max(max(M))
 
%Coordenadas del valor Máximo
[i,j]=find(M==ValorMaximo)
 
 xx(i,j)
 yy(i,j)
valor maximo=1.7521

12 Ejercicio12

El campo de fuerzas [math] \vec{f} [/math] que actúa sobre la placa (y que son las causantes del desplazamiento observado) se aproxima usando la ecuación de la elasticidad lineal

Dibujar [math] \vec{f} [/math] e interpretar la grafica.

[math]\vec{F}=-\triangledown \cdot \sigma =-\frac{\partial \sigma ji}{\partial xj}\vec{ei}[/math]
[math]\vec{F1}=-\frac{\partial \sigma j1}{\partial x}\vec{i}=-\left [ \frac{\partial \frac{3y^{2}}{20}}{\partial x}+\frac{\partial \frac{xy}{10}}{\partial y}+\frac{\partial 0}{\partial z}\right ]\vec{i}=-\frac{x}{10}\vec{i}.[/math]
[math]\vec{F2}=-\frac{\partial \sigma j2}{\partial y}\vec{j}=-\left [ \frac{\partial \frac{xy}{10}}{\partial x} +\frac{\partial \frac{y^{2}-6}{20}}{\partial y}+\frac{\partial 0}{\partial z}\right ]\vec{j}=-\frac{y}{5}\vec{j}.[/math]
[math]\vec{F3}=-\frac{\partial \sigma j3}{\partial z}\vec{k}=-\left [ \frac{\partial 0}{\partial x}+\frac{\partial 0}{\partial y}+\frac{\partial \frac{y^{2}-2}{20}}{\partial z} \right ]=0\vec{k}[/math]

13 Ejercicio14

Supongamos que la densidad de la placa es d(x, y) = 1 + xy log(1 + x + y2). Calcular la masa total aproximando la integral correspondiente numéricamente.
h=0.1;                 
x=0:0.1:10;
y=-1:0.1:1;
%Creación del mallado
[U,V]=meshgrid(x,y);         

d=(exp(U.*V))./(U.^2+V.^2+2);
ms=abs(d.*h^2);
Masa=sum(sum(ms))
Masa=52.2097