Flujo ideal alrededor de un cilindro en rotación: el efecto Magnus

Asignatura: Mecánica de Fluidos

Departamento: Ciencia y Tecnología de Materiales y Fluidos

Centro: Escuela Universitaria Politécnica de Teruel

Profesor: Adrián Navas Montilla

Introducción

El rotor Flettner es un sistema de propulsión de vehículos basado en la generación de fuerzas aerodinámicas producidas por un cilindro en rotación sobre el que incide un flujo de aire. Alrededor del cilindro existe una asimetría en el campo de velocidades y presiones, que se traduce en una fuerza neta en una de las direcciones. A este fenómeno lo llamamos efecto Magnus. La fuerza producida se utiliza para propulsar o sustentar el vehículo en cuestión.

Este sistema se ha aplicado tanto en aeronaves como en barcos:

Para representar el campo de velocidades alrededor de un cilindro en rotación podemos utilizar la superposición de tres flujos elementales: un flujo uniforme, un doblete y un vórtice libre, que luego explicaremos en qué consisten. Además, para facilitar el cálculo trabajaremos bajo la hipótesis de flujo ideal. Esto nos permitirá, conociendo el campo de velocidades alrededor del cilindro, calcular la presión en el mismo, para finalmente calcular las fuerzas sobre el cilindro.

A continuación se detallan los flujos elementales mencionados anteriormente:

$$v_{uniform}\left(x,y\right) = 0$$

Puedes encontrar más información sobre estos flujos elementales en el documento de ayuda.

La superposición de estos tres flujos elementales nos permite representar el flujo alrededor de un cilindro en rotación con el siguiente campo de velocidades:

$$ u=u_{doublet}+u_{vortex}+u_{uniform}$$$$ v=v_{doublet}+v_{vortex}+v_{uniform}$$

En coordenadas polares, este campo de velocidades se expresa como:

$$u_r\left(r,\theta\right) = \cos\theta \left(U_\infty-\frac{\kappa}{2\pi r^2}\right)$$$$u_\theta\left(r,\theta\right) = -\sin\theta \left(U_\infty +\frac{\kappa}{2\pi r^2}\right) - \frac{\Gamma}{2\pi r}$$

Asumiendo que en la superficie del cilindro de radio $R$ la velocidad radial es nula, obtenemos la siguiente expresión para el radio del cilindro:

$$R=\sqrt{\frac{\kappa}{2\pi U_{\infty}}}$$

Por otro lado, también asumiremos la siguiente relación para la velocidad angular del cilindro:

$$\omega=\frac{\Gamma}{2\pi R^2}$$

Sustituyendo las expresiones anteriores, obtenemos: $$u_r\left(r,\theta\right) = U_\infty \cos\theta \left(1-\frac{R^2}{r^2}\right)$$

$$u_\theta\left(r,\theta\right) = -U_\infty \sin\theta \left(1+\frac{R^2}{r^2}\right) - \frac{\Gamma}{2\pi r}$$

Bajo la hipótesis de flujo ideal, es posible relacionar las condiciones del flujo aguas arriba del cilindro con las condiciones del flujo en cualquier otro punto del dominio mediante la ecuación de Bernoulli:

$$p_\infty + \frac{1}{2}\rho U_\infty^2 = p + \frac{1}{2}\rho U^2$$

Por ejemplo, podemos utilizar esta relación para conocer la distribución de presiones alrededor del cilindro. En el apartado siguiente, representaremos gráficamente el coeficiente de presión, que se define como:

$$C_p = \frac{p-p_\infty}{\frac{1}{2}\rho U_\infty^2}$$

es decir $$C_p = 1 - \left(\frac{U}{U_\infty}\right)^2$$

Parte 1: Definición de los campos de velocidad

Para esta parte, nos hemos basado en el trabajo de L. A. Barba (Barba, Lorena A., and Mesnard, Olivier (2019). Aero Python: classical aerodynamics of potential flow using Python. Journal of Open Source Education, 2(15), 45, https://doi.org/10.21105/jose.00045).

Vamos a comenzar importando algunas bibliotecas de Python:

El objetivo es visualizar las líneas de flujo correspondientes a los campos de velocidades que hemos descrito anteriormente. Para ello, necesitamos definir primero un conjunto de puntos donde se calcularán las componentes de la velocidad.

Vamos a definir una malla cartesiana de puntos uniformemente espaciados dentro de un dominio espacial que tiene 4 unidades de longitud de ancho en la dirección $x$ y 2 unidades de longitud de ancho en la dirección $y$, es decir, $x,y\in\left[-2,2\right],\left[-1,1\right]$.

La variable N será el número de puntos que queremos en cada dirección, y definimos los límites computacionales mediante las variables x_start, x_end, y_start y y_end.

Utilizamos la función NumPy linspace() para crear dos matrices que contienen los valores uniformes de las coordenadas $x$ e $y$, correspondientes a nuestros puntos de la cuadrícula. La última línea del bloque de código de abajo llama a la función meshgrid(), que genera matrices que contienen las coordenadas de los puntos donde se calculará la solución numérica.

Ahora definiremos las funciones que nos darán los campos de velocidad del doblete, del vórtice y de la corriente libre:

Parte 2: Visualización interactiva del flujo alrededor del cilindro en rotación