Mallado 2D de Arco I (Grupo 63)
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Mallado 2D de Arco I. Grupo 63 |
| Asignatura | Teoría de Campos |
| Curso | 2025-26 |
| Autores | Nombres María Cocina Sanjuanbenito, Fernando Trocoli de Toro, Rodrigo Sánchez de León Acevedo, Marta Reiter Hernández |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
- 1 Introducción
- 2 Mallado de la placa
- 3 Curvas de nivel de la temperatura (isotermas)
- 4 Campo de vectores en el mallado
- 5 Arco antes y después del desplazamiento
- 6 Divergencia del campo de vectores
- 7 Rotacional del campo de vectores |∇ × ⃗𝑢|
- 8 Tensor de deformaciones
- 9 Tensiones tangenciales respecto al plano ortogonal 𝑖
- 10 Tensiones tangenciales respecto al plano ortogonal 𝑗
- 11 Masa de la placa
- 12 Interpretación con ejemplo práctico
1 Introducción
Se considera una placa plana bidimensional en forma de sección longitudinal de un arco, comprendido entre los radios 1 y 2. En ella vamos a tener definidas dos cantidades físicas: la temperatura 𝑇(𝑥,𝑦) en coordenadas cartesianas, y el campo de desplazamientos 𝑢(𝜌, 𝜃) en coordenadas cilíndricas.
Definimos la función temperatura como: 𝑇(𝑥,𝑦) = (𝑥 − 𝑦)^2.
Y el campo de desplazamientos como: 𝑢(𝜌, 𝜃) = 1/5 (𝜌 − 1)𝜌^2 sin𝜃⃗𝑒𝜃
2 Mallado de la placa
Para definir el mallado de la mitad de un anillo circular usaremos dos condiciones: que esté comprendido entre los radios R1=1 y R2=2, y el plano y ≥ |x|. Al estudiar la mitad de un anillo, trabajaremos en coordenadas cilíndricas.
Su representación quedará definida en la región (ρ,θ) ∈ [1,2] × [[math] \frac{\pi}{2},\frac{3π}{2}[/math]].
Para el muestreo, que son las subdivisiones deseadas por unidad en función de ambos ejes, usaremos \(h = 1/10\).
%% CÓDIGO TRABAJO M (Estilo Visual Idéntico a la Foto)
clc; clear;
figure(1); clf; % Importante: Limpia la ventana de figuras antes de dibujar
% 1. Definición de variables (Estructura de tu profesor)
h = 0.1; % Paso de muestreo (Letra M/K)
r = 1:h:2; % Radio de 1 a 2
tt = pi/2:h:(3*pi)/2; % Angulo de 0 a pi (Semicírculo completo)
% 2. Generación del Mallado
[RR, TT] = meshgrid(r, tt);
x = RR .* cos(TT);
y = RR .* sin(TT);
% 3. Representación Gráfica (Con estilo forzado)
% 'EdgeColor': fuerza el color cian ([0 0.6 0.6]) similar a tu foto
% 'FaceColor', 'none': asegura que no rellene los huecos
mesh(x, y, 0*x, 'EdgeColor', [0 0.7 0.7], 'FaceColor', 'none');
view(2); % Vista superior 2D
axis equal; % Para que el semicírculo no parezca un óvalo
axis([-2.5 2.5 -0.5 2.5]); % Límites ajustados para centrarlo
grid on;
% Etiquetas
xlabel('Eje X');
ylabel('Eje Y');
title('Representación en 2D de la placa plana (Arco I)');
% 4. DIBUJAR EL BORDE NEGRO (Contorno)
hold on;
% Borde curvo exterior (Radio 2)
plot(2*cos(tt), 2*sin(tt), 'k', 'LineWidth', 2);
% Borde curvo interior (Radio 1)
plot(1*cos(tt), 1*sin(tt), 'k', 'LineWidth', 2);
% Cierre recto derecho (theta = 0)
plot([1 2], [0 0], 'k', 'LineWidth', 2);
% Cierre recto izquierdo (theta = pi) - Nota: cos(pi)=-1, sin(pi)=0
plot([-2 -1], [0 0], 'k', 'LineWidth', 2);
hold off;
3 Curvas de nivel de la temperatura (isotermas)
La temperatura del sólido proviene de un foco de calor muy concentrado en los puntos que están a distancia 1 del origen.
La distribución de la temperatura en el sólido para dibujar sus curvas de nivel, viene dado por la función:
%% Gradiente de la temperatura (Adaptado al Trabajo M)
% Paso de muestreo
h = 0.1;
% Radio (de 1 a 2)
r = 1:h:2;
% Angulo (Semicírculo: de 0 a pi)
% Nota: En el antiguo usaban linspace, aquí usamos paso h para mantener proporción
t = 0:h:pi;
% Mallado y parametrización
[rr,tt] = meshgrid(r,t);
xx = rr.*cos(tt);
yy = rr.*sin(tt);
% Temperatura T(x,y) = (x-y)^2
Temperatura = (xx - yy).^2;
% Calculo del Gradiente (Derivadas parciales)
% dT/dx = 2*(x-y)
GradX = 2 .* (xx - yy);
% dT/dy = -2*(x-y)
GradY = -2 .* (xx - yy);
% --- DIBUJO DE LAS GRÁFICAS ---
figure(2); clf; % Limpiamos figura anterior
hold on
% GRÁFICA 3D (Derecha) - Superficie + Vectores
subplot(1,2,2)
% Dibujamos la superficie de temperatura
surf(xx,yy,Temperatura)
hold on
% Dibujamos los vectores del gradiente en 3D
% quiver3(x, y, z, u, v, w) -> w es 0 porque el vector 'vive' en el plano xy
quiver3(xx, yy, Temperatura, GradX, GradY, zeros(size(xx)), 'k');
% Ajustes visuales 3D
axis([-2.5, 2.5, 0, 3, 0, 10]); % Ajustamos Z hasta 10 porque T crece bastante
axis vis3d
view(3)
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Eje Z')
title('Gradiente 3D')
colorbar;
% GRÁFICA 2D (Izquierda) - Malla plana + Vectores
subplot(1,2,1)
% Dibujamos la malla plana (Estilo del año pasado con borde)
mesh(xx,yy,0.*xx, 'EdgeColor', [0 0.7 0.7], 'FaceColor', 'none')
view(2)
% Ajustes visuales 2D
axis equal
axis([-3, 3, -1, 3])
xlabel('Eje X')
ylabel('Eje Y')
title('Gradiente 2D')
% Dibujamos los vectores del gradiente en plano
hold on
quiver(xx, yy, GradX, GradY, 'b') % 'b' para color azul
hold off
% Añadimos el contorno negro al 2D para que quede perfecto
hold on
plot(2*cos(t), 2*sin(t), 'k', 'LineWidth', 2);
plot(1*cos(t), 1*sin(t), 'k', 'LineWidth', 2);
plot([1 2], [0 0], 'k', 'LineWidth', 2);
plot([-2 -1], [0 0], 'k', 'LineWidth', 2);
hold off
A partir del campo escalar, podemos calcular el gradiente de la temperatura [math]\nabla T[/math]. Que indica la dirección en la que aumenta nuestra temperatura. |[math]\nabla T[/math]| nos especificará cuanto aumenta.
Para calcular nuestro gradiente en cilíndricas, usaremos la fórmula:
Por lo tanto, el gradiente será:
4 Campo de vectores en el mallado
El campo de vectores [math]\vec u [/math] indica el desplazamiento de los puntos del sólido. En este caso usaremos:5 Arco antes y después del desplazamiento
%% Desplazamiento de la placa (Adaptado al estilo antiguo)
clc; clear; close all;
% 1. Definición del Mallado h = 0.1; % Paso de muestreo rr = 1:h:2; % Radio de 1 a 2 tt = 0:h:pi; % Semicírculo (0 a pi) [RR,TT] = meshgrid(rr,tt); x = RR.*cos(TT); y = RR.*sin(TT);
% --- FIGURA 1: Placa Original y Placa Desplazada (Separadas) --- figure(1);
% SUBPLOT 1: Sólido antes de los desplazamientos (Original) subplot(1,2,1) i = mesh(x,y,0*x); % Malla plana en Z=0 view(2) % Vista superior set(i,'EdgeColor','g'); % Color VERDE ('g') como en el ejemplo antiguo axis([-3,3,-1,3]) % Ejes ajustados xlabel('Eje X') ylabel('Eje Y') title('Placa no desplazada','Fontsize',14); axis equal; grid on;
% Cálculo del Desplazamiento (Trabajo M) % u_theta = 1/5 * (rho-1) * rho^2 * sin(theta) u_theta = (1/5) .* (RR - 1) .* (RR.^2) .* sin(TT);
% Transformación a Cartesianas (A y B en el código antiguo) % A = ux, B = uy A = -u_theta .* sin(TT); % ux = -u_theta * sin(theta) B = u_theta .* cos(TT); % uy = u_theta * cos(theta)
% Coordenadas Deformadas X = x + A; Y = y + B;
% SUBPLOT 2: Sólido después de los desplazamientos (Deformada) subplot(1,2,2) j = mesh(X,Y,0*X); view(2) set(j,'EdgeColor','r'); % Color ROJO ('r') axis([-3,3,-1,3]) xlabel('Eje X') ylabel('Eje Y') title('Placa desplazada','Fontsize',14); axis equal; grid on;
% --- FIGURA 2: Comparación (Superposición) ---
figure(2);
hold on
% 1. Dibujamos la Desplazada (Roja) j = mesh(X,Y,0*X); set(j,'EdgeColor','r');
% 2. Dibujamos la Original (Verde) encima/debajo i = mesh(x,y,0*x); set(i,'EdgeColor','g');
% Ajustes finales axis([-3,3,-1,3]) view(2) xlabel('Eje X') ylabel('Eje Y') title('Desplazamiento de la placa (Comparación)','Fontsize',14); axis equal; grid on; hold off }}
6 Divergencia del campo de vectores
6.1 ¿Qué es la divergencia?
6.2 ¿Qué puntos tienen mayor divergencia? ¿Por qué?
%% Divergencia (Adaptado al Trabajo M) clc; clear; figure(4); clf;
% Paso de muestreo h = 0.1;
% Coordenadas polares (Radio 1 a 2, Semicírculo 0 a pi) rr = 1:h:2; tt = 0:h:pi;
% Mallado y parametrización [RR,TT] = meshgrid(rr,tt); x = RR.*cos(TT); y = RR.*sin(TT);
% --- FUNCIÓN DE DIVERGENCIA (Trabajo M) --- % Formula: div = 1/5 * (rho^2 - rho) * cos(theta) div = (1/5) .* (RR.^2 - RR) .* cos(TT);
% --- GRÁFICA EN 3D (Derecha) --- subplot(1,2,2) surf(x,y,div) % Superficie con altura = divergencia axis([-3,3,-1,3]); % Límites colorbar; % Barra de colores axis vis3d view(3) % Vista 3D title('Divergencia 3D') xlabel('Eje X') ylabel('Eje Y') zlabel('Div')
% --- GRÁFICA EN 2D (Izquierda) --- subplot(1,2,1) surf(x,y,div) % Superficie vista desde arriba axis([-3,3,-1,3]); colorbar; view(2) % Vista superior obligatoria title('Divergencia 2D') xlabel('Eje X') ylabel('Eje Y')
% Cálculo y muestra del Máximo (Como en el código antiguo) maximo = max(max(div)); minimo = min(min(div)); % Calculamos también el mínimo porque hay valores negativos
fprintf('El valor máximo de la divergencia es: %1.4f \n', maximo); fprintf('El valor mínimo de la divergencia es: %1.4f \n', minimo);