Diferencia entre revisiones de «Presa Triangular (Grupo 27)»
(→\nabla T (Gradiente)) |
(→Ley de Fourier) |
||
| Línea 124: | Línea 124: | ||
==Ley de Fourier== | ==Ley de Fourier== | ||
| − | + | [[Archivo:flujo_energiaAP4.png|400px|thumb|Q]] | |
| + | [[Archivo:CN_Flujo_AP4.png|400px|thumb|Curvas de nivel y Q]] | ||
{{matlab|codigo= | {{matlab|codigo= | ||
% Paso de discretización y número de puntos | % Paso de discretización y número de puntos | ||
Revisión del 19:34 3 dic 2024
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Presa Triangular . Grupo 27 |
| Asignatura | Teoría de Campos |
| Curso | 2024-25 |
| Autores | Rafael Moreno Orellana Miguel Rubio Arraztio Victor Jesus Sepulveda Fernandez Pablo Cortina Gomez |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
- Consideramos la sección transversal de una presa triangular (ver figura 2).
- Dibujar la estructura, que es el triángulo de la figura, manteniendo las líneas coordenadas tal y como están en la figura.
- Suponer lo siguiente:
• Parametrizar la superficie [math](x, y) ∈ [0, 2] × [0, f(x)][/math] con:[math]f(x) = \min(3, \frac{3}{2}(2 − x))[/math].
• La temperatura viene dada por la función: [math]T(x, y) = \frac{y \cdot x^2}{2}[/math].
• Los desplazamientos se corresponden con el campo: [math]\vec{u}(x, y) = \frac{2(2 − x)y \cdot \vec{i} − y \cdot \vec{j}}{50}[/math].
• Tomar como densidad: [math]d(x, y) = (2 − |x − \frac{1}{2}|)(4 − y)[/math].
Contenido
- 1 Representacion del mallado en 2D
- 2 Curvas de Nivel de la Temperatura y [math]\nabla T[/math]
- 3 Ley de Fourier
- 4 Punto de Máximo Valor de [math]\nabla T[/math] (Gradiente)
- 5 Campo de Desplazamientos
- 6 Sólido Antes y Después del Desplazamiento
- 7 Divergencia
- 8 [math]|\nabla \times \vec{u}|[/math]
- 9 Tensiones Perpendiculares
1 Representacion del mallado en 2D
clc; clear all;
% Definimos la función f(x)
f = @(x) min(3, 3/2 * (2 - x));
% Paso de discretización y número de puntos
h = 1/10;
Nx = ((2 - 0) / h);
Ny = ((3 - 0) / h);
% Discretizamos los rangos de x e y
x = linspace(0, 2, Nx);
y = linspace(0, 3, Ny);
% Malla de puntos (X, Y)
[X, Y] = meshgrid(x, y);
% Definimos Z solo para los valores dentro de f(x)
for i = 1:Nx
Z(Y <= f(x(i)) & X == x(i)) = 0;
end
% Configuración de la gráfica
figure('Name', 'Mallado de la Figura');
mesh(X, Y, Z);
xlabel('Eje X'); ylabel('Eje Y');
title('Superficie parametrizada: [0, 2] × [0, f(x)]');
grid on;
view(2);
axis([-1 3 -1 4]);
hold on;
plot([0, 2], [0, 0], 'k-', [0, 2], [f(0), f(2)], 'k-', [0, 0], [0, f(0)], 'k-', [2, 2], [0, f(2)], 'k-', 'LineWidth', 2);
hold off;
2 Curvas de Nivel de la Temperatura y [math]\nabla T[/math]
2.1 Curvas de Nivel de la Temperatura
% Paso de discretización y número de puntos
h = 1/10;
x = 0:h:2;
y = 0:h:3;
% Malla de puntos (X, Y)
[X, Y] = meshgrid(x, y);
% Función límite de la región válida
f = @(x) min(3, (3/2)*(2 - x));
% Temperatura en cada punto
T = (Y .* X.^2) / 2;
T(~region) = NaN;
% Curvas de nivel
contour3(X, Y, T, 20);
colorbar;
% Configuración de la gráfica
axis equal;
xlabel('Eje X');
ylabel('Eje Y');
zlabel('Temperatura T(x, y)');
title('Curvas de Nivel de la Temperatura');
grid on;
hold off;
2.2 [math]\nabla T[/math] (Gradiente)
% Paso de discretización y número de puntos
h = 1/10;
x = 0:h:2;
y = 0:h:3;
% Malla de puntos (X, Y)
[X, Y] = meshgrid(x, y);
% Función límite de la región válida
f = @(x) min(3, (3/2)*(2 - x));
% Temperatura en cada punto
T = (Y .* X.^2) / 2;
T(~region) = NaN;
% Gradiente de la temperatura
[Tx, Ty] = gradient(T, h);
% Curvas de nivel
contour3(X, Y, T, 20);
% Configuración de la gráfica
hold on;
quiver3(X, Y, T, Tx, Ty, zeros(size(Tx)), 'r', 'LineWidth', 1.5);
axis equal;
axis([0, 2, 0, 3, 0, 1]);
xlabel('Eje X');
ylabel('Eje Y');
zlabel('Temperatura T(x, y)');
title('Curvas de Nivel y Gradiente de Temperatura');
colorbar;
grid on;
view(2);
hold off;
3 Ley de Fourier
% Paso de discretización y número de puntos
h = 1/10;
x = 0:h:2;
y = 0:h:3;
% Malla de puntos (X, Y)
[X, Y] = meshgrid(x, y);
% Función límite de la región válida
f = @(x) min(3, (3/2)*(2 - x));
% Temperatura en cada punto
T = (Y .* X.^2) / 2;
T(~region) = NaN;
% Gradiente de la temperatura
[Tx, Ty] = gradient(T, h);
% Flujo de energía calorífica
Qx = -Tx;
Qy = -Ty;
% Curvas de nivel
contour3(X, Y, T, 20);
% Configuración de la gráfica
hold on;
quiver3(X, Y,T,Qx,Qy, zeros(size(Qx)), 'r');
axis equal;
axis([0, 2, 0, 3, 0, 1]);
xlabel('Eje X');
ylabel('Eje Y');
zlabel('Temperatura T(x, y)');
title('Curvas de Nivel y Flujo de Energía');
colorbar;
grid on;
view(2);
hold off;
4 Punto de Máximo Valor de [math]\nabla T[/math] (Gradiente)
% Paso de discretización y rango de puntos
h = 1/50;
x = 0:h:2;
y = 0:h:3;
% Malla de puntos (X, Y)
[X, Y] = meshgrid(x, y);
% Función límite para definir la región válida
f = @(x) min(3, 3/2 * (2 - x));
Region = (Y <= f(X));
X(~Region) = NaN;
Y(~Region) = NaN;
% Cálculo de la temperatura y gradiente
T = (Y .* X.^2) / 2;
gradX = Y .* X;
gradY = X.^2 / 2;
GRAD = sqrt(gradX.^2 + gradY.^2);
% Identificar el punto con el mayor valor de gradiente
[MAXgrad, MAXI] = max(GRAD(:));
[MAXgradX, MAXgradY] = deal(X(MAXI), Y(MAXI));
% Submuestreo para las flechas
XGrid = X(1:5:end, 1:5:end);
YGrid = Y(1:5:end, 1:5:end);
GradientX = gradX(1:5:end, 1:5:end);
GradientY = gradY(1:5:end, 1:5:end);
% Representación Campo de Temperaturas y Punto con Mayor Gradiente
figure;
hold on;
quiver3(XGrid, YGrid, zeros(size(XGrid)), GradientX, GradientY, zeros(size(GradientX)), 'b', 'LineWidth', 1);
plot3(MAXgradX, MAXgradY, 0, 'ro', 'MarkerSize', 10, 'LineWidth', 3);
text(MAXgradX, MAXgradY, 0, sprintf('Max Grad = %.2f', MAXgrad), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom');
axis equal;
axis([-1, 3, -1, 4, -1, 1]);
grid on;
xlabel('Eje X');
ylabel('Eje Y');
zlabel('Eje Z');
title('Campo de Temperatura y Dirección de Máxima Variación');
view(3);
hold off;
5 Campo de Desplazamientos
% Paso de discretización y número de puntos
h = 1/10;
x = 0:h:2;
y = 0:h:3;
% Malla de puntos (X, Y)
[X, Y] = meshgrid(x, y);
% Función límite de la región válida
f = @(x) min(3, 3/2 * (2 - x));
Region = (Y <= f(X));
X(~Region) = NaN;
Y(~Region) = NaN;
Z = zeros(size(X));
% Campo de Desplazamientos
ux = (2 * (2 - X) .* Y) / 50;
uy = -Y / 50;
% Superficie representada como malla
mesh(X, Y, Z, 'EdgeColor', 'b');
hold on;
quiver3(X, Y, Z, ux, uy, zeros(size(ux)), 1.5, 'g');
axis equal;
axis([-0.5, 2.5, -0.5, 3.5, -0.5, 0.5]);
xlabel('Eje X');
ylabel('Eje Y');
zlabel('Eje Z');
title('Campo de Desplazamientos');
view(3);
grid on;
hold off;
6 Sólido Antes y Después del Desplazamiento
% Paso de discretización y número de puntos
h = 1/10;
x = 0:h:2;
y = 0:h:3;
% Malla de puntos (X, Y)
[X, Y] = meshgrid(x, y);
% Función límite de la región válida
f = @(x) min(3, 3/2 * (2 - x));
Region = (Y <= f(X));
X(~Region) = NaN;
Y(~Region) = NaN;
% Campo de Desplazamientos
ux = (2 * (2 - X) .* Y) / 50;
uy = -Y / 50;
% Sólido antes del desplazamiento
subplot(1, 2, 1);
mesh(X, Y, zeros(size(X)));
view(2);
title("Sólido antes del desplazamiento");
axis([-1, 3, -1, 4]);
xlabel('Eje X');
ylabel('Eje Y');
grid on;
% Sólido después del desplazamiento
subplot(1, 2, 2);
mesh(X + ux, Y + uy, zeros(size(X)));
view(2);
title("Sólido después del desplazamiento");
axis([-1, 3, -1, 4]);
xlabel('Eje X');
ylabel('Eje Y');
grid on;
7 Divergencia
Para calcular la divergencia de un campo vectorial lo primero es definir los conceptos.
La divergencia de un campo vectorial queda definida por: [math]\vec{u} = \frac{\partial u_x}{\partial x} + \frac{\partial u_y}{\partial y} [/math]
Teniendo en cuenta que nuestro campo vectorial es: [math] \vec u=\frac {1}{50}[(2(2-x)y)(\vec i) -y(\vec j)][/math]
Podemos definir cada uno de los términos de la divergencia como:
[math]u_x(x, y) = \frac {1}{50}[(2(2-x)y)][/math]
[math]u_y(x, y) = \frac {-y}{50}[/math]
Una vez que tenemos los términos definidos tenemos que calcular las derivadas parciales para obtener la divergengia.
[math]\frac{\partial u_x}{\partial x} = \frac{\partial (xy)}{\partial x} = \frac {-2y}{50}[/math]
[math]\frac{\partial u_y}{\partial y} = \frac{\partial (-yx^2)}{\partial y} = \frac {-1}{50}[/math]
Tras calcular las derivadas parciales podemos definir la divergencia: [math]\nabla \cdot \vec{u}(x, y) = \frac {-2y-1}{50}[/math]
Una vez que tenemos la divergencia calculada utilizamos Matlab para obtener su representación gráfica:
% Paso de discretización y número de puntos
h = 1/10;
x = 0:h:2;
y = 0:h:3;
% Malla de puntos (X, Y)
[X, Y] = meshgrid(x, y);
% Función límite de la región válida
f = @(x) min(3, 3/2 * (2 - x));
Region = (Y <= f(X));
X(~Region) = NaN;
Y(~Region) = NaN;
% Divergencia
div_u = (-2 .* Y - 1) ./ 50;
% Configuración de la gráfica
figure;
surf(X, Y, div_u);
colorbar;
title('Divergencia del campo u(x, y)');
xlabel('x');
ylabel('y');
zlabel('z');
view(3);
8 [math]|\nabla \times \vec{u}|[/math]
Sabiendo que [math] \vec u=\frac {1}{50}[(2(2-x)y)(\vec i) -y(\vec j)][/math]
Y que; por tanto: [math]u_x(x, y) = \frac {1}{50}[(2(2-x)y)][/math]
[math]u_y(x, y) = \frac {-y}{50}[/math]
[math]\nabla \times \vec u =\left|
\begin{matrix}\vec i & \vec j & \vec k\\ & & \\
\frac{\partial}{\partial x} & \frac{\partial}{\partial y} & \frac{\partial}{\partial z}
\\ & & \\ u_1 & u_2 & u_3 \end{matrix}\right|
=\left|
\begin{matrix} \vec i & \vec j & \vec k \\ & & \\
\frac{\partial}{\partial x} & \frac{\partial}{\partial y} & \frac{\partial}{\partial z}
\\ & & \\ \frac {1}{50}[(2(2-x)y)] & \frac {-y}{50} & 0 \end{matrix}\right|
=\left(
\frac{\partial 0}{\partial y} - \frac{ \partial \frac {-y}{50}}{\partial z}\right)\vec i +
\left(\frac{\partial \frac {1}{50}[(2(2-x)y)]}{\partial z} - \frac{\partial 0}{\partial x}\right)\vec j +
\left(\frac{ \partial \frac {-y}{50}}{\partial x} - \frac{ \partial \frac {1}{50}[(2(2-x)y)]}{\partial y}\right)\vec k
=0\vec i + 0\vec j + \left(\frac {2-x}{25}\right)\vec k
[/math]
[math]|\nabla \times \vec{u}|[/math] = [math] \frac {2-x}{25} [/math]
% Paso de discretización y número de puntos
h = 1/10;
x = 0:h:2;
y = 0:h:3;
% Malla de puntos (X, Y)
[X, Y] = meshgrid(x, y);
% Función límite de la región válida
f = @(x) min(3, (3/2)*(2 - x));
Region = (Y <= f(X));
X(~Region) = NaN;
Y(~Region) = NaN;
%Módulo del rotacional
ROT = (2 - X) / 25;
% Configuración de la gráfica
figure
surf(X,Y,ROT)
view(3)
title("Rotacional 3-D en t=0")
colorbar
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Eje Z')
9 Tensiones Perpendiculares
1. Dibujar un mallado que represente los puntos interiores del sólido. Para ello, parametrizar el sólido de manera que las líneas coordenadas sean las mismas que las dibujadas en 1. Tomar los ejes (comando axis) en el rectángulo [math](x, y) ∈ [−2, 2] × [0, 3][/math] y como paso de muestreo [math]h = \frac{1}{10}[/math] para las variables [math]x[/math] e [math]y[/math].
2. Dibujar las curvas de nivel de la temperatura (comando contour) y decidir en qué punto la temperatura es máxima a partir de la gráfica. Calcular [math]\nabla T[/math] y pintarlo como campo vectorial en la misma gráfica. Observar gráficamente que [math]\nabla T[/math] es ortogonal a dichas curvas. (Nota: es muy importante que la escala de los ejes sea la misma para apreciar el ángulo que forman las curvas de nivel y el gradiente).
3. De acuerdo a la Ley de Fourier la energía calorífica [math]\vec{Q} = -\kappa \nabla T[/math] donde [math]\kappa[/math] es la constante de conductividad térmica de la placa que supondremos [math]\kappa = 1[/math]. Calcular [math]\vec{Q}[/math] y dibujarlo como campo vectorial.
4. Determinar analíticamente (o con el ordenador) en qué punto y en qué dirección la variación de temperatura es mayor y dibujarlo en la gráfica de la placa con un punto rojo.
5. Dibujar el campo de desplazamientos en los puntos del mallado del sólido. ¿Hay algunos puntos que se encuentren fijos?
6. Dibujar el sólido antes y después del desplazamiento dado por el campo de vectores [math]\vec{u}[/math]. Dibujar ambos en la misma figura usando el comando subplot para poder compararlos.
7. Dibujar8. Calcular [math]|\nabla \times \vec{u}|[/math] en todos los puntos del sólido y dibujarlo. ¿Qué puntos sufren un mayor rotacional?
9. Definamos [math]\varepsilon(\vec{u}) = \frac{\nabla \vec{u} + \nabla \vec{u}^t}{2}[/math], la parte simétrica del tensor gradiente de [math]\vec{u}[/math] conocido como tensor de deformaciones.
En un medio elástico lineal, isótropo y homogéneo, los desplazamientos permiten escribir el tensor de tensiones [math]\sigma_{ij}[/math] a través de la fórmula: <center>[math]\sigma = \lambda \nabla \cdot \vec{u} \cdot I + 2\mu \varepsilon[/math],
- donde [math]I[/math] es el tensor identidad en el conjunto de vectores libres del espacio [math]\mathbb{R}^3[/math] y [math]\lambda[/math], [math]\mu[/math] son los conocidos como coeficientes de Lamé que dependen de las propiedades elásticas de cada material.
A pesar de que los desplazamientos son planos (es decir, [math]\vec{u}[/math] no tiene componente en la dirección de [math]\vec{k}[/math]), las tensiones no tienen por qué ser planas y puede haber tensiones en la dirección ortogonal al plano de la placa.
Tomando [math]\lambda = \mu = 1[/math], dibujar las tensiones normales en la dirección que marca el eje [math]\vec{i}[/math], es decir, [math]\vec{i} \cdot \sigma \cdot \vec{i}[/math], las tensiones normales en la dirección que marca el eje [math]\vec{j}[/math], es decir, [math]\vec{j} \cdot \sigma \cdot \vec{j}[/math], y las correspondientes al eje [math]\vec{k}[/math], es decir, [math]\vec{k} \cdot \sigma \cdot \vec{k}[/math] (dibujar las que no son nulas).
10. Calcular las tensiones tangenciales respecto al plano ortogonal a [math]\vec{i}[/math], es decir, [math]|\sigma \cdot \vec{i} − (\vec{i} \cdot \sigma \cdot \vec{i}) \vec{i}|[/math]. Dibujar sólo las que no son nulas.