Diferencia entre revisiones de «Placa Plana (Grupo 20)»

De MateWiki
Saltar a: navegación, buscar
(Curvas de nivel)
(Ley de Fourier)
Línea 151: Línea 151:
  
 
==Ley de Fourier==
 
==Ley de Fourier==
 +
[[Archivo:Flujo de calor manuel.png|marco]]
 +
{{matlab|codigo=
 +
% 1. Configuración del Mallado
 +
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio
 +
h = 0.2;
 +
x = 0 : h : 4;
 +
y = 0 : h : 2;
 +
[X, Y] = meshgrid(x, y);
 +
 +
% 2. Definir la Geometría (La placa trapezoidal)
 +
y_abajo = X ./ 8;
 +
y_arriba = 2 - (X ./ 8);
 +
 +
% Máscara lógica: determina qué puntos están DENTRO de la placa
 +
dentro = (Y >= y_abajo) & (Y <= y_arriba);
 +
 +
% 3. Definir la Temperatura T(x,y)
 +
% Fórmula dada: T(x,y) = (1 + (y-1)^2)(4-x)
 +
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);
 +
T = T_func(X, Y);
 +
 +
% 4. Cálculos Físicos (Ley de Fourier)
 +
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas
 +
[dTdx, dTdy] = gradient(T, h, h);
 +
 +
% B) Calculamos el Flujo de Calor Q
 +
% Q = -k * nabla T. (Suponiendo k=1) -> Q apunta al frío
 +
Qx = -dTdx;
 +
Qy = -dTdy;
 +
 +
% 5. Limpieza de datos (Recortar la figura)
 +
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.
 +
% Esto hace que MATLAB no dibuje nada en esas zonas.
 +
Qx(~dentro) = NaN;
 +
Qy(~dentro) = NaN;
 +
T(~dentro) = NaN;
 +
 +
% 6. Visualización
 +
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');
 +
hold on;
 +
 +
% A) FONDO: Mapa de Calor (contourf)
 +
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.
 +
contourf(X, Y, T, 20, 'LineStyle', 'none');
 +
colormap('jet'); % Paleta de colores: Azul (frío) -> Rojo (caliente)
 +
 +
% Barra de color explicativa
 +
c = colorbar;
 +
c.Label.String = 'Temperatura T(x,y)';
 +
c.Label.FontSize = 10;
 +
 +
% B) PROTAGONISTA: El Campo Vectorial Q (Flechas)
 +
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.
 +
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);
 +
 +
% C) DIBUJO DEL CONTORNO (Bordes Negros)
 +
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior
 +
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior
 +
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo
 +
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho
 +
 +
% 7. Configuración Final
 +
axis equal; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)
 +
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización
 +
grid on;
 +
xlabel('Eje x'); ylabel('Eje y');
 +
title({'Vector Flujo de Calor', ...
 +
'El calor fluye desde las capas más calientes hacia las más frías'});
 +
 +
hold off;
 +
}}
 +
 
==Gradiente Térmico==
 
==Gradiente Térmico==
 
==Campo de desplazamientos==
 
==Campo de desplazamientos==

Revisión del 14:16 25 nov 2025

Trabajo realizado por estudiantes
Título Placa Plana. Grupo 20
Asignatura Teoría de Campos
Curso 2025-26
Autores Alejandro Trejo, Marcos Rodríguez-Barbero, Gloria García , Manuel Riesgo, Ángel De Miguel Pérez
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura

1 Introducción

Una viga voladiza rectangular (en dimensión 2), ocupa la región (x,y)∈[0,4] X [ f(g) , g(x) ] Se considerará fija en la pared vertical izquierda.

Con 𝑓(x)=x÷8 y 𝑔(𝑥)=2−x÷8

Está definidas dos variables: La temperatura, el desplazamiento y la posición después de esa deformación o desplazamiento.

La temperatura viene dada por la función T(x,y)=(1+(y−1)2(4−x)

La posición después del desplazamiento es rd(x,y)=r0(x,y)+u(x,y)
Siendo el desplazamiento: u(ρ,θ)=-ρ2cosθeθ

Usando Matlab u Octave se obtendrán los resultados de los siguientes apartados:

2 Mallado de placa

Tomamos como ejes \((x,y) ∈ [−1,5] × [-1,3]\) y un paso de muestreo, es decir, el intervalo entre punto y punto, [math]h=\frac{1}{10}[/math] para las variables [math]x[/math] e [math]y[/math].

Malladoplacaplana.png
% 1. Configuración
h = 1/10;
color_malla = [0, 0.6, 0.6]; % Color Cían Oscuro

% 2. Generar Coordenadas Paramétricas
% u: avanza a lo largo de la placa (0 a 4)
% v: avanza de abajo a arriba (0 a 2)
u = 0 : h : 4;
v = 0 : h : 2;
[U, V] = meshgrid(u, v);

% 3. Transformación Matemática
% Calculamos los bordes superior e inferior para cada punto X
y_abajo = U ./ 8;
y_arriba = 2 - (U ./ 8);

% Interpolamos: calculamos la Y real basada en la altura V
factor_altura = V ./ 2; % Va de 0 (abajo) a 1 (arriba)

X = U;
Y = y_abajo + factor_altura .* (y_arriba - y_abajo);

% 4. Visualización
figure('Color', 'w'); hold on;

% A) Dibujar las líneas VERTICALES
% Al pasar la matriz directa X e Y, MATLAB dibuja una línea por cada columna.
plot(X, Y, 'Color', color_malla, 'LineWidth', 0.5);

% B) Dibujar las líneas HORIZONTALES
% Al pasar la traspuesta (X' e Y'), dibuja una línea por cada fila.
plot(X', Y', 'Color', color_malla, 'LineWidth', 0.5);

% C) Dibujar el CONTORNO (Bordes Negros)
% Dibujamos las 4 líneas del borde explícitamente para que se vean bien gruesas
plot(u, u./8, 'k-', 'LineWidth', 2); % Borde Abajo
plot(u, 2 - u./8, 'k-', 'LineWidth', 2); % Borde Arriba
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde Izquierdo
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde Derecho

% 5. Configuración final
axis([-1 5 -1 3]); % Zoom/Encuadre exacto
xlabel('x'); ylabel('y');
title('Mallado de la placa plana');
grid on;
box on;
hold off;


3 Curvas de nivel

Curvasdemanuel.png
% 1. Definición del Dominio y Mallado
h = 0.2; % Paso de muestreo
x = 0 : h : 4;
y = 0 : h : 2;
[X, Y] = meshgrid(x, y);

% 2. Definir la Geometría (Tu placa plana trapezoidal)
y_abajo = X ./ 8;
y_arriba = 2 - (X ./ 8);

% Creamos la máscara lógica (1 dentro, 0 fuera)
dentro = (Y >= y_abajo) & (Y <= y_arriba);

% 3. Definir la TEMPERATURA T(x,y)
% FÓRMULA ACTUALIZADA: T(x,y) = (1 + (y-1)^2)(4-x)
% Usamos .^ y .* para operaciones elemento a elemento
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);

% Calculamos la temperatura en toda la malla
T = T_func(X, Y);

% 4. Aplicar la Máscara (Recortar la figura)
% Asignamos NaN a los puntos de fuera para que no se pinten
T(~dentro) = NaN;
% (Opcional) Recortar X e Y también ayuda a limpiar bordes en contour
X_plot = X; Y_plot = Y;
X_plot(~dentro) = NaN;
Y_plot(~dentro) = NaN;

% 5. Cálculo del Gradiente (Nabla T)
% gradient calcula las derivadas parciales numéricas
[dTdx, dTdy] = gradient(T, h, h);

% 6. Visualización
figure('Color', 'w', 'Position', [100 100 800 600]);
hold on;

% A) Pintar Curvas de Nivel (Isotermas)
% Usamos contour para ver las líneas de temperatura constante
[C, h_cont] = contour(X, Y, T, 20, 'LineWidth', 2);
clabel(C, h_cont, 'FontSize', 9, 'Color', 'k', 'FontWeight', 'bold');
colormap('jet');

% B) Pintar Campo Vectorial (Gradiente)
% quiver dibuja las flechas sobre la superficie
quiver(X, Y, dTdx, dTdy, 'k', 'LineWidth', 1.2);

% C) Dibujar el contorno de la placa
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Abajo
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Arriba
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Izquierda
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Derecha

% 7. Configuración Final
axis equal; % CRUCIAL para ver la ortogonalidad
axis([-0.5 4.5 -0.5 2.5]);
grid on;
xlabel('x'); ylabel('y');
title({'Isotermas y Gradiente \nablaT', ...
'T(x,y) = (1 + (y-1)^2)(4-x)'});
colorbar;

% --- CÁLCULO DEL MÁXIMO ---
% Busamos el valor máximo ignorando los NaNs
[max_temp, indice] = max(T(sonrisa));
[fil, col] = ind2sub(size(T), indice);
x_max = X(fil, col);
y_max = Y(fil, col);

fprintf('La temperatura máxima es %.2f en el punto (x=%.2f, y=%.2f)\n', ...
max_temp, x_max, y_max);
% Marcamos el punto máximo con una estrella roja
plot(x_max, y_max, 'p', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k', 'MarkerSize', 15);
hold off;


4 Ley de Fourier

Flujo de calor manuel.png
% 1. Configuración del Mallado
% Usamos h=0.2 para que las flechas no salgan amontonadas y se vea limpio
h = 0.2;
x = 0 : h : 4;
y = 0 : h : 2;
[X, Y] = meshgrid(x, y);

% 2. Definir la Geometría (La placa trapezoidal)
y_abajo = X ./ 8;
y_arriba = 2 - (X ./ 8);

% Máscara lógica: determina qué puntos están DENTRO de la placa
dentro = (Y >= y_abajo) & (Y <= y_arriba);

% 3. Definir la Temperatura T(x,y)
% Fórmula dada: T(x,y) = (1 + (y-1)^2)(4-x)
T_func = @(x,y) (1 + (y - 1).^2) .* (4 - x);
T = T_func(X, Y);

% 4. Cálculos Físicos (Ley de Fourier)
% A) Calculamos el Gradiente (nabla T) mediante derivadas numéricas
[dTdx, dTdy] = gradient(T, h, h);

% B) Calculamos el Flujo de Calor Q
% Q = -k * nabla T. (Suponiendo k=1) -> Q apunta al frío
Qx = -dTdx;
Qy = -dTdy;

% 5. Limpieza de datos (Recortar la figura)
% Asignamos NaN (Not a Number) a todo lo que esté fuera de la placa.
% Esto hace que MATLAB no dibuje nada en esas zonas.
Qx(~dentro) = NaN;
Qy(~dentro) = NaN;
T(~dentro) = NaN;

% 6. Visualización
figure('Color', 'w', 'Name', 'Flujo de Calor Fourier');
hold on;

% A) FONDO: Mapa de Calor (contourf)
% 'LineStyle','none' quita las rayitas negras entre colores para que sea suave.
contourf(X, Y, T, 20, 'LineStyle', 'none');
colormap('jet'); % Paleta de colores: Azul (frío) -> Rojo (caliente)

% Barra de color explicativa
c = colorbar;
c.Label.String = 'Temperatura T(x,y)';
c.Label.FontSize = 10;

% B) PROTAGONISTA: El Campo Vectorial Q (Flechas)
% Las pintamos de negro ('k') para que resalten sobre el fondo de color.
quiver(X, Y, Qx, Qy, 'k', 'LineWidth', 1.2, 'AutoScaleFactor', 1.5);

% C) DIBUJO DEL CONTORNO (Bordes Negros)
plot([0 4], [0 0.5], 'k-', 'LineWidth', 2); % Borde inferior
plot([0 4], [2 1.5], 'k-', 'LineWidth', 2); % Borde superior
plot([0 0], [0 2], 'k-', 'LineWidth', 2); % Borde izquierdo
plot([4 4], [0.5 1.5], 'k-', 'LineWidth', 2); % Borde derecho

% 7. Configuración Final
axis equal; % OBLIGATORIO: Para que los ángulos sean reales (ortogonalidad)
axis([-0.5 4.5 -0.5 2.5]); % Márgenes de visualización
grid on;
xlabel('Eje x'); ylabel('Eje y');
title({'Vector Flujo de Calor', ...
'El calor fluye desde las capas más calientes hacia las más frías'});

hold off;


5 Gradiente Térmico

6 Campo de desplazamientos

7 Desplazamiento del sólido

8 Divergencia

9 Rotacional

10 Tensor deformaciones

11 Tensiones tangenciales

12 Tensión de Von Mises

13 Campo de Fuerzas

14 Densidad

15 Ejemplos de uso