Presa triangular. Grupo 12.
| 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 |
|
| 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
• La temperatura viene dada por la función:
• Los desplazamientos se corresponden con el campo:
• Tomar como densidad:
Contenido
- 1 Dibujo del mallado que representa los puntos interiores del sólido.
- 2 Curvas de nivel de la temperatura
- 3 Cálculo de energía calorífica con la Ley de Fourier
- 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
1 Dibujo del mallado que representa los puntos interiores del sólido.
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
2.1 Representación curvas de nivel de temperatura
La siguiente grafica representa las curvas de nivel de la temperatura.
en este caso sería:
La temperatura máxima alcanzada es de 0.88 y se alcanza en los puntos (61,1) y (61,61)
%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==
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:Una vez calculado, se procede a dibujarlo utilizando Matlab:
%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