Diferencia entre revisiones de «Presa triangular. Grupo 12.»

De MateWiki
Saltar a: navegación, buscar
(Curvas de nivel de la temperatura)
(Cálculo de energía calorífica con la Ley de Fourier)
Línea 153: Línea 153:
 
Una vez calculado, se procede a dibujarlo utilizando Matlab:
 
Una vez calculado, se procede a dibujarlo utilizando Matlab:
  
 +
clear all
 +
%Definir la figura
 +
h = 1/10; % Paso de muestreo
 +
x1 = 0:h:2;
 +
y1 = 0:h:3;
 +
[x2, y2] = meshgrid(x1, y1); % Crea una malla 2D para las coordenadas x e y
 +
f = @(x) min(3, (3/2) * (2 - x)); % Función límite
 +
Region = (y2 <= f(x2)); % Condición para estar dentro de la región
 +
z2 = zeros(size(x2)); % Altura (en este caso, z es plano en 0)
 +
x2(~Region) = NaN; % Puntos fuera de la región se descartan
 +
y2(~Region) = NaN;
 +
%Campo temperatura
 +
T = (y2 .* x2.^2) / 2; % Función de temperatura
 +
T(~Region) = NaN; % Filtra puntos fuera de la región
 +
%Campo de Gradiente
 +
[Tx, Ty] = gradient(T, h); % Calcula el gradiente de T(x, y)
 +
Tx(~Region) = NaN; % Filtra los componentes del gradiente fuera de la región
 +
Ty(~Region) = NaN;
 +
%Campo de energía
 +
[Tx, Ty] = gradient(T, h); % Gradiente de T(x, y)
 +
Qx = -Tx; % Componente x del flujo de energía calorífica
 +
Qy = -Ty; % Componente y del flujo de energía calorífica
 +
Qx(~Region) = NaN; % Filtra los valores fuera de la región
 +
Qy(~Region) = NaN;
 +
%Dibuja curva de nivel
 +
z_surface = T; % Superficie para representar las curvas de nivel
 +
contour3(x2, y2, z_surface, 20, 'LineWidth', 2); % Curvas de nivel en 3D
 +
hold on
 +
%Vector de flujo de energía
 +
scale = 1.5;
 +
quiver3(x2, y2, z_surface, scale*Qx, scale*Qy, zeros(size(Qx)), 'r', 'LineWidth', 1.5);
 +
%Dibujar la grfica de calor
 +
axis equal;
 +
axis([0, 2, 0, 3, 0, 1]); % Límites de los ejes
 +
xlabel('Eje X');
 +
ylabel('Eje Y');
 +
zlabel('Temperatura T(x, y)');
 +
title('Curvas de Nivel y Flujo de Energía Calorífica en 3D');
 +
colorbar; % Muestra una barra de colores asociada a la temperatura
 +
grid on;
 +
hold off;}}
  
 
=Campo de vectores en el sólido=
 
=Campo de vectores en el sólido=

Revisión del 11:47 2 dic 2024

Trabajo realizado por estudiantes
Título Representación de campos de temperatura y deformaciones en una presa triangular (Grupo 12)
Asignatura Teoría de Campos
Curso 2024-25
Autores
  • Jaime Durá Garrido
  • Fátima Mougedimy Alosman
  • Xinkai Hu
  • Paula Monterde Garcia
  • Angela Ilagan Martinez
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 presa representada por una placa triangular plana (en dimensión 2) que ocupa la región [math](x, y) ∈ [-1, 1]×[0, f(x)][/math], donde [math]f(x)=min(3,3/2(2-x))[/math]


• Parametrizar la superficie

[math](x, y) ∈ [0, 2] × [0, f(x)][/math] con:[math]f(x) = \min(3, \frac{3}{2}(2 − x))[/math]
.

• La temperatura viene dada por la función:

[math]T(x, y) = \frac{y \cdot x^2}{2}[/math]
.

• Los desplazamientos se corresponden con el campo:

[math]\vec{u}(x, y) = \frac{2(2 − x)y \cdot \vec{i} − y \cdot \vec{j}}{50}[/math]
.

• Tomar como densidad:

[math]d(x, y) = (2 − |x − \frac{1}{2}|)(4 − y)[/math]
.


1 Dibujo del mallado que representa los puntos interiores del sólido.

Resultado de ejecución

Esta grafica muestra el mallado de la placa triangular y el código utilizado en MatLab para obtenerlo. Un breve resumen del funcionamiento del codigo seria:

  • La primera línea del código utiliza algo basico en Matlab,que es el uso del clear y el clc para que se borren todas las variables anteriormente usadas y no causen confusión
  • En las dos siguientes lineas de codigo discretizamos las variables x1 e y1.
  • En la cuarta y en la quinta línea escribimos los comandos para crear el mallado.
  • Finalmente las dos penúltimas lineas servirán para nombrar a los ejes x e y respectivamente, mientras que las últimos dos sirven para añadirle un título a nuestra gráfica y visualizar en planta nuestra placa.
clear;clc;h = 1/10; % Paso de muestreo
x1 = 0:h:2;
y1 = 0:h:3;
[x2, y2] = meshgrid(x1, y1); % Crea una malla 2D para las coordenadas x e y
f = @(x) min(3, (3/2) * (2 - x)); % Función límite
Region = (y2 <= f(x2)); % Condición para estar dentro de la región
z2 = zeros(size(x2)); % Altura (en este caso, z es plano en 0)
x2(~Region) = NaN; % Puntos fuera de la región se descartan
y2(~Region) = NaN;
mesh(x2, y2, z2); % Gráfico de la región plana
hold on;
x_borde = x1; % Bordes de la región
y_borde = arrayfun(f, x_borde); % Límite superior según f(x)
plot3(x_borde, y_borde, zeros(size(x_borde)), 'Color', [0.2, 0.4, 0.6], 'LineWidth', 2);
plot3([0 0], [0 f(0)], [0 0], 'Color', [0.2, 0.4, 0.6], 'LineWidth', 2); 
plot3([2 2], [0 f(2)], [0 0], 'Color', [0.2, 0.4, 0.6], 'LineWidth', 2); 
plot3([0 2], [0 0], [0 0], 'Color', [0.2, 0.4, 0.6], 'LineWidth', 2);  
axis equal;
axis([-1, 3, -1, 4]); % Límite de los ejes
xlabel('Eje X');
ylabel('Eje Y');
title('Mallado de la Presa');
view(2); % Vista en 2D
grid on;
hold off;


2 Curvas de nivel de la temperatura

La siguiente grafica representa las curvas de nivel de la temperatura.

El gradiente de un campo vectorial es el siguiente:
[math]\nabla T(x,y) =\frac{d∂}{dx} +\frac{d∂}{dy}[/math]

en este caso sería:
[math]T(x, y) = \frac{y \cdot x^2}{2}[/math]
.

La temperatura máxima alcanzada es de 0.88 y se alcanza en los puntos (61,1) y (61,61)

2.1 Representación curvas de nivel de temperatura

%Definir la figura
h = 1/10; % Paso de muestreo
x1 = 0:h:2;
y1 = 0:h:3;
[x2, y2] = meshgrid(x1, y1); % Crea una malla 2D para las coordenadas x e y
f = @(x) min(3, (3/2) * (2 - x)); % Función límite
Region = (y2 <= f(x2)); % Condición para estar dentro de la región
z2 = zeros(size(x2)); % Altura (en este caso, z es plano en 0)
x2(~Region) = NaN; % Puntos fuera de la región se descartan
y2(~Region) = NaN;
%Campo temperatura
T = (y2 .* x2.^2) / 2; % Función de temperatura
T(~Region) = NaN; % Filtra puntos fuera de la región
%Definir curvas de nivel
contour3(x2, y2, T, 20, 'LineWidth', 2); % Gráfico de curvas de nivel en 3D
colorbar; % Muestra la barra de colores asociada a los valores de temperatura

2.2 Representación de temperatura y punto máximo

%Definir la figura
h = 1/10; % Paso de muestreo
x1 = 0:h:2;
y1 = 0:h:3;
[x2, y2] = meshgrid(x1, y1); % Crea una malla 2D para las coordenadas x e y
f = @(x) min(3, (3/2) * (2 - x)); % Función límite
Region = (y2 <= f(x2)); % Condición para estar dentro de la región
z2 = zeros(size(x2)); % Altura (en este caso, z es plano en 0)
x2(~Region) = NaN; % Puntos fuera de la región se descartan
y2(~Region) = NaN;
%Campo temperatura
Temp = (y2 .* x2.^2) / 2; % Función de temperatura
Temp(~Region) = NaN; % Filtra puntos fuera de la región
surf(x2, y2, Temp, 'EdgeColor', 'none'); % Superficie en 3D
hold on;
%Calcular los puntos máximos
[maxTemp, idx] = max(Temp(:)); % Encuentra el valor máximo y su índice
[x_max, y_max] = ind2sub(size(Temp), idx); % Convierte índice lineal a coordenadas
x_coord = x2(x_max, y_max); % Coordenada X del máximo
y_coord = y2(x_max, y_max); % Coordenada Y del máximo
plot3(x_coord, y_coord, maxTemp, 'ro', 'MarkerSize', 8, 'LineWidth', 2); % Punto rojo para el máximo
text(x_coord, y_coord, maxTemp, sprintf('  Maximo: %.2f', maxTemp), 'Color', 'r', 'FontSize', 10); % Texto del valor máximo

2.3 Gradiente de T

%Definir la figura
h = 1/10; % Paso de muestreo
x1 = 0:h:2;
y1 = 0:h:3;
[x2, y2] = meshgrid(x1, y1); % Crea una malla 2D para las coordenadas x e y
f = @(x) min(3, (3/2) * (2 - x)); % Función límite
Region = (y2 <= f(x2)); % Condición para estar dentro de la región
z2 = zeros(size(x2)); % Altura (en este caso, z es plano en 0)
x2(~Region) = NaN; % Puntos fuera de la región se descartan
y2(~Region) = NaN;
%Campo temperatura
T = (y2 .* x2.^2) / 2; % Función de temperatura
T(~Region) = NaN; % Filtra puntos fuera de la región
%Campo de Gradiente
[Tx, Ty] = gradient(T, h); % Calcula el gradiente de T(x, y)
Tx(~Region) = NaN; % Filtra los componentes del gradiente fuera de la región
Ty(~Region) = NaN;
%Dibujar el campo de Curvas de nivel y dibujar curvas de nivel
z_surface = T; % Superficie para representar las curvas de nivel
contour3(x2, y2, z_surface, 20, 'LineWidth', 2); % Curvas de nivel en 3D
hold on;
scale = 2; 
%gradiente
quiver3(x2, y2, z_surface, scale*Tx, scale*Ty, zeros(size(Tx)), 'r', 'LineWidth', 1.5); % Vectores del gradiente
axis equal;
axis([0, 2, 0, 3, 0, 1]); % Límites de los ejes
xlabel('Eje X');
ylabel('Eje Y');
zlabel('Temperatura T(x, y)');
title('Curvas de Nivel y Gradiente de la Temperatura');
colorbar; % Barra de colores para la escala de temperatura
grid on;
hold off;


3 Cálculo de energía calorífica con la Ley de Fourier

De acuerdo a la Ley de Fourier la energía calorífica [math] \vec{Q} [/math] viaja de acuerdo a la fórmula [math] \vec{Q}=−κ∇T [/math], donde [math] κ [/math] es la constante de conductividad térmica de la placa que supondremos [math] κ=1 [/math]. Para poder calcular la energía calorífica, primero debemos de calcular el gradiente de la temperatura, que viene dada por:
[math]T(x, y) = \frac{y \cdot x^2}{2}[/math]
. El gradiente un campo escalar se obtiene derivando parcialmente respecto de cada coordenada, por lo que el gradiente del campo es:
[math] ∇T(x,y)= xy \vec{i} + \frac{x^2}{y} \vec{j}[/math]
, y por lo tanto, la energía calorífica [math] \vec{Q} [/math] es:
[math] \vec{Q}= -xy \vec{i} - \frac{x^2}{y} \vec{j}[/math]

Una vez calculado, se procede a dibujarlo utilizando Matlab:

clear all %Definir la figura h = 1/10; % Paso de muestreo x1 = 0:h:2; y1 = 0:h:3; [x2, y2] = meshgrid(x1, y1); % Crea una malla 2D para las coordenadas x e y f = @(x) min(3, (3/2) * (2 - x)); % Función límite Region = (y2 <= f(x2)); % Condición para estar dentro de la región z2 = zeros(size(x2)); % Altura (en este caso, z es plano en 0) x2(~Region) = NaN; % Puntos fuera de la región se descartan y2(~Region) = NaN; %Campo temperatura T = (y2 .* x2.^2) / 2; % Función de temperatura T(~Region) = NaN; % Filtra puntos fuera de la región %Campo de Gradiente [Tx, Ty] = gradient(T, h); % Calcula el gradiente de T(x, y) Tx(~Region) = NaN; % Filtra los componentes del gradiente fuera de la región Ty(~Region) = NaN; %Campo de energía [Tx, Ty] = gradient(T, h); % Gradiente de T(x, y) Qx = -Tx; % Componente x del flujo de energía calorífica Qy = -Ty; % Componente y del flujo de energía calorífica Qx(~Region) = NaN; % Filtra los valores fuera de la región Qy(~Region) = NaN; %Dibuja curva de nivel z_surface = T; % Superficie para representar las curvas de nivel contour3(x2, y2, z_surface, 20, 'LineWidth', 2); % Curvas de nivel en 3D hold on %Vector de flujo de energía scale = 1.5; quiver3(x2, y2, z_surface, scale*Qx, scale*Qy, zeros(size(Qx)), 'r', 'LineWidth', 1.5); %Dibujar la grfica de calor axis equal; axis([0, 2, 0, 3, 0, 1]); % Límites de los ejes xlabel('Eje X'); ylabel('Eje Y'); zlabel('Temperatura T(x, y)'); title('Curvas de Nivel y Flujo de Energía Calorífica en 3D'); colorbar; % Muestra una barra de colores asociada a la temperatura grid on; hold off;}}

4 Campo de vectores en el sólido

5 Representación gráfica del desplazamiento del sólido

6 Divergencia [math]∇·\vec{u}[/math]

7 Rotacional [math]\left | ∇ \times \vec{u} \right |[/math]

8 Tensor de tensiones

9 Tensiones tangenciales al plano ortogonal a [math]\vec{i}[/math]

10 Tensión de Von Mises

11 Campo de fuerzas que actúa sobre la placa

12 Módulo del desplazamiento transversal