Diferencia entre revisiones de «Mallado Arco 1 (grupo 59)»
(→En el Trabajo K se modela una onda transversal en una placa rectangular mediante el campo de desplazamientos:) |
|||
| Línea 282: | Línea 282: | ||
% --- 1. GEOMETRÍA --- | % --- 1. GEOMETRÍA --- | ||
| − | rho_vec = 1:0.01:2; | + | rho_vec = 1:0.01:2; |
| − | theta_vec = | + | theta_vec = 0:0.01:pi; |
[R, Th] = meshgrid(rho_vec, theta_vec); | [R, Th] = meshgrid(rho_vec, theta_vec); | ||
| Línea 289: | Línea 289: | ||
Y = R .* sin(Th); | Y = R .* sin(Th); | ||
| − | % --- 2. CÁLCULO DE LA TENSIÓN | + | % --- 2. CÁLCULO DE LA TENSIÓN --- |
| − | + | ||
Tau = (1/5) * (2*R.^2 - R) .* sin(Th); | Tau = (1/5) * (2*R.^2 - R) .* sin(Th); | ||
| − | + | Tau_Mag = abs(Tau); | |
| − | + | ||
| − | Tau_Mag = abs(Tau); | + | |
% --- 3. VISUALIZACIÓN --- | % --- 3. VISUALIZACIÓN --- | ||
figure(9); clf; hold on; axis equal; | figure(9); clf; hold on; axis equal; | ||
set(gcf, 'Color', 'w'); | set(gcf, 'Color', 'w'); | ||
| − | title('Tensión | + | title('Tensión tangencial'); |
xlabel('x'); ylabel('y'); | xlabel('x'); ylabel('y'); | ||
| + | |||
| + | contourf(X, Y, Tau_Mag, 50, 'LineStyle', 'none'); | ||
| + | c = colorbar; | ||
| + | ylabel(c,'Esfuerzo de Corte (Pa)'); | ||
| + | |||
| + | % --- 4. Colormap amplio AZUL → ROJO (256 tonos) --- | ||
| + | n = 256; | ||
| + | azul = [0 0 1]; % azul puro | ||
| + | rojo = [1 0 0]; % rojo puro | ||
| + | cmap = [linspace(azul(1), rojo(1), n)', ... | ||
| + | linspace(azul(2), rojo(2), n)', ... | ||
| + | linspace(azul(3), rojo(3), n)']; | ||
| + | colormap(cmap); | ||
| + | |||
| + | % --- 5. Bordes exteriores en negro --- | ||
| + | t_border = 0:0.001:pi; | ||
| + | plot(2*cos(t_border),2*sin(t_border),'k','LineWidth',2); | ||
| + | plot(1*cos(t_border),1*sin(t_border),'k','LineWidth',2); | ||
| + | plot([-2,-1],[0,0],'k','LineWidth',2); | ||
| + | plot([1,2],[0,0],'k','LineWidth',2); | ||
| + | |||
| + | % --- 6. Punto de máxima tensión --- | ||
| + | max_val = max(Tau_Mag(:)); | ||
| + | [fr, fc] = find(Tau_Mag == max_val, 1); | ||
| + | plot(X(fr,fc),Y(fr,fc),'wx','LineWidth',2,'MarkerSize',10); | ||
| + | text(X(fr,fc),Y(fr,fc)+0.1,'Máx','Color','w','FontWeight','bold'); | ||
| + | |||
| + | axis([-2.2 2.2 0 2.2]); | ||
| + | grid off; | ||
| + | hold off; | ||
}} | }} | ||
Revisión del 12:45 1 dic 2025
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Arco1. Grupo 59 |
| Asignatura | Teoría de Campos |
| Curso | 2025-26 |
| Autores |
|
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
1 Mallado del arco
% Mallado del arco alineado
% Elegimos divisiones que garanticen que:
% θ = 0, pi/2, pi están incluidos
% r incluye exactamente 1 y 2
theta = linspace(0, pi, 20); % mallado moderado, incluye 0, pi/2 y pi
r = linspace(1, 2, 15); % radios exactos 1 y 2
[R, TH] = meshgrid(r, theta);
% Convertir a coordenadas cartesianas
X = R .* cos(TH);
Y = R .* sin(TH);
figure;
hold on;
col = [0.3 0.6 1]; % azul clarito
% Mallado tipo red (más grueso)
plot(X, Y, 'Color', col, 'LineWidth', 1.1); % líneas en theta
plot(X', Y', 'Color', col, 'LineWidth', 1.1); % líneas en r
% Contornos superior interior y exterior
theta_cont = linspace(0, pi, 400);
plot(1*cos(theta_cont), 1*sin(theta_cont), 'Color', col, 'LineWidth', 2);
plot(2*cos(theta_cont), 2*sin(theta_cont), 'Color', col, 'LineWidth', 2);
% Bases
plot([-1 -2], [0 0], 'Color', col, 'LineWidth', 2); % base izquierda
plot([ 1 2], [0 0], 'Color', col, 'LineWidth', 2); % base derecha
% Ajustes
axis equal
grid on
title('Mallado del arco')
xlabel('x')
ylabel('y')
hold off;
2 Temperatura en el arco
% Mallado del arco
theta = linspace(0, pi, 200); % más denso para curva suave
r = linspace(1, 2, 200); % radio interior 1, exterior 2
[R, TH] = meshgrid(r, theta);
% Convertir a cartesianas
X = R .* cos(TH);
Y = R .* sin(TH);
% Funcion temperatura
T = (X - Y).^2;
% Representación 2D
figure;
pcolor(X, Y, T); % representación 2D en colores
shading interp % suavizado del color
colormap(jet)
colorbar;
title('Temperatura T(x,y) = (x - y)^2 sobre el arco')
xlabel('x')
ylabel('y')
axis equal % mantiene proporciones reales
== desplazamiento ==
%% TRABAJO M (ARCO)
clc; clear; close all;
%% Pregunta 3
% Dominio
rho_min = 1; rho_max = 2;
th_min = 0; th_max = pi;
[Rho, Theta] = meshgrid(linspace(rho_min, rho_max, 100), ...
linspace(th_min, th_max, 200));
% Convertimos a Cartesianas
X = Rho .* cos(Theta);
Y = Rho .* sin(Theta);
%% 2. Definición de Temperatura y Gradiente
% Temperatura T = (x - y)^2
T_val = (X - Y).^2;
% Cálculo del gradiente
Grad_X = 2 .* (X - Y);
Grad_Y = -2 .* (X - Y);
% Representación gráfica
figure('Name', 'Trabajo M - Pregunta 3 (Estilo Suave)', 'Color', 'w');
hold on;
contourf(X, Y, T_val, 50, 'LineStyle', 'none');
% Creamos la gráfica
N = 256;
r = linspace(0.2, 1, N)';
g = linspace(0.5, 1, N)';
b = linspace(1, 0, N)';
mi_mapa = [r, g, b]; % Matriz de colores
colormap(mi_mapa);
c = colorbar;
c.Label.String = 'Temperatura T = (x-y)^2';
% Cantida de flechas
step_r = 8; % Salta cada 8 puntos en el radio
step_t = 12; % Salta cada 12 puntos en el ángulo
idx_r = 1:step_r:size(X,1);
idx_t = 1:step_t:size(X,2);
% Dibujo flechas
quiver(X(idx_r, idx_t), Y(idx_r, idx_t), ...
Grad_X(idx_r, idx_t), Grad_Y(idx_r, idx_t), ...
'k', ... % Color negro flechas
'LineWidth', 1.0, ... % Grosor flechas
'AutoScaleFactor', 0.8); % Tamaño flechas
axis equal;
xlim([-2.5 2.5]); ylim([0 2.5]); % Márgenes
title('Gradiente sobre T');
xlabel('x'); ylabel('y');
box on;
hold off;3 Gradiente de temperatura
%% GRADIANTE TEMPERATURA
clc; clear; close all;
% Dominio
rho_min = 1; rho_max = 2;
th_min = 0; th_max = pi;
[Rho, Theta] = meshgrid(linspace(rho_min, rho_max, 100), ...
linspace(th_min, th_max, 200));
% Convertimos a Cartesianas
X = Rho .* cos(Theta);
Y = Rho .* sin(Theta);
%% 2. Definición de Temperatura y Gradiente
% Temperatura T = (x - y)^2
T_val = (X - Y).^2;
% Cálculo del gradiente
Grad_X = 2 .* (X - Y);
Grad_Y = -2 .* (X - Y);
% Representación gráfica
figure('Name', 'Trabajo M - Pregunta 3 (Estilo Suave)', 'Color', 'w');
hold on;
contourf(X, Y, T_val, 50, 'LineStyle', 'none');
% Creamos la gráfica
N = 256;
r = linspace(0.2, 1, N)';
g = linspace(0.5, 1, N)';
b = linspace(1, 0, N)';
mi_mapa = [r, g, b]; % Matriz de colores
colormap(mi_mapa);
c = colorbar;
c.Label.String = 'Temperatura T = (x-y)^2';
% Cantida de flechas
step_r = 8; % Salta cada 8 puntos en el radio
step_t = 12; % Salta cada 12 puntos en el ángulo
idx_r = 1:step_r:size(X,1);
idx_t = 1:step_t:size(X,2);
% Dibujo flechas
quiver(X(idx_r, idx_t), Y(idx_r, idx_t), ...
Grad_X(idx_r, idx_t), Grad_Y(idx_r, idx_t), ...
'k', ... % Color negro flechas
'LineWidth', 1.0, ... % Grosor flechas
'AutoScaleFactor', 0.8); % Tamaño flechas
axis equal;
xlim([-2.5 2.5]); ylim([0 2.5]); % Márgenes
title('Gradiente sobre T');
xlabel('x'); ylabel('y');
box on;
hold off;4 Dibujo del sólido antes y después del desplazamiento
%% Visualización de Deformación (Azul vs Rojo)
clear; clc; close all;
% --- 1. DATOS Y CÁLCULOS ---
rho_vec = 1:0.1:2;
% EL CAMBIO ESTÁ AQUÍ:
theta_vec = [0:0.1:pi, pi];
[R, Th] = meshgrid(rho_vec, theta_vec);
% Posición Inicial
X_ini = R .* cos(Th);
Y_ini = R .* sin(Th);
% Desplazamiento u (Trabajo M)
u_rho = zeros(size(R));
u_theta = (1/5) * (R - 1) .* (R.^2) .* sin(Th);
UX = u_rho .* cos(Th) - u_theta .* sin(Th);
UY = u_rho .* sin(Th) + u_theta .* cos(Th);
% Posición Final
X_fin = X_ini + UX;
Y_fin = Y_ini + UY;
% --- GENERACIÓN DE LAS GRÁFICAS ---
% GRÁFICA 1: Posición Inicial
figure(1); clf; hold on; axis equal;
set(gcf, 'Color', 'w'); title('1. Posición Inicial (Sin deformar)');
xlabel('x'); ylabel('y');
plot(X_ini, Y_ini, 'b', 'LineWidth', 1);
plot(X_ini', Y_ini', 'b', 'LineWidth', 1);
plot_borde(rho_vec, theta_vec, 'k', 2);
axis([-2.5 2.5 0 2.5]); grid on;
% GRÁFICA 2: Posición Final
figure(2); clf; hold on; axis equal;
set(gcf, 'Color', 'w'); title('2. Posición Final (Deformada)');
xlabel('x'); ylabel('y');
plot(X_fin, Y_fin, 'r', 'LineWidth', 1);
plot(X_fin', Y_fin', 'r', 'LineWidth', 1);
axis([-2.5 2.5 0 2.5]); grid on;
% GRÁFICA 3: Superposición (AZUL vs ROJO)
figure(3); clf; hold on; axis equal;
set(gcf, 'Color', 'w'); title('3. Comparativa: Inicial vs Final');
xlabel('x'); ylabel('y');
% A) Inicial: AZUL
plot(X_ini, Y_ini, 'b', 'LineWidth', 1);
plot(X_ini', Y_ini', 'b', 'LineWidth', 1);
% B) Final: ROJO
plot(X_fin, Y_fin, 'r', 'LineWidth', 1.2);
plot(X_fin', Y_fin', 'r', 'LineWidth', 1.2);
% --- Función para bordes ---
function plot_borde(r_v, t_v, col, ancho)
plot(r_v(end)*cos(t_v), r_v(end)*sin(t_v), col, 'LineWidth', ancho);
plot(r_v(1)*cos(t_v), r_v(1)*sin(t_v), col, 'LineWidth', ancho);
plot([r_v(1) r_v(end)]*cos(t_v(1)), [r_v(1) r_v(end)]*sin(t_v(1)), col, 'LineWidth', ancho);
plot([r_v(1) r_v(end)]*cos(t_v(end)), [r_v(1) r_v(end)]*sin(t_v(end)), col, 'LineWidth', ancho);
end
5 Tensiones tangenciales
%% TENSIONES TANGENCIALES
clear; clc; close all;
% --- 1. GEOMETRÍA ---
rho_vec = 1:0.01:2;
theta_vec = 0:0.01:pi;
[R, Th] = meshgrid(rho_vec, theta_vec);
X = R .* cos(Th);
Y = R .* sin(Th);
% --- 2. CÁLCULO DE LA TENSIÓN ---
Tau = (1/5) * (2*R.^2 - R) .* sin(Th);
Tau_Mag = abs(Tau);
% --- 3. VISUALIZACIÓN ---
figure(9); clf; hold on; axis equal;
set(gcf, 'Color', 'w');
title('Tensión tangencial');
xlabel('x'); ylabel('y');
contourf(X, Y, Tau_Mag, 50, 'LineStyle', 'none');
c = colorbar;
ylabel(c,'Esfuerzo de Corte (Pa)');
% --- 4. Colormap amplio AZUL → ROJO (256 tonos) ---
n = 256;
azul = [0 0 1]; % azul puro
rojo = [1 0 0]; % rojo puro
cmap = [linspace(azul(1), rojo(1), n)', ...
linspace(azul(2), rojo(2), n)', ...
linspace(azul(3), rojo(3), n)'];
colormap(cmap);
% --- 5. Bordes exteriores en negro ---
t_border = 0:0.001:pi;
plot(2*cos(t_border),2*sin(t_border),'k','LineWidth',2);
plot(1*cos(t_border),1*sin(t_border),'k','LineWidth',2);
plot([-2,-1],[0,0],'k','LineWidth',2);
plot([1,2],[0,0],'k','LineWidth',2);
% --- 6. Punto de máxima tensión ---
max_val = max(Tau_Mag(:));
[fr, fc] = find(Tau_Mag == max_val, 1);
plot(X(fr,fc),Y(fr,fc),'wx','LineWidth',2,'MarkerSize',10);
text(X(fr,fc),Y(fr,fc)+0.1,'Máx','Color','w','FontWeight','bold');
axis([-2.2 2.2 0 2.2]);
grid off;
hold off;6 En el Trabajo K se modela una onda transversal en una placa rectangular mediante el campo de desplazamientos:
{{matlab|codigo= u ⃗ ( x , y , t ) = a ⃗ cos ( b ⃗ ⋅ r ⃗ 0 − c t ) , u
(x,y,t)=
a
cos(
b
⋅
r
0
−ct),
con
a ⃗ = 1 10 i ⃗ , b ⃗ = π j ⃗ , t = 0. a
=
10 1
i
,
b
=π
j
,t=0.
Esto se puede interpretar como una onda de corte (onda S) que se propaga en un medio elástico, como la corteza terrestre durante un terremoto.
Ondas S (secundarias o de corte): son ondas transversales, en las que las partículas del material vibran perpendicularmente a la dirección de propagación de la onda.
En este caso, la dirección de propagación es la del vector b ⃗ = π j ⃗ b
=π
j
(eje
y y), y la vibración es en la dirección i ⃗ i
(eje
x x), lo cual es típico de ondas S con polarización horizontal (onda SH).
Aplicación al Trabajo M (arco entre radios 1 y 2) En el Trabajo M, el dominio es un sector de arco en coordenadas polares ( ρ , θ ) (ρ,θ), con ρ ∈ [ 1 , 2 ] ρ∈[1,2], y el campo de desplazamientos es:
u ⃗ ( ρ , θ ) = 1 5 ( ρ − 1 ) ρ 2 sin θ e ⃗ θ . u
(ρ,θ)=
5 1
(ρ−1)ρ
2
sinθ
e
θ
.
Este campo representa un desplazamiento puramente tangencial ( e ⃗ θ e
θ
), que también corresponde a una onda de corte pero en geometría curvilínea.
En sismología, las ondas S pueden viajar a lo largo de estructuras curvas en la corteza, como capas geológicas curvadas o interfaces entre materiales.
El factor ( ρ − 1 ) ρ 2 sin θ (ρ−1)ρ 2
sinθ indica que el desplazamiento es máximo en la parte exterior del arco (
ρ = 2 ρ=2) y varía sinusoidalmente con θ θ, lo que podría modelar una onda estacionaria o forzada en una placa curvada.
Relación con la temperatura En ambos trabajos se incluye un campo de temperatura T ( x , y ) = ( x − y ) 2 T(x,y)=(x−y) 2
, que en el Trabajo M debe expresarse en coordenadas polares:
x = ρ cos θ , y = ρ sin θ , x=ρcosθ,y=ρsinθ, T ( ρ , θ ) = ρ 2 ( cos θ − sin θ ) 2 . T(ρ,θ)=ρ 2
(cosθ−sinθ)
2
.
Esta temperatura podría representar gradientes térmicos en la corteza debidos a fuentes geotérmicas, que afectan a las propiedades elásticas del medio y, por tanto, a la propagación de ondas sísmicas.
Conclusión de la aplicación El Trabajo M puede interpretarse como el estudio de ondas de corte (S) en una región curvilínea de la corteza terrestre, como un arco de falla o una capa geológica curvada, donde los desplazamientos son transversales a la dirección radial. La inclusión del campo de temperatura permite analinar cómo los gradientes térmicos influyen en la deformación y propagación de ondas en estructuras geológicas reales, algo relevante en sismología y geofísica. Visualization of vector fields in a solid