Placa Plana (J52)

De MateWiki
Revisión del 19:42 27 nov 2025 de Marco.moreno (Discusión | contribuciones) (Curvas de nivel)

Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título Placa plana. Grupo 52
Asignatura Teoría de Campos
Curso 2025-26
Autores Carlos Gallego García
Arantxa Gonzales Mori
Diego Pérez Fernández
Diego Peña Ruiz
Marco Moreno González
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


1 Introducción

Consideramos la sección longitudinal de una viga voladiza rectangular (en dimensión 2) que ocupa la región (Figura 1.) y que está fija en la pared vertical izquierda.

[math] (𝑥, 𝑦) ∈ [0, 4] × [𝑓(𝑔), 𝑔(𝑥)],𝑓(𝑥) = \frac{x}{8},𝑔(𝑥) = 2 − \frac{x}{8} [/math]

En ella vamos a suponer que tenemos definidas dos cantidades físicas: la temperatura 𝑇(𝑥, 𝑦) dada por

[math] 𝑇(𝑥, 𝑦) = (1 + (𝑦 − 1)^2)(4 - x) [/math],

y los desplazamientos 𝑢⃗(𝑥, 𝑦) producidos por la acción de una fuerza determinada que no conocemos. De esta forma, si definimos [math] 𝑟⃗0 (𝑥, 𝑦) = 𝑥⃗𝑖 + 𝑦𝑗⃗ [/math] el vector de posición de los puntos de la placa antes de la deformación, la posición de cada punto (𝑥, 𝑦) de la placa después de la deformación viene dada por

𝑟⃗ d[math](𝑥, 𝑦)[/math] = 𝑟⃗0[math] (𝑥, 𝑦) + 𝑢⃗(𝑥, 𝑦)[/math].

Vamos a suponer que la fuerza aplicada sobre la placa ha provocado un desplazamiento de los puntos de la misma dado por el vector

[math]𝑢⃗(𝜌, 𝜃) = −\frac{1}{20} 𝜌2cos 𝜃𝑒⃗𝜃[/math].

2 Mallado del Solido

Para dibujar el mallado,habrá que parametrizar el sólido y tomar los ejes del el rectángulo [math](x, y) ∈ [−1, 5] × [-1, 3][/math] ,además,como paso de muestreo: [math]h = \frac{1}{10}[/math] para las variables [math]x[/math] e [math]y[/math].

Figura 1
clc; clear; close all;
%Datos
h = 0.1;
u = 0:h:4;
% Para la coordenada vertical, la altura máxima de la placa es 2 por lo que 
% para mantener el paso h=0.1, necesitamos dividir esa altura en aprox 20 partes.
% y definimos un parámetro 's' que vaya de 0 a 1.
num_puntos_y=2/h; 
s=linspace(0,1,num_puntos_y + 1);
%rejilla de parámetros
[U,S]=meshgrid(u,s);

% fronteras (borde inferior y superior)
f_u=U./8;
g_u=2-U./8;

%Calcular las coordenadas físicas X e Y
% X es U
X=U;
% Y es una interpolación entre el borde inferior y superior
Y=f_u+S.*(g_u-f_u);

%Dibujar el mallado
figure(1);
clf; 
hold on;

%hacemos la rejilla y la configuramos
mesh(X,Y,zeros(size(X)),'EdgeColor',[0, 0.7, 0.7],'FaceColor','none');

%Dibujamos un contorno parecido a la imagen dada
plot(X(1,:),Y(1,:),'k','LineWidth',2)% Borde inferior
plot(X(end,:),Y(end,:),'k','LineWidth',2)% Borde superior
plot(X(:,1),Y(:,1),'k','LineWidth',2)% Borde izquierdo (pared)
plot(X(:,end),Y(:,end),'k','LineWidth',2)% Borde derecho

% Configuramos los ejes y el visionado
axis([-1 5 -1 3]);
xlabel('x');
ylabel('y');
title('Mallado de la placa plana');
view(2);
box on;
grid off;
axis equal

3 Curvas de nivel

De acuerdo con la ley de Fourier, la energía calorífica 𝑄⃗ se describe mediante la fórmula

[math] 𝑄⃗ = −𝜅∇T \lt|math\gt [[Archivo:curvadenivel.jpeg|miniaturadeimagen|derecha|800px|Figure 1]] \ltsource lang="matlab"\gt clc; clear; close all; % Definición del Mallado y Dominio h=0.1; %Muestreo x=0:h:4; y=0:h:2; [X,Y] = meshgrid(x, y); % Funciones que definen la placa f=@(x)x./8; % Límite inferior g=@(x)2-x./8; % Límite superior % Máscara para puntos dentro de la placa EnPlaca=Y\gt=f(X)&Y\lt g(X); % Definición de la Temperatura y el Gradiente % Función T(x,y) T=(1+(Y-1).^2).*(4-X); % Aplicar máscara T_plot=T; T_plot(~EnPlaca)=NaN; % Cálculo numérico del gradiente para los vectores (o usar fórmula exacta) % Usamos la fórmula exacta derivada arriba para mayor precisión U=-(1+(Y-1).^2); % Componente x del gradiente V=2.*(Y-1).*(4-X); % Componente y del gradiente % Solo mostramos vectores dentro de la placa U(~EnPlaca)=NaN; V(~EnPlaca)=NaN; % Generación de la Gráfica figure(1); clf; % Limpiar figura hold on; axis equal; axis([-0.5 4.5 -0.5 2.5]); grid on; title({'Isotermas y Gradiente \nabla T', 'T(x,y) = (1+(y-1)^2)(4-x)'}); xlabel('x'); ylabel('y'); % Mapa de calor de fondo [C_fill, h_fill] = contourf(X, Y, T_plot, 20, 'LineStyle', 'none'); colormap(jet); % Mapa de colores tipo jet cb=colorbar; ylabel(cb,'Temperatura T'); % Curvas de nivel [C, h_cont]=contour(X,Y,T_plot,10,'k','LineWidth',1.5); clabel(C,h_cont,'FontSize',9,'Color','k','FontWeight','bold'); % Campo Vectorial (Gradiente) % Submuestreamos cada 3 puntos para que no se vea una mancha de flechas step=3; quiver(X(1:step:end,1:step:end),Y(1:step:end, 1:step:end), ... U(1:step:end,1:step:end),V(1:step:end,1:step:end), ... 1.2,'k','LineWidth',1); % '1.2' es el factor de escala de las flechas % Dibujar bordes de la placa plot(x,f(x),'k-','LineWidth',2); % Borde inferior plot(x,g(x),'k-','LineWidth',2); % Borde superior plot([0 0],[f(0) g(0)],'k-','LineWidth',2); % Pared izquierda plot([4 4],[f(4) g(4)],'k-','LineWidth',2); % Pared derecha % Señalar Máximo plot(0,0,'rp','MarkerSize',12,'MarkerFaceColor','r'); plot(0,2,'rp','MarkerSize',12,'MarkerFaceColor','r'); text(0.1,0,'Max T','Color','white','FontWeight','bold'); hold off; \lt/source\gt ==Energía calorífica(LEY DE FOURIER)== [[Archivo:fourier1.jpg|miniaturadeimagen|derecha|800px|Figure 1: Flujo de Calor(Ley de Fourier)]] \ltsource lang="matlab"\gt clc; clear; close all; % Definición del Escenario h=0.1; [X,Y]=meshgrid(0:h:4,0:h:2); f=X./8; g=2-X./8; EnPlaca=Y\gt=f&Y\lt=g; % Máscara % Cálculos y Gradiente de T Grad_x=-(1+(Y-1).^2); Grad_y=2.*(Y-1).*(4-X); % Flujo de Calor Q (Ley de Fourier) k=1; % Constante de conductividad Qx=-k.*Grad_x; Qy=-k.*Grad_y; % Borrar vectores fuera de la placa Qx(~EnPlaca)=NaN; Qy(~EnPlaca)=NaN; % Visualización figure('Name','Flujo de Calor (Ley de Fourier)'); hold on; axis equal;axis([-0.5 4.5 -0.5 2.5]);grid on; title({'Flujo de Calor', 'El calor viaja desde lo caliente a lo frío'}); xlabel('X'); ylabel('Y'); % Temperatura de fondo T=(1+(Y-1).^2).*(4-X); T(~EnPlaca)=NaN; contourf(X,Y,T,15,'LineStyle','none','FaceAlpha',0.5); colormap(jet);c=colorbar;ylabel(c,'Temperatura'); % Dibujar el Campo Vectorial Q % Usamos 'step' para no pintar todas las flechas y que se vea limpio step=3; idx=1:step:size(X, 1); idy=1:step:size(X, 2); quiver(X(idx,idy),Y(idx,idy),Qx(idx,idy),Qy(idx,idy),1.5,'k','LineWidth',0.75); % Bordes x_b=linspace(0,4, 200); plot(x_b,f(x_b),'k','LineWidth',2); plot(x_b,g(x_b),'k','LineWidth',2); plot([0 0],[0 2],'k','LineWidth',2); plot([4 4],[0.5 1.5],'k','LineWidth',2); % Origen del flujo plot(0,0,'ko','MarkerFaceColor','w'); plot(0,2,'ko','MarkerFaceColor','w'); hold off; \lt/source\gt ==Gradiente Térmico== El punto de máxima variación térmica corresponde al punto donde el '''gradiente es máximo''''. Mientras que la '''variación térmica''' sigue la '''dirección de dicho gradiente''', el '''flujo de calor''' más intenso lo hace en '''sentido contrario''',es decir,hacia donde baja la temperatura En la '''gráfica''' se puede apreciar que la '''variación máxima''' es '''8.25''' Ocurre en los puntos: '''P(1)''': x=0.00, y=0.00. ''Dirección del vector'': [-2.00, -8.00] '''P(2)''': x=0.00, y=2.00. ''Dirección del vector'': [-2.00, 8.00] [[Archivo:maxvart.jpg|miniaturadeimagen|derecha|800px|Figure 1:Máxima Variación de T]] \ltsource lang="matlab"\gt clc; clear; close all; h=0.05; [X,Y]=meshgrid(0:h:4,0:h:2); f=X./8;g=2-X./8; EnPlaca=Y\gt=f&Y\lt=g; % Cálculos de Gradiente y Norma Tx=-(1+(Y-1).^2); Ty=2.*(Y-1).*(4-X); % Norma del Gradiente NormaGrad=sqrt(Tx.^2+Ty.^2); NormaGrad(~EnPlaca)=0; % Buscar el Máximo max_val=max(NormaGrad(:)); [filas,cols]=find(NormaGrad==max_val); % Coordenadas de los puntos máximos x_max=X(filas,cols); y_max=Y(filas,cols); % Componentes del vector dirección en esos puntos u_dir=Tx(filas,cols); v_dir=Ty(filas,cols); % Visualización figure('Name','Máxima Variación de T'); hold on;axis equal;axis([-0.5 4.5 -0.5 2.5]);grid on; title({'Puntos de Máxima Variación de Temperatura', '(Color = Magnitud del Gradiente T)'}); xlabel('x'); ylabel('y'); % Mapa de calor NormaGrad(~EnPlaca)=NaN; contourf(X,Y,NormaGrad,20,'LineStyle','none'); colormap(jet);colorbar; % Contorno plot([0 4 4 0 0],[0 0.5 1.5 2 0],'k','LineWidth',1.5); % Puntos rojos y dirección plot(x_max, y_max,'ro','MarkerSize',7.5,'MarkerFaceColor','r'); % Flechas de dirección quiver(x_max,y_max,u_dir,v_dir,0.5,'k','LineWidth',2,'MaxHeadSize',0.5); % Resultados fprintf('La variación máxima es %.2f\n', max_val); fprintf('Ocurre en los puntos:\n'); for i=1:length(x_max) fprintf('P(%d): x=%.2f, y=%.2f. Dirección del vector: [%.2f, %.2f]\n',i,x_max(i),y_max(i),u_dir(i),v_dir(i)); end \lt/source\gt ==Campo de desplazamiento== Se dibuja el campo de desplazamientos en los puntos del mallado del sólido.\ltbr /\gt Como se puede observar en la imagen, si que hay puntos que se mantienen fijos. [[Archivo:Campodesplazamiento2.jpg|miniaturadeimagen|derecha|800px|Figure 1: Campo de Desplazamientos]] \ltsource lang="matlab"\gt clc; clear; close all; % Definición del Dominio y Mallado h = 0.1; % Muestreo x = 0:h:4; y= 0:h:2; [X,Y]=meshgrid(x,y); % Definición de la Placa f=@(x)x./8; % Límite inferior g=@(x)2-x./8; % Límite superior % Máscara lógica EnPlaca=Y\gt=f(X)&Y\lt=g(X); % Cálculo del Campo de Desplazamientos u U=(1/20).*X.*Y; % Componente horizontal V=-(1/20).*X.^2; % Componente vertical % Filtrar U(~EnPlaca)=NaN; V(~EnPlaca)=NaN; % Gráfica y ajuste figure('Name', 'Campo de Desplazamientos'); set(gcf,'Position',[100 100 800 500]); hold on; axis equal; axis([-0.5 4.5 -1 2.5]); grid on; title('Campo de Desplazamientos'); xlabel('x'); ylabel('y'); % Dibujar el campo vectorial u quiver(X,Y,U,V,0,'r', 'LineWidth',1,'MaxHeadSize', 0.5); % Dibujar contorno de la placa como referencia x_borde = linspace(0,4,200); plot(x_borde,f(x_borde),'k','LineWidth',1); plot(x_borde,g(x_borde),'k','LineWidth',1); plot([0 0],[f(0) g(0)],'k','LineWidth',1); % Pared izquierda plot([4 4],[f(4) g(4)],'k','LineWidth',1); % Pared derecha % Puntos fijos % Buscamos puntos donde el desplazamiento sea (0,0) % Si x=0, entonces U=0 y V=0.Por lo que toda la pared izquierda (x=0) está fija. plot(zeros(size(y)),y,'b.','MarkerSize',15); % Puntos azules text(0.1,1,'\leftarrow Puntos Fijos (x=0)','Color','b','FontWeight','bold'); hold off; \lt/source\gt ==Desplazamientos== Se dibuja el sólido antes y después del desplazamiento dado por el campo de vectores 𝑢⃗. [[Archivo:comp11.jpg|miniaturadeimagen|derecha|800px|Figure 1:Comparación Antes/Después]] \ltsource lang="matlab"\gt clc; clear; close all; % Generación de la Malla h=0.2; u=0:h:4; s=linspace(0,1,11); [U,S]=meshgrid(u,s); % Coordenadas Originales f_x=U./8; g_x=2-U./8; X0=U; Y0=f_x+S.*(g_x-f_x); Z0=zeros(size(X0)); % Cálculo de la Deformación y Campo de desplazamientos u(x,y) Ux=(X0.*Y0)./20; Uy=-(X0.^2)./20; % Coordenadas Deformadas Xd=X0+Ux; Yd=Y0+Uy; % Visualización figure('Name','Comparación Antes/Después','Color','w'); % ANTES subplot(1,2,1); mesh(X0,Y0,Z0,'EdgeColor',[0 0.7 0.9],'FaceColor','none'); hold on; plot([0 0],[0 2],'k','LineWidth',3); % Pared fija title('Antes del desplazamiento'); xlabel('X'); ylabel('Y'); axis equal; axis([-0.5 4.5 -1.5 2.5]); grid on; view(2); % DESPUÉS subplot(1,2,2); mesh(Xd,Yd,Z0,'EdgeColor',[0 0.7 0.9],'FaceColor','none'); hold on; plot([0 0], [0 2],'k','LineWidth',3); title('Después del desplazamiento'); xlabel('X'); ylabel('Y'); axis equal; axis([-0.5 4.5 -1.5 2.5]); grid on; view(2); \lt/source\gt ==Divergencia== La '''divergencia''' mide la variación de volumen local. El resultado del cálculo (y/20) ,indica que la placa sufre una expansión positiva que aumenta linealmente con la altura debido al estiramiento de las fibras superiores. En la gráfica,se puede apreciar en las franjas de color: En '''azul''' esta la base,donde el '''volumen no cambia''',degradándose progresivamente hacia el '''rojo''' intenso del borde superior donde se encuentra el '''punto de máxima expansión''', independientemente de la posición horizontal x. [[Archivo:divergenciaplaca.jpg|miniaturadeimagen|derecha|800px|Figura 1]] \ltsource lang="matlab"\gt clc; clear; close all; % Definir Malla y Placa h=0.05; [X,Y]=meshgrid(0:h:4, 0:h:2); f=X./8;g=2-X./8; % Límites EnPlaca=Y\gt=f&Y\lt=g; % Máscara lógica % Cálculo de la Divergencia (div=y/20) Div=Y./20; Div(~EnPlaca)=NaN; % Visualización figure('Name','Divergencia');clf;hold on; axis equal; axis([-0.5 4.5 -0.5 2.5]);box on; title('Divergencia: Cambio de Volumen'); xlabel('X'); ylabel('Y'); [C, h_cont]=contourf(X, Y, Div, 20,'LineStyle','none'); colormap(jet); c=colorbar;ylabel(c,'Valor de Divergencia'); % Dibujar bordes negros x_b = linspace(0, 4, 200); plot(x_b, x_b./8,'k','LineWidth',1); plot(x_b, 2 - x_b./8,'k','LineWidth',1); plot([0 0],[0 2],'k','LineWidth',1); plot([4 4],[0.5 1.5],'k','LineWidth',1); % Señalar puntos clave % Máxima: Ocurre en y=2 y x=0 plot(0,2,'kp','MarkerSize',12,'MarkerFaceColor','r'); text(0.1, 2.1,'Max Expansión','FontWeight','bold'); % Nula: Ocurre en y=0 y x=0 plot(0,0,'kp','MarkerSize',12,'MarkerFaceColor','b'); text(0.1,-0.1,'Divergencia Nula','FontWeight','bold'); hold off; \lt/source\gt ==Rotacional== clc; clear; close all; %% Definir Malla y Placa h = 0.05; % paso de la malla [X,Y] = meshgrid(0:h:4,0:h:2); % malla 2D f = X./8; % borde inferior g = 2 - X./8; % borde superior EnPlaca = (Y \gt= f) & (Y \lt= g); % máscara lógica para la placa %% Cálculo de la Divergencia (∇·u = y/20) Div = Y./20; % divergencia Div(~EnPlaca) = NaN; % fuera de la placa no dibujar %% Visualización figure('Name','Divergencia'); clf; hold on; set(gcf,'Color','w') % fondo blanco axis equal; axis([-0.5 4.5 -0.5 2.5]); box on; title('Divergencia ∇·u: Cambio de Volumen'); xlabel('X'); ylabel('Y'); % Dibujar contornos rellenos [C, h_cont] = contourf(X,Y,Div,20,'LineStyle','none'); colormap(jet); c = colorbar; ylabel(c,'Valor de Divergencia'); %% Dibujar bordes de la placa en negro x_b = linspace(0,4,200); plot(x_b, x_b./8,'k','LineWidth',1); % borde inferior plot(x_b, 2 - x_b./8,'k','LineWidth',1); % borde superior plot([0 0],[0 2],'k','LineWidth',1); % borde izquierdo plot([4 4],[0.5 1.5],'k','LineWidth',1); % borde derecho aproximado %% Señalar puntos clave % Máxima divergencia: borde superior y_max = g(1); x_max = 0; plot(x_max,y_max,'kp','MarkerSize',12,'MarkerFaceColor','r'); text(x_max+0.1,y_max+0.1,'Máx. Expansión','FontWeight','bold'); % Divergencia nula: aproximado en esquina inferior izquierda x_nula = 0; y_nula = 0; plot(x_nula,y_nula,'kp','MarkerSize',12,'MarkerFaceColor','b'); text(x_nula+0.1,y_nula-0.1,'Divergencia Nula','FontWeight','bold'); hold off; ==Tensor deformaciones== ==Tensiones tangenciales== ==Tensión de Von Mises== ==Campo de Fuerzas== ==Densidad== ==Ejemplos de uso en la ingeniería == TEMPORAL CORREGIR LO QUE QUERAIS -CARLOS Una viga en voladizo tiene grandes uso debido a su forma, además de ser muy útil por su funcionalidad. Estas vigas tienen un gran abanico de usos. Para usos arquitectónicos son usadas para balcones y terrazas, cubiertas de entradas y marquesinas, ya que se necesitan vigas que no tengan ningún apoyo vertical por debajo de esta., lo que permite hacer construcciones en el exterior sin la necesidad de columnas que puedan interferir en el diseño. Por otro lado es muy usada en maquinarias como en los brazos de grúas(tanto grúa de torre como grúas pórtico) o en palas de aerogeneradores. Para los brazos de grúa estas vigas son necesarias ya que por uno de sus extremos estará anclado a una carga y por el otro estará libre. De la misma forma se usara para las palas de un aerogenerador ya que estas estarán unidas a el buje por un extremo ( donde trasmite momentos y fuerzas al eje) y libre por el otro (donde actúa el viento y ejerce máxima deflexión). Estas vigas también tienen usos mas específicos para la ingeniería civil. La ingeniería civil ha usado en numerosas ocasiones estas vigas para puentes en voladizo donde no que no tendrán pilas de puente ni tampoco algún apoyo vertical durante el puente mas allá de los estribos y las vigas de voladura[/math]