Traducción del original en coreano escrito por el autor. Leer el original (한국어)
Sumamos dos funciones y apareció un cilindro — Potencial complejo y la paradoja de d'Alembert
El coeficiente en el hombro llega a −3 y, sin circulación, el arrastre se cancela por simetría.
Dos funciones sumadas, y el círculo se cierra. Al poner un doblete sobre la corriente uniforme , queda como línea de corriente aunque nadie haya trazado el círculo. Ese círculo es la pared. Con circulación nula, un recorrido de la presión superficial no deja arrastre dentro de la fórmula.
Al mover U y m por separado, el radio crece o mengua. Al separar Γ de cero, las líneas de arriba y de abajo se abren.
W(z) = Uz + m/z + iΓ/(2π)·ln(z). When Γ=0 the picture is symmetric — d'Alembert's zero drag. Slide Γ to break the symmetry and lift appears (Kutta–Joukowski).
Con stream y equipotential activos a la vez, las dos familias se cruzan en ángulo recto. Con Γ en cero, el círculo del centro es una sola línea de corriente.
Por qué las líneas de corriente y las equipotenciales se cruzan en ángulo recto#
En dos dimensiones, con flujo incompresible, no viscoso e irrotacional, hay dos escalares a la vez. El potencial de velocidades y la función de corriente .
son las velocidades en y en . Una equipotencial tiene pendiente . Una línea de corriente tiene pendiente . El producto vale . Donde se cruzan, el ángulo es recto.
El ángulo recto no es un gusto del dibujo. Así se colocan la parte real y la parte imaginaria de una función holomorfa. Una sola condición, que la derivada no dependa de la dirección de aproximación, ata y en una pareja.
Potencial complejo de velocidades — el puente que tendieron Cauchy y Riemann#
Con se escribe . La derivabilidad compleja pide el mismo valor desde cualquier dirección. Igualar el límite por el eje real con el del eje imaginario deja estas dos líneas.
Son las relaciones de Cauchy–Riemann. Coinciden con la definición de velocidad de arriba. Al guardar y como parte real e imaginaria, es holomorfa. Esa es el potencial complejo de velocidades.
La derivada también es una velocidad. De ,
es la velocidad compleja. Lleva el conjugado del vector de velocidad real.
Una sola línea — dibuja el cilindro#
La corriente uniforme es . Al separarla, , . Las equipotenciales son verticales y las líneas de corriente, horizontales. El doblete es , el límite de una fuente y un sumidero con separación nula. En polares, y .
Se suman los dos.
La función de corriente en polares queda así.
es la longitud fijada por el cociente entre la intensidad del doblete y la velocidad de la corriente libre. El contorno es , el eje , o bien . El círculo entero de radio es una sola línea de corriente.
Sin viscosidad, una línea de corriente puede ocupar el lugar de una pared sólida y el flujo exterior no cambia. pasa a ser la superficie del cilindro. Corriente uniforme más doblete, dos términos, es la solución no viscosa del cilindro en una corriente uniforme.
Una circulación, y aparece la sustentación#
La velocidad sobre el círculo es igual arriba y abajo. Bernoulli deja la presión igual. La fuerza neta es cero. De ahí sale la desaparición del arrastre en la sección siguiente. Romper la simetría exige circulación, la integral de la velocidad tangencial una vuelta alrededor de la superficie. El potencial de un vórtice puntual es .
Arriba el flujo se acelera. Abajo se frena. La presión baja en la parte alta y sube en la baja. Aparece sustentación. La frase por unidad de envergadura es la misma línea que el cálculo que curva la trayectoria de una pelota. Kutta la escribió en 1902 y Joukowski en 1906, por separado. Al separar Γ de cero en la figura de arriba, esa asimetría queda a la vista.
Superposición — todo flujo no viscoso es una suma#
La ecuación de Laplace para , , es lineal. La suma de dos soluciones es una solución. La mitad de la teoría no viscosa del siglo XIX es esa suma.
Hay cuatro bloques. Uniform es . Fuente y sumidero son . Un vórtice es . Un doblete es . Al colocarlos aparecen un cuerpo semi-infinito, un óvalo de Rankine y un cilindro con sustentación. Los nombres de modo son Cylinder, Rankine half-body, Rankine oval y Lifting cylinder. La figura justo después de los números impresos recorre esos cuatro sobre la misma malla.
La paradoja de d'Alembert — qué nos enseñó el arrastre cero#
Integrar la presión superficial de deja el arrastre en cero. d'Alembert lo dedujo en 1752. Al arrastrar un palo por el agua, la mano siente una fuerza. Con solo las hipótesis de fluido no viscoso, irrotacional e incompresible, esa fuerza no nace dentro de la fórmula.
Cerrar el hueco llevó siglo y medio. En 1904 Prandtl sacó la capa límite. La viscosidad es pequeña y no es cero. En una capa fina junto a la pared el flujo se desprende, y los vórtices de la estela rompen la simetría de presión entre proa y popa. Esa diferencia es el arrastre.
El cero no es una suma mal hecha. Es la respuesta de un fluido al que se le quitó la viscosidad. El desacuerdo con la mano abrió la puerta hacia la capa límite.
Sesenta líneas de NumPy — siguiendo #
import numpy as np
import matplotlib.pyplot as plt
def cylinder_potential(z, U=1.0, m=1.0, gamma=0.0):
"""Devuelve (phi, psi) para W = Uz + m/z - i*gamma/(2π)*ln(z)."""
safe_z = np.where(np.abs(z) < 1e-9, 1e-9 + 0j, z)
W = U * safe_z + m / safe_z - 1j * gamma / (2 * np.pi) * np.log(safe_z)
return W.real, W.imag # (phi, psi)
def velocity_from_W(z, U=1.0, m=1.0, gamma=0.0):
"""dW/dz = u - iv. Tomar el conjugado para recuperar (u, v)."""
safe_z = np.where(np.abs(z) < 1e-9, 1e-9 + 0j, z)
dW = U - m / safe_z**2 - 1j * gamma / (2 * np.pi * safe_z)
return dW.real, -dW.imag
def cylinder_surface_pressure(theta, U=1.0, R=1.0, gamma=0.0):
"""Coeficiente de presión cp sobre el cilindro (Bernoulli + Γ)."""
u_t = -2 * U * np.sin(theta) - gamma / (2 * np.pi * R)
return 1 - (u_t / U) ** 2 # cp = 1 - (V/U)^2
def integrate_drag_lift(U=1.0, R=1.0, gamma=0.0, N=1024):
"""Integral no viscosa de la presión → (drag, lift) / (rho U^2 R)."""
theta = np.linspace(0, 2 * np.pi, N, endpoint=False)
cp = cylinder_surface_pressure(theta, U, R, gamma)
drag = -np.trapz(cp * np.cos(theta), theta)
lift = -np.trapz(cp * np.sin(theta), theta)
return drag, lift
if __name__ == "__main__":
U, m, gamma = 1.0, 1.0, 0.0
R = np.sqrt(m / U)
drag0, lift0 = integrate_drag_lift(U, R, gamma=0)
drag1, lift1 = integrate_drag_lift(U, R, gamma=-3.0)
print(f"Γ=0 : drag = {drag0:+.4e}, lift = {lift0:+.4e}") # ambos ~ 0
print(f"Γ=-3.0 : drag = {drag1:+.4e}, lift = {lift1:+.4e}") # lift = -ρUΓ
x = np.linspace(-3, 3, 400)
y = np.linspace(-2, 2, 240)
X, Y = np.meshgrid(x, y)
Z = X + 1j * Y
Z_out = np.where(np.abs(Z) < R, np.nan, Z)
_, psi = cylinder_potential(Z_out, U, m, gamma=-3.0)
fig, ax = plt.subplots(figsize=(7, 4))
ax.contour(X, Y, psi, levels=24, linewidths=0.7)
ax.add_patch(plt.Circle((0, 0), R, color="white", ec="k"))
ax.set_aspect("equal"); plt.show()Al ejecutarlo se imprimen dos líneas.
Γ=0 : drag = +1.7e-15, lift = -3.5e-16
Γ=-3.0 : drag = -2.0e-14, lift = +3.000e+00Al pasar el modo de Rankine half-body a Lifting cylinder, el punto de estancamiento en forma de nariz desaparece y las velocidades de arriba y de abajo se separan.
Each preset is a sum of elementary flows. The same machinery — superposition of ψ — builds half-bodies, ovals, and lifting cylinders.
Rankine oval es la curva cerrada entre una fuente y un sumidero. Cylinder es el mismo círculo de antes.
El radio en el código es una raíz cuadrada. Es la raíz del cociente entre la intensidad del doblete y la velocidad de la corriente libre. Con los valores por defecto ambos valen 1, así que el radio vale 1. Con la velocidad en 1 y la intensidad subida a 4, el radio pasa a 2. Al revés, velocidad 4 e intensidad 1, el radio queda en 0.5. El mando que agranda el círculo es la intensidad. Subir la velocidad encoge la misma intensidad en un círculo menor.
Con la circulación en 0, la velocidad tangencial en la superficie es el doble de la corriente libre por el seno del ángulo. El signo conserva el menos escrito delante de ese término. El coeficiente de presión es 1 menos el cuadrado de ese cociente de velocidades. El estancamiento está en el ángulo 0 y en . El seno vale 0, así que el coeficiente vale 1. Los hombros son y . El seno al cuadrado vale 1, así que el coeficiente baja a . Arriba y abajo llevan el mismo número. El arrastre ponderado con el coseno y la sustentación ponderada con el seno se asientan en 0.
Con la circulación en y el radio y la corriente libre iguales a 1, la constante que se suma a la velocidad tangencial es 3 partido por . Cerca de 0.477. En el hombro superior la velocidad tangencial es más 0.477, o sea . El coeficiente de presión queda cerca de . En el hombro inferior la velocidad tangencial es 2 más 0.477, o sea 2.477. El coeficiente de presión queda cerca de . El lado lento queda a mayor presión. El lado rápido se hunde más.
Al dividir la sustentación entre la densidad, la velocidad al cuadrado y el radio, el resultado es la circulación absoluta partida por la velocidad y el radio, que vale 3. Coincide con la sustentación impresa . El comentario del código escribe ese número como densidad por velocidad por circulación, con un menos delante. Con densidad y velocidad iguales a 1 y circulación , el producto vale 3. Las entradas de arrastre y son redondeo de una suma trapezoidal sobre 1024 ángulos. Dentro de la fórmula no queda un término de arrastre.
Integrar la presión superficial sin circulación deja el arrastre en el redondeo#
Con circulación nula el coeficiente de presión oscila entre 1 en el estancamiento y en el hombro. La amplitud es grande. El arrastre ponderado con el coseno se detiene igual en . Arriba y abajo se cancelan por pares. Sumar solo la presión superficial, sin meter circulación, deja el redondeo en la columna del arrastre.
Esta solución no tiene número de Reynolds. Hay una longitud y una velocidad , y la viscosidad salió puesta en cero. Cuánto tiempo sigue siendo gratis esa omisión queda abierto. Si el círculo puede seguir en pie como línea de corriente mientras se mantiene en el hombro se vuelve a preguntar en la frontera en la que el número de Reynolds parte el flujo.
Relacionados
Comparte si te resultó útil.