El problema: demasiados prototipos, demasiado tiempo
El diseño de perfiles alares sigue un ciclo clásico: CAD, prototipo, túnel de viento, medir, ajustar, repetir. Cada iteración cuesta dinero y semanas de espera. Con la simulación CFD (Computational Fluid Dynamics) y algoritmos de optimización, ese ciclo se comprime en horas.
En este artículo describimos un caso real de optimización de un perfil alar para un dron de ala fija, partiendo del perfil base NACA 4412 y alcanzando una reducción del 18% en el coeficiente de arrastre (Cd) manteniendo la sustentación (Cl) dentro del margen de diseño.
Metodología: del perfil paramétrico a la malla estructurada
Paso 1: Parametrización del perfil
No partimos de coordenadas fijas, sino de una representación paramétrica del perfil usando curvas de Bézier de grado 5 con 18 puntos de control. Cada punto de control puede desplazarse dentro de un rango acotado que garantiza que el perfil resultante sea físicamente viable (espesor máximo, radio de borde de ataque, etc.).
# Representación paramétrica de la línea de curvatura media y distribución de espesor
def naca4_profile(m, p, t, n=200):
"""Genera un perfil NACA de 4 dígitos a partir de sus parámetros."""
x = np.linspace(0, 1, n)
yt = 5 * t * (0.2969*np.sqrt(x) - 0.1260*x - 0.3516*x**2 + 0.2843*x**3 - 0.1015*x**4)
yc = np.where(x < p, m/p**2 * (2*p*x - x**2), m/(1-p)**2 * ((1-2*p) + 2*p*x - x**2))
dyc_dx = np.where(x < p, 2*m/p**2 * (p - x), 2*m/(1-p)**2 * (p - x))
theta = np.arctan(dyc_dx)
xu = x - yt * np.sin(theta)
yu = yc + yt * np.cos(theta)
xl = x + yt * np.sin(theta)
yl = yc - yt * np.cos(theta)
return xu, yu, xl, yl
Paso 2: Mallado automático con snappyHexMesh
OpenFOAM ofrece `snappyHexMesh`, una herramienta de mallado que refina automáticamente la malla cerca de la superficie del perfil y añade capas para resolver la capa límite con precisión. Para un perfil a Re = 1.2 × 106, usamos un y+ objetivo de 1, resultando en una altura de primera celda de aproximadamente 2.3 × 10-5 m.
/* snappyHexMeshDict */
castellatedMesh true;
snap true;
addLayers true;
refinementSurfaces
{
airfoil
{
level (5 5);
}
}
addLayersControls
{
relativeSizes true;
layers
{
airfoil
{
nSurfaceLayers 12;
}
}
expansionRatio 1.2;
finalLayerThickness 0.4;
minThickness 1e-6;
}
Paso 3: Solver y condiciones de contorno
Usamos `simpleFoam`, el solver estacionario incompresible con el modelo de turbulencia k-ω SST — ideal para flujos con gradientes de presión adversos y desprendimiento de capa límite. Las condiciones de contorno replican las de un túnel de viento: velocidad fija en la entrada (U = 30 m/s), presión fija en la salida, y paredes de deslizamiento en los laterales del dominio.
/* 0/U - Condiciones de contorno de velocidad */
boundaryField
{
inlet
{
type fixedValue;
value uniform (30 0 0);
}
outlet
{
type zeroGradient;
}
airfoil
{
type noSlip;
}
topAndBottom
{
type slip;
}
}
Optimización con algoritmos genéticos
Con el pipeline de simulación automatizado, ejecutamos un algoritmo genético (NSGA-II) con 50 individuos por generación durante 30 generaciones. Cada individuo es un vector de 18 parámetros de Bézier. La función de fitness penaliza el arrastre y recompensa el mantenimiento de sustentación:
fitness = -(C_d / C_d0) + penalty(max(0, C_l_min - C_l), max(0, C_l - C_l_max))
# Maximizamos el negativo del arrastre normalizado, con penalización por pérdida de sustentación
Resultados
Tras 1.500 simulaciones (50 × 30), el mejor perfil alcanzó:
- Cd: 0.0089 (base: 0.0109) — reducción del 18.3%
- Cl: 0.48 (base: 0.50) — dentro del margen aceptable
- L/D: 53.9 (base: 45.9) — mejora del 17.4% en eficiencia aerodinámica
La geometría optimizada desplazó sutilmente el punto de máximo espesor hacia atrás y redujo la curvatura del extradós en la zona de recuperación de presión, retrasando la transición laminar-turbulenta.
Conclusiones y próximos pasos
La combinación CFD + algoritmos genéticos permite explorar el espacio de diseño de forma eficiente. El coste computacional (≈ 1.500 core-horas) es insignificante comparado con el coste de fabricar y ensayar 10 prototipos físicos.
El siguiente paso es incorporar optimización multi-objetivo que considere simultáneamente arrastre, sustentación y momento de cabeceo, además de añadir restricciones estructurales mediante acoplamiento FSI (Fluid-Structure Interaction).