Flujo alrededor de un obstáculo circular (Grupo 29)
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Flujo alrededor de un obstáculo circular (Grupo 29) |
| Asignatura | Teoría de Campos |
| Curso | 2025-26 |
| Autores | Rodrigo de Pelayo García García
Sergio Resino Velayo Cayetano Gilabert Castejón Hugo Moreno Peregrina |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
El estudio del flujo alrededor de un cilindro circular es uno de los problemas más clásicos y analizados en la mecánica de fluidos teórica y aplicada. Su importancia en ingeniería civil es notable, pues muchas estructuras presentan formas aproximadamente cilíndricas: pilas de puentes, torres, tirantes, pilotes o tuberías expuestas a corrientes o viento.
Contenido
- 1 Región del fluido y mallado en coordenadas polares
- 2 Función potencial y campo de velocidades
- 3 Divergencia y Rotacional
- 4 Lineas de Corriente
- 5 Puntos de Remanso
- 6 Presión según Bernouilli
- 7 Trayectorias de Particulas
- 8 Circulaón y Paradoja D' Alembert
- 9 Flujo con circulación impuesta
- 10 Véase también
- 11 Referencias
1 Región del fluido y mallado en coordenadas polares
2 Función potencial y campo de velocidades
3 Divergencia y Rotacional
4 Lineas de Corriente
5 Puntos de Remanso
6 Presión según Bernouilli
7 Trayectorias de Particulas
8 Circulaón y Paradoja D' Alembert
9 Flujo con circulación impuesta
En este tipo de curvas, conocer cuál es su torsión y curvatura resulta más que relevante, puesto que nos proporcionan importante información acerca de esta, su forma y su comportamiento. Para hallar cada una:
- Curvatura [math]k(t)[/math]: expresa cuánto se parece la curva en un punto a su
circunferencia osculatriz de radio [math]1/k(t)[/math], es decir, cuánto comparte la curva con la circunferencia. Para una curva [math]\gamma (t)[/math] se define de la siguiente manera:
- Torsión [math]\tau (t)[/math]: expresa cuánto se separa la curva del plano osculador, es decir, de aquel dado por la circunferencia osculatriz o, lo que es lo mismo, dado por el vector tangente y normal en un punto. Igualmente, se define a partir de:
Concretamente, graficarlas resulta muy útil.
9.1 Análisis mediante el triedro de Frenet
Una curiosa forma en la que podemos observar la verdadera naturaleza curva de la espiral de Ekman es mediante la visualización animada del triedro de Frenet. Gastar líneas en calcular el triedro es irrelevante, pero el código empleado para mostrar la animación mostrada a partir de la función frenet() es el siguiente:
- La función
frenet()
function [T,N,B,k,t] = frenet(x,y,z),
if nargin == 2,
z = zeros(size(x));
end
% CONVERT TO COLUMN VECTOR
x = x(:);
y = y(:);
z = z(:);
% SPEED OF CURVE
dx = gradient(x);
dy = gradient(y);
dz = gradient(z);
dr = [dx dy dz];
ddx = gradient(dx);
ddy = gradient(dy);
ddz = gradient(dz);
ddr = [ddx ddy ddz];
% TANGENT
T = dr./mag(dr,3);
% DERIVIATIVE OF TANGENT
dTx = gradient(T(:,1));
dTy = gradient(T(:,2));
dTz = gradient(T(:,3));
dT = [dTx dTy dTz];
% NORMAL
N = dT./mag(dT,3);
% BINORMAL
B = cross(T,N);
% CURVATURE
% k = mag(dT,1);
k = mag(cross(dr,ddr),1)./((mag(dr,1)).^3);
% TORSION
t = dot(-B,N,2);
function N = mag(T,n),
% MAGNATUDE OF A VECTOR (Nx3)
% M = mag(U)
N = sum(abs(T).^2,2).^(1/2);
d = find(N==0);
N(d) = eps*ones(size(d));
N = N(:,ones(n,1));- El programa de animación:
% Parámetros iniciales
dE = sqrt(2 * 0.1 / 10^-4); % Cálculo de dE
z = linspace(-dE, 0, 100); % Valores de z de 0 a 250 m
% Definición de la curva
x = 0.2 * exp(z / dE) .* cos(z / dE + 3/4 * pi)*100;
y = 0.2 * exp(z / dE) .* sin(z / dE + 3/4 * pi)*100;
% Cálculo del triedro de Frenet usando tu función
[T, N, B, k, t] = frenet(x, y, z); % Asume que la función frenet.m está en el mismo directorio
T = 10*T; N=10*N; B=10*B;
% Crear la animación
figure;
hold on;
zlabel('Profundidad');
axis equal;
axis([-0.3*100 0.1*100 -0.1*100 0.25*100 -50 0]);
view(3);
% Plot de la espiral
plot3(x, y, z, 'k', 'LineWidth', 1); % La curva
quiver3(10, 0, -1, -12, 0, 0, 'k', 'LineWidth', 2, 'MaxHeadSize',0.751) % Vector del viento
hT = quiver3(0, 0, 0, 0, 0, 0, 'r', 'LineWidth', 1.5, 'MaxHeadSize', 0.5); % Vector T
hN = quiver3(0, 0, 0, 0, 0, 0, 'g', 'LineWidth', 1.5, 'MaxHeadSize', 0.5); % Vector N
hB = quiver3(0, 0, 0, 0, 0, 0, 'b', 'LineWidth', 1.5, 'MaxHeadSize', 0.5); % Vector B
% Animación
for i =1:length(z)
% Actualizar los vectores del triedro
set(hT, 'XData', x(length(z)+1-i), 'YData', y(length(z)+1-i), 'ZData', z(length(z)+1-i), ...
'UData', T(length(z)+1-i, 1), 'VData', T(length(z)+1-i, 2), 'WData', T(length(z)+1-i, 3));
set(hN, 'XData', x(length(z)+1-i), 'YData', y(length(z)+1-i), 'ZData', z(length(z)+1-i), ...
'UData', N(length(z)+1-i, 1), 'VData', N(length(z)+1-i, 2), 'WData', N(length(z)+1-i, 3));
set(hB, 'XData', x(length(z)+1-i), 'YData', y(length(z)+1-i), 'ZData', z(length(z)+1-i), ...
'UData', B(length(z)+1-i, 1), 'VData', B(length(z)+1-i, 2), 'WData', B(length(z)+1-i, 3));
exportgraphics(gca,"Ekman11Frenet.gif", "Append",true)
% Pausa para animación
pause(0.02);
end
