Diferencia entre revisiones de «Placa plana Grupo 41»

De MateWiki
Saltar a: navegación, buscar
(Temperatura Maxima)
Línea 283: Línea 283:
 
grid on
 
grid on
 
}}
 
}}
 +
 +
==Divergencia==
  
  

Revisión del 12:05 2 dic 2024

Trabajo realizado por estudiantes
Título Deformaciones de una placa plana. Grupo 41
Asignatura Teoría de Campos
Curso 2024-25
Autores Jose Andres Bello Amado
Pelayo Gomez Lobo
Juan Pablo Garcia-Arias Vila
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 región [math](x, y) ∈ [-1 , 1] × [,][/math].

En ella vamos a suponer que tenemos definidas dos cantidades físicas: la temperatura [math]T(x, y)[/math], que viene dada por
[math]T(x, y)=(1-x^4)+(\frac{1}{2}-y)[/math]
y los desplazamientos [math]u(x, y)[/math] producidos por la acción de una fuerza determinada. De esta forma, si definimos [math]\vec{r_{0}}(x, y)=x\vec{i}+y\vec{j}[/math] el vector de posición de los puntos de la placa antes de la deformación, la posición de cada punto [math](x, y)[/math] 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 sobre la placa ha provocado un desplazamiento ondulatorio de los puntos de la misma dado por el vector
[math]\vec{u}(x, y) = \frac{xy \vec{i} - yx^2 \vec{j}}{10}[/math]


1 Mallado del Solido

Mallado Placa Plana
% Datos y región
h = 1/10; 
x= -1:h:1;
y = 0:h:3;
% Mallado y limites placa
[X, Y] = meshgrid(x, y);
f = @(x) 2+x.^2;
Region = (Y <= f(X));
Z = zeros(size(X));
X(~Region) = NaN; 
Y(~Region) = NaN;
mesh(X, Y, Z);
hold on
limx = x;
limy = arrayfun(f, limx);
%Superficie
plot3(limx, limy, zeros(size(limx)), 'Color', [0.2, 0.4, 0.6], 'LineWidth', 2);
plot3([-1 -1], [0 3], [0 0], 'Color', [0.2, 0.4, 0.6], 'LineWidth', 2); 
plot3([1 1], [0 3], [0 0], 'Color', [0.2, 0.4, 0.6], 'LineWidth', 2); 
plot3([-1 1], [0 0], [0 0], 'Color', [0.2, 0.4, 0.6], 'LineWidth', 2);  
%Asignación ejes y vista
axis equal
axis([-2, 2, 0, 3])
xlabel('Eje X')
ylabel('Eje Y')
title('Mallado de la Placa')
view(2) 
grid on
hold off


2 Curvas de Nivel y Gradiente de la Temperatura

2.1 Curvas de Nivel

CurvasNivel
% Datos y región
h = 1/10;
x = -1:h:1;       
y = 0:h:3;
% Mallado y Región
[X, Y] = meshgrid(x, y);
f = @(x) 2+x.^2;
region = (Y <= f(X)); 
Temperatura = (1 - X.^4) .* (1/2 - Y);
Temperatura(~region) = NaN;
contour3(X, Y, T, 20, 'LineWidth', 2); 
colorbar
%Asignación ejes y vista
axis equal
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Temperatura T(x, y)')
title('Curvas de Nivel de la Temperatura')
grid on
view(2)
hold off;


2.2 Superficie de la Temperatura

SuperficieTemperatura
% Datos y Región
h = 1/10;
x = -1:h:1;        
y = 0:h:3;  
% Mallado y Región
[X, Y] = meshgrid(x, y);
f = @(x) 2+x.^2;
region = (Y <= f(X)); 
%Funcion Temperatura
Temperatura = (1 - X.^4) .* (1/2 - Y);
Temperatura(~region) = NaN; 
mesh(X, Y, Temperatura);   
hold on;
% Valores Maximos Temperatura y Coordenadas
[maxTemperatura, XX] = max(Temperatura(:)); 
[maxX, maxY] = ind2sub(size(Temperatura), XX); 
PuntoX = X(maxX, maxY); 
PuntoY = Y(maxX, maxY); 
plot3(PuntoX, PuntoY, maxTemperatura, 'ro', 'MarkerSize', 8, 'LineWidth', 2); 
text(PuntoX, PuntoY, maxTemperatura, sprintf('   %.2f', maxTemperatura), 'Color', 'r', 'FontSize', 10);
%Asignación ejes y vista
axis equal;
axis([-2, 2, 0, 3]);  
xlabel('Eje X')
ylabel('Eje Y')
title('Temperatura Superficie')
colorbar  
grid on  
hold off


2.3 Gradiente Función Temperatura

CurvasNivelGradiente
% Datos y Región
x = -1:h:1;
y = 0:h:2;
h = 1/10; 
% Función Temperatura y Gradiente
Temperatura = @(x, y) (1 - x.^4) .* (1/2 - y);
[X, Y] = meshgrid(x,y);
ValoresTemp = Temperatura(X, Y);
[Tx, Ty] = gradient(ValoresTemp, h, h); 
figure
% Grafico Gradiente
contour(X, Y, ValoresTemp, 35, 'LineWidth', 1); 
hold on
quiver(X, Y, Tx, Ty, 'r','LineWidth', 1);
% Asignación ejes y vista
axis equal 
xlabel('x')
ylabel('y')
title('Curvas de nivel de T(x, y) y gradiente ∇T')
colorbar
hold off


3 Ley de Fourier

LeyFourier
% Datos y Región
h = 1/10;  
x = -1:h:1;  
y = 0:h:3;  
[X, Y] = meshgrid(x, y);  
f = @(x) 2+x.^2; 
region = (Y <= f(X));  
% Gradiente Temperatura
Temperatura = (1 - X.^4) .* (1/2 - Y);  
Temperatura(~region) = NaN; 
[Tx, Ty] = gradient(Temperatura, h);  
% Aplicacion Ley Fourier
Qx = -Tx; Qy = -Ty;  
Qx(~region) = NaN;  Qy(~region) = NaN;  
SuperficieTemp = Temperatura; 
% Graficas
contour3(X, Y, SuperficieTemp, 35);  
hold on;
quiver3(X, Y, SuperficieTemp, Qx, Qy, zeros(size(Qx)), 'r');  
% Asiganación ejes y vista
axis equal  
axis([-2, 2, 0, 3, 0, 1])
xlabel('Eje X')
ylabel('Eje Y')  
zlabel('Temperatura T(x, y)')
title('Curvas de Nivel y Flujo de Energía')
colorbar
grid on
hold off
view(2)


4 Temperatura Maxima

DireccionMaxima
% Datos y Región
h = 1/50;
x =-1:h:1;          
y = 0:h:3;         
[X,Y] = meshgrid(x, y);  
f = @(x) 2+x.^2;
Region = (Y <= f(X));  
Z = zeros(size(X));
X(~Region) = NaN;  
Y(~Region) = NaN;  
% Cálculo de la Temperatura
Temperatura = (1 - X.^4) .* (1/2 - Y); 
% Derivadas Parciales y Gradiente
DerivadaX = (-4*X.^3).* (1/2 - Y);  
DerivadaY = -(1-X.^4);    
gradiente = sqrt(DerivadaX.^2 + DerivadaY.^2);
% Punto Maximo Gradiente 
[MaximoGradiente, XX] = max(gradiente(:));  
[MaximaX, MaximaY] = ind2sub(size(gradiente), XX);  
PuntoMaximo = [X(MaximaX, MaximaY), Y(MaximaX, MaximaY)];  
figure;
hold on;
% Direccion Gradiente
X2 = X(1:5:end, 1:5:end);
Y2 = Y(1:5:end, 1:5:end);
DerivadaX2 = DerivadaX(1:5:end, 1:5:end);
DerivadaY2 = DerivadaY(1:5:end, 1:5:end);
% Grafico Gradiente y Punto Maximo
quiver3(X2, Y2, Z(1:5:end, 1:5:end), DerivadaX2, DerivadaY2, zeros(size(DerivadaX2)), 'LineWidth', 1, 'MaxHeadSize', 1);
plot3(PuntoMaximo(1), PuntoMaximo(2), 0, 'ro', 'MarkerSize', 10, 'LineWidth', 2); 
text(PuntoMaximo(1), PuntoMaximo(2), 0, sprintf(' %.2f', MaximoGradiente));
% Configuración de los Ejes y la Vista
axis equal
axis([-2, 2, 0, 3.1, -1, 1]);  
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Eje Z')
title('Mallado de la Superficie y Dirección de Máxima Variación de Temperatura')  
grid on
hold off


5 Campos de Desplazamientos

CamposDesplazamiento
% Datos y Región
h = 1/10;
x = -1:h:1;       
y = 0:h:3;  
[X, Y] = meshgrid(x, y);  
f = @(x) 2+x.^2;  
Region = (Y <= f(X)); 
Z = zeros(size(X)); 
X(~Region) = NaN;  
Y(~Region) = NaN;  
% Campo Desplazamientos
u = (X.*Y) / 10; 
v = -(Y.*X.^2) / 10;  
% Grafica Campos Desplazamientos
figure;  
mesh(X, Y, Z); 
hold on
quiver3(X, Y, Z, u, v, zeros(size(u)), 2, 'r'); 
% Asignación ejes y vista
axis equal
axis([-2, 2, 0, 3, -0.5, 0.5]); 
xlabel('Eje X')
ylabel('Eje Y')  
zlabel('Eje Z')  
title('Campo de Desplazamientos') 
view(2)
grid on  
hold off


6 Desplazamiento dado por el Campo de Vectores

AntesDespuesDesplazamiento
% Datos y Región 
x = -1:h:1;
y = 0:h:3;
h = 1/10;
f = @(x) 2 + x.^2 ;
[X, Y] = meshgrid(x,y);
Region = (Y <= f(X));  
X(~Region) = NaN; 
Y(~Region) = NaN;
% Campo Desplazamiento
U = @(x, y) x .* y;            
V = @(x, y) -y .* x.^2;        
% Puntos iniciales
X0 = X;
Y0 = Y;
% Puntos Desplazados
XX = X0 + U(X0, Y0);  
YY = Y0 + V(X0, Y0);  
figure
% Graficar la placa antes del desplazamiento
subplot(1, 2, 1)
hold on
mesh(X,Y,zeros(size(X))) 
title('Placa antes del desplazamiento')
xlabel('Eje X')
ylabel('Eje Y')
axis equal
axis([-2, 2, 0, 3])
grid on 
% Graficar la placa después del desplazamiento
subplot(1, 2, 2)
hold on
mesh(XX,YY,zeros(size(X)))
title('Placa después del desplazamiento')
xlabel('Eje X')
ylabel('Eje Y')
axis equal
axis([-2, 2, 0, 3])
grid on


7 Divergencia