Trabajo Fin de Grado Grado en Ingeniería...

115
Trabajo Fin de Grado Grado en Ingeniería Aeroespacial Intensificación de Vehículos Aeroespaciales Implementación de un modelo Vortex Lattice para distintas configuraciones alares, superficies de control e hipersustentadoras y evaluar la aerodinámica de diseños en fases preliminares. Autor: Alejandro Moyano Conteraras Tutores: Miguel Pérez-Saborid Sánchez-Pastor & Francisco Gavilán Jiménez Dep. Ingeniería Aeroespacial y Mecánica de Fluídos Escuela Técnica Superior de Ingeniería Sevilla, 2014

Transcript of Trabajo Fin de Grado Grado en Ingeniería...

Trabajo Fin de Grado Grado en Ingeniería Aeroespacial Intensificación de Vehículos Aeroespaciales

Implementación de un modelo Vortex Lattice para distintas configuraciones alares, superficies de control e hipersustentadoras y evaluar la aerodinámica de diseños en fases preliminares.

Autor: Alejandro Moyano Conteraras Tutores: Miguel Perez-Saborid Sanchez-Pastor & Francisco Gavilan Jimenez

Dep. Ingeniería Aeroespacial y Mecánica de Fluídos

Escuela Técnica Superior de Ingeniería

Sevilla, 2014

Proyecto Fin de Grado Ingeniería de Aeroespacial

Implementación de un modelo Vortex Lattice para

distintas configuraciones alares, superficies de control e hipersustentadoras y evaluar la

aerodinámica de diseños en fases preliminares.

Autor:

Alejandro Moyano Contreras

Tutores: Miguel Pérez-Saborid Sánchez-Pastor

Francisco Gavilán Jiménez

Dep. Ingeniería Aeroespacial y Mecánica de Fluídos Escuela Técnica Superior de Ingeniería

Universidad de Sevilla Sevilla, 2013

Proyecto Fin de Carrera: Implementación de un modelo Vortex Lattice para distintas configuraciones alares, superficies de control e hipersustentadoras y evaluar la aerodinámica de diseños en fases preliminares.

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

Presidente:

Vocales:

Secretario:

Acuerdan otorgarle la calificación de:

Sevilla, 2014

El Secretario del Tribunal

Autor: Alejandro Moyano Contreras

Tutores: Miguel Pérez-Saborid Sánchez-Pastor & Francisco Gavilán Jiménez

A mi familia…

i

Indice general

1. Introduccion 1

2. Modelo aerodinamico 32.1. Ecuaciones de la aerodinamica potencial . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2. Resolucion del problema sustentador en alas finitas mediante el metodo Vortex Lattice. 7

2.2.1. Fundamentos del metodo: distribucion de vorticidad y Ley de Biot-Savart . . . 72.2.1.1. Implementacion en BiotSavart3D.m . . . . . . . . . . . . . . . . . . . 13

2.2.2. Generacion del sistema de ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . 142.3. Densidades de circulacion y cargas aerodinamicas . . . . . . . . . . . . . . . . . . . . . 172.4. Resistencia Inducida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3. Implementacion 233.1. Preprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.1.1. Funcion create wing.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.1.2. Funcion show wing.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.2. Solver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2.1. Funcion lattice all.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2.2. Funcion justsolve all.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.3. Postprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.3.1. Calculo del centro aerodinamico. . . . . . . . . . . . . . . . . . . . . . . . . . . 443.3.2. Calculo de la MAC y cuerda centroidal. . . . . . . . . . . . . . . . . . . . . . . 463.3.3. Obtencion del CL0 y de la pendiente de sustentacio CLα. . . . . . . . . . . . . . 473.3.4. Centro de presiones del semiala . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4. Interfaz grafico: GUI 494.1. Generador de alas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.2. Solver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.3. Acceso a solucion y postprocesado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5. Resultados 595.1. Placa plana de gran alargamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.2. Estudio del efecto de la deflexion de flaps . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.2.1. Comparacion de resultados con otros softwares . . . . . . . . . . . . . . . . . . 635.2.1.1. Tornado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.2.1.2. XFLR5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.2.1.3. USAF Digital Datcom . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

5.3. Estudio del efecto de la deflexion de alerones . . . . . . . . . . . . . . . . . . . . . . . 705.4. Estudio del efecto de la curvatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.5. Estudio del efecto de las condiciones de vuelo . . . . . . . . . . . . . . . . . . . . . . . 73

INDICE GENERAL ii

5.5.1. Resbalamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735.5.2. Rotaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.6. Estudio de la validez de la aproximacion del centro aerodinamico por el centroide . . . 765.7. Estudio del problema acoplado ala y estabilizador horizontal: deflexion de la estela . . 78

6. Conclusiones y lıneas de mejora futuras 81

A. Codigos de interes 84A.1. generate input.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84A.2. NACA v2.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85A.3. scale NACA.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87A.4. show wing.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88A.5. lattice all.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89A.6. flight cond rot.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95A.7. atmosfera isa.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95A.8. eOswald.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96A.9. justsolve all.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97A.10.postproceso.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Bibliografıa 106

1

Capıtulo 1

Introduccion

Numerosos estudiantes de ingenierıa aeroespacial, sobre todo en ultimos cursos, tienen la necesidadde operar modelos aerodinamicos computacionales rapidos y sencillos para evaluar, ası, las prestacionesde sus predisenos en asignaturas como Calculo de Aeronaves o en las asignaturas de Aerodinamica yextraer conclusiones sobre las distintas formas en planta y configuraciones alares a elegir. Esto se debea que una solucion del problema aerodinamico completo analıtica para geometrıas tridimensionalescomplejas, o no tan complejas, se hace impensable a dıa de hoy. Es por esta razon que ya existennumerosas soluciones computacionales que van desde los mas complejos y sofisticados modelos CFD(Computacional Fluid Dynamics) a manos de programas comerciales como Fluent, hasta modelos massencillos basados en VLM (Vortex Lattice Method) como Tornado, pasando por otros que se basan enel metodo de paneles o en la teorıa de la lınea sustentadora.

(a) Mallado CFD complejo extraıdo dePointwise.

(b) Mallado metodo de paneles para unavion completo extraıdo de XFLR5.

(c) Mallado tıpico para VLM.

CAPITULO 1. INTRODUCCION 2

De entre la mayorıa de las soluciones computacionales a las que un alumno medio tiene acceso, sepueden extraer los siguientes puntos debiles:

1. Los programas mas sofisticados y cuya solucion se supone ha de ser la mas fidedigna, suelenser bastante caros e inaccesibles, requieren un extenso proceso de aprendizaje para una correctaoperacion y tienen poca transparencia sobre su funcionamiento interno (cajas negras).

2. Otros codigos no comerciales y de codigo abierto, estan basados en formulaciones complejas quea fin de cuentas, hacen que su estudio interno sea complicado.

3. Programas disponibles basados en VLM, aunque presentan una formulacion relativamente sen-cilla, presentan un interfaz por consola un tanto engorroso de cara a la entrada de datos. Porotro lado, sus resultados no cazan del todo bien los datos experimentales a la vez que requierenmucho tiempo de computacion.

Ante esta situacion, se decide apostar por profundizar en la idea de lıneas de vortices cerradasvisto en Aerodinamica II (solucion en principio prometedora en comparacion a los resultados de losvortices de herradura) en terminos de extender el concepto para geometrıas mas complejas e incluyendosuperficies de control.

La idea es ir desarrollando progresivamente de menor a mayor complejidad una librerıa de fun-ciones basadas en un modelo aerodinamico sencillo e intuitivo que aporten una solucion en funcionexclusivamente a la geometrıa de entrada y de la manera mas generalista posible, es decir, se buscaun codigo en el que la complejidad de aspectos geometricos a incluir (cajones, superficies de control,winglets...) quede limitada, exclusivamente, por la capacidad de generar sus respectivos puntos enel espacio, para lo cual se disenaran funciones especıficas con la base de que permitan al disenadorintroducir geometrıas muy variadas. Dichas funciones se iran llamando entre sı siguiendo una ciertasecuencia e iran generando distintos tipos de estructuras de datos de interes que constituyen, a suvez, las entradas de otras funciones. De esta manera, el usuario puede trabajar con ellas llamandolasa bajo nivel segun la secuencia de operaciones o barridos que le interese hacer.

Durante el diseno, tanto de el modelo como de la implementacion, se va a intentar mantener latrazabilidad de esta idea para concluir en un codigo que cumpla las expectativas. Especial atencionse dedicara al proceso de validacion final, en el que se extraeran resultados en comparacion a otroscodigos similares. En caso de no concordancia de algun resultado o efecto sobre el modelo, se proveera alusuario la advertencia oportuna en los campos que corresponda y los rangos de validez admisibles.

Asimismo, se hara un esfuerzo constante en conseguir unas rutinas eficientes para ası disminuir eltiempo de computacion en la medida de lo posible.

Por ultimo, para dar conexion a las distintas funciones de la librerıa y en vistas a proveer un usoinmediato al usuario, se va a disenar un interfaz grafico. Dicho interfaz trabajara de forma modularfacilitando la introduccion de la geometrıa del modelo, el aporte de las condiciones de vuelo o el accesoa los distintos resultados de la solucion que se han considerado de interes.

3

Capıtulo 2

Modelo aerodinamico

2.1. Ecuaciones de la aerodinamica potencial

En la mayor parte de su operacion, las aeronaves estan inmersas en flujos con numeros de Reynoldsmuy elevados Re = ρU∞cr

µ∞ 1. Los perfiles suelen ser fuelados h0(y) c(y) (espesores tıpicos mucho

menores que las cuerdas), de manera que el flujo se perturba lo menor posible y los gradientes adversosse minimizan para evitar desprendimientos de corriente y resistencias de forma innecesarias. Otro delos objetivos es volar con angulos de ataque pequenos α(y) 1 (sustentando con velocidad en lugarde CL) para ası disminuir la inevitable resistencia inducida.

Hoy en dıa, gran parte de las aplicaciones practicas en aeronautica estan enfocadas a vuelo subsoni-co bajo, con lo cual, es valido asumir regimen incompresible M∞ ≤ 0,3. Asımismo, el problema puedemodelarse como cuasiestacionario ya que Str 1 y el efecto de la gravedad puede considerarsedespreciable al cumplirse que Fr 1.

CAPITULO 2. MODELO AERODINAMICO 4

Tambien se puede demostrar que, bajo estas condiciones, el espesor de la capa lımite viscosa(zona donde los grandientes transversales de velocidad son importantes, y por tanto los efectos dela viscosidad no son despreciables) es muy pequeno δv ∼ cr√

Re cr. Debido a los elevados numeros

de Reynolds, es de esperar que se haya superado la transicion a la turbulencia. En cualquier caso,aunque el espesor de la capa lımite turbulenta es mayor (para una placa plana se puede demostrar que

δturb ∼ 0,382/Re1/5c ) se puede seguir considerando esta region despreciable frente al resto. Asımismo,

puesto que el numero de Prandl del aire es de orden unidad, el espesor de la capa lımite termica esdel orden de la viscosa δt ∼ δv√

Pr. Lo mismo ocurre con el espesor de la estela δe.

Se extrae de estas consideraciones que los efectos de la viscosidad y conduccion de calor quedanconfinados en regiones muy pequenas, con lo cual, se justifica despreciar los terminos disipativos delmodelo, resultando en un flujo ideal.

En lo que sigue, se modelara el fluıdo mediante las ecuaciones de Navier-Stokes en forma diferencial,que consisten en balances integrales de masa, cantidad de movimiento y energıa llevados a nivel depunto. Dichas ecuaciones son tremendamente difıciles de resolver por lo que es necesario introducirlas hipotesis y simplificaciones previamente comentadas.

En primer lugar, la ecuacion de continuidad:

∇ · (ρ~v) = 0 (2.1)

implica que en un volumen de control infinitesimal y estacionario, el flujo de masa que entra ha de serigual al que sale. En el caso incompresible se reduce a que el campo de velocidades debe ser solenoidal.

La ecuacion de cantidad de movimiento

ρ~v · ∇~v = −∇p (2.2)

es vectorial al implicar las tres componentes de la velocidad y relaciona los flujos de cantidad demovimiento en el volumen de control con la resultante de fuerzas de presion sobre su superficie. Notarque se han eliminado las componentes de fuerzas masicas y viscosas.

Por ultimo, la ecuacion de la conservacion de la energıa se traduce en una evolucion isentropica

p

ργ=p∞ργ∞

(2.3)

ya que se han despreciado los terminos disipativos en el modelo.

Se tiene ası, para el fluıdo ideal, un sistema no lineal con 5 ecuaciones y 5 incognitas (u, v, w, p, ρ).

Por otro lado, las condiciones impuestas implican que las lıneas de corriente van a deformarsepoco, con lo cual tambien es valido introducir la teorıa de pequenas perturbaciones y simplificarlas ecuaciones teniendo en cuenta que [ ]′[ ]′ [ ]′[ ]∞ [ ]∞[ ]∞, donde [ ]′ y [ ]∞representan cualquier variable de perturbacion y en el infinito respectivamente de manera que lavariable total puede expresarse como [ ](x, y, z) = [ ]∞ + [ ]′(x, y, z). La dependencia espacial quedaen la perturbacion luego sera la unica componente que permanezca al aplicar gradientes.

La ecuacion de continuidad en su version mas general (regimen compresible) se simplifica como sesigue

∇ · (ρ~v) = ∇ ·(

(ρ′ + ρ∞)(~U∞ + ~v′))

= ∇ ·(

(~U∞ρ′ + ρ∞~v′

)= ~U∞ · ∇ρ′ + ρ∞∇ · ~v′ = 0 (2.4)

CAPITULO 2. MODELO AERODINAMICO 5

Para simplificar la ecuacion de cantidad de movimiento se tiene en cuenta que

ρ~v · ∇~v ' ρ∞~U∞ · ∇~v′ = ρ∞U∞∂~v′

∂x= −∇p′ (2.5)

y tomando rotacional en la expresion anterior se obtiene

ρ∞U∞∇×∂~v′

∂x= ρ∞U∞

∂x

(∇× ~v′

)= 0 (2.6)

lo cual implica que ∇× ~v′ es independiente de x.

Ası, si en puntos x infinitamente alejados del perfil se sabe que la velocidad de perturbacion esnula (~v′ = 0), su rotacional sera igualmente nulo (∇× ~v′ = 0) y se mantendra siendo nulo para todoslos puntos x en virtud de su independencia con dicha variable espacial.

∇× ~v′ = 0 ∀(x, y, z) (2.7)

Se desprende de este resultado que ~v′ deriva de un potencial, es decir ∃ φ′(x, y, z) /

~v′ = ∇φ′ (2.8)

Para dar una interpretacion fısica a la ecuacion (2.7) se parte de la base de que un elementofluıdo puede experimentar movimientos por traslacion, rotacion o deformacion. La viscosidad es lapropiedad del fluıdo mediante la cual capas adyascentes de elementos fluıdos interaccionan entre sı entanto en cuanto se restringe su movimiento relativo o se transmiten cargas tangenciales. Por tanto, enausencia de viscosidad y en el seno de un flujo homentropico, una accion tangencial en el contorno deun elemento fluıdo no va a conferirle velocidad angular al mismo y, por otro lado, la resultante de unadistribucion de fuerzas normales actua sobre el centro de gravedad y no genera momento y por tantorotacion. Se trata de un flujo irrotacional.

Llegados a este punto, conviene definir la vorticidad como el doble de la velocidad angular.

~ω = 2 ~Ω = ∇× ~v (2.9)

Donde ~v es el vector velocidad del elemento fluıdo. Informacion relativa a la relacion de la velocidadangular con el rotacional del campo de velocidades puede verse en el capıtulo 2 de Katz & Plotkin [6].

Para cuantificar matematicamente la evolucion temporal de la vorticidad, se suele tomar el rota-cional de la ecuacion de cantidad de movimiento con su termino convectivo expresado en terminos devorticidad:

∇×[D~v

Dt=∂~v

∂t+∇

(v2

2

)− ~v × (~∇× ~v) = −1

ρ∇p]

(2.10)

De donde, simplificando e introduciendo la ecuacion de continuidad se puede extraer el siguienteresultado (vease Gordillo & Riboux [4] pag. 20 ) :

D

Dt

(~ω

ρ

)=~ω

ρ· ∇~v (2.11)

El termino de la derecha se conoce en la literatura como vortex-stretching y denota que la vorticidadde un elemento fluıdo aumenta al estirarse las lıneas de corriente debido a la disminucion de su seccion

CAPITULO 2. MODELO AERODINAMICO 6

transversal, en definitiva este fenomeno responde a una conservacion del momento cinetico. Se observaque la variacion por unidad de tiempo de la vorticidad es proporcional a su valor instantaneo. Ası,si en el infinito la velocidad de las partıculas es irrotacional, en ausencia de viscosidad y en un flujohomentropico la evolucion del campo de velocidades sera tal que seguira siendo irrotacional en todopunto del mismo.

Por ultimo, la ecuacion de la energıa permite cerrar el problema. Sabiendo que p = p′ + p∞ yρ = ρ′ + ρ∞, introduciendolos en (2.3) y teniendo en cuenta que para pequenas perturbaciones es

valido aproximar(

1 + ρ′

ρ∞

)γ' 1− γ ρ′

ρ∞se concluye que

p′ =γp∞ρ∞

ρ′ = a2∞ρ′ (2.12)

Despejando ahora ∇ · v′ de la ecuacion (2.4) e introduciendo el resultado anterior se obtiene que:

∇ · ~v′ = − 1

ρ∞U∞

∂ρ′

∂x=U2∞a2∞

∂u

∂x= M2

∞∂u

∂x(2.13)

Una vez desarrollada la divergencia y llevados todos los terminos a la izquierda, la ecuacion (2.13)queda:

(1−M2∞)

∂u′

∂x+∂v′

∂y+∂w′

∂z= 0 (2.14)

o, expresando las velocidades de perturbacion en terminos del potencial de velocidades:

(1−M2∞)

∂2φ′

∂x2+∂2φ′

∂y2+∂2φ′

∂z2= 0 (2.15)

Finalmente, introduciendo la condicion de vuelo subsonico bajo (M2∞ 1) se pueden despreciar

los efectos de compresibilidad y la ecuacion de gobierno en terminos del potencial de velocidadesde perturbacion resulta ser la laplaciana, ecuacion bien conocida por numerosas disciplinas que va apermitir ensayar soluciones tipo:

∇2φ′ = 0 (2.16)

Quedan por fijar las condiciones de contorno del problema. Por un lado, se entiende que las per-turbaciones deben ser nulas en el infinito

~v′ = ∇φ′ → 0 en x2 + y2 + z2 →∞ (2.17)

por otro lado, en la superficie exterior del solido inmerso en el flujo se deberıan imponer condicionesde impenetrabilidad y no deslizamiento. El problema es que al despreciar la viscosidad, no se puedeimponer la condicion de no deslizamiento debido a que no existe un mecanismo fısico que permita quese cumpla dicha condicion con lo que solo queda la condicion de impenetrabilidad

~v′ · ~next = 0, ∀ (x, y, z) ∈ FP (2.18)

En la estela, las velocidades seran tal que estara en equilibrio de presiones

u(x, y, z+est) = u(x, y, z−est) ∀ (x, y, z) ∈ E (2.19)

CAPITULO 2. MODELO AERODINAMICO 7

y no haya acumulacion de masa

w(x, y, z+est) = w(x, y, z−est) ∀ (x, y, z) ∈ E (2.20)

Gracias a la linealidad de la ecuacion (2.16) es posible descomponer el potencial de velocidades deperturbacion φ′ como la suma φ′ = φ′e + φ′s simetrico (o de espesor) y antisimetrico (o sustentador).

Ası, se estudiara exclusivamente el problema antisimetrico que es el que aporta las caracterısticassustentadoras del ala y que son el interes de este proyecto. Reincidir en que las soluciones obtenidasno contemplan el espesor del perfil, para ello, una vez resuelto el problema sustentador habrıa quesumar la perturbacion propia al problema simetrico, cuya solucion tendra una naturaleza diferente.

El problema sustentador queda entonces gobernado por:

∇2φ′s = 0 (2.21)

Sujeto a las siguientes condiciones de contorno:

∇φ′s → 0 en x2 + y2 + z2 →∞ (2.22)

∇φ′s · ~next = 0 ∀ (x, y, z) ∈ FP (2.23)

∂φ′s∂x

(x, y, z+est) = −∂φ

′s

∂x(x, y, z−est),

∂φ′s∂z

(x, y, z±est) = 0, ∀(x, y) ∈ E (2.24)

Notar que la normal exterior al solido se puede calcular facilmente a partir de la ecuacion que definela superficie exterior del solido F (x, y, z) = 0 a traves del gradiente de dicha expresion normalizado:

~next =∇F|∇F |

(2.25)

2.2. Resolucion del problema sustentador en alas finitas medianteel metodo Vortex Lattice.

2.2.1. Fundamentos del metodo: distribucion de vorticidad y Ley de Biot-Savart

En el apartado anterior se ha visto que el campo de velocidades buscado debe ser solenoidal eirrotacional:

∇ · ~v = 0 (2.26)

∇× ~v = 0 (2.27)

Observese, de la teorıa de campos electromagneticos, que el campo magnetico ~B(x, y, z) generado porun hilo conductor cerrado a traves del cual circula una corriente de intensidad I, verifica:

∇ · ~B = 0, ∇× ~B = 0

Ademas, su expresion es bien conocida y viene dada por la ley de Biot-Savart, que sera analizada enmayor profundidad al final de la seccion. Por otro lado, tambien se verifica la condicion de nulidad en

CAPITULO 2. MODELO AERODINAMICO 8

el infinito ya que la intensidad de campo segun esta ley es inversamente proporcional a la distanciaentre el conductor y el punto donde se evalua.

Se trata, pues, de un perfecto candidato para modelar el campo de velocidades por analogıa. Ası,la distribucion de vorticidad se modelara mediante una red de cuadrilateros cerrados con intensidadesde torbellino constantes a lo largo de cada uno de los mismos y distribuıdos sobre la superficie decurvatura del ala de manera que automaticamente se verifican las ecuaciones (2.21), (2.22) y (2.24).

Solo queda imponer el cumplimiento de (2.23), para ello, lo que se va a hacer es calcular el campode velocidades generado por la red de cuadrilateros cerrados en una serie de puntos pertenecientes ala superficie de curvatura del ala (posteriormente seran definidos) y se impondra que la intensidad detorbellino de cada cuadrilatero sea tal que cuando se superpone el efecto de todos en uno de los puntosdonde se ha evaluado la velocidad, esta ultima sea tal que verifique la condicion de impenetrabilidad.Al final se llegara a un sistema lineal con tantas ecuaciones e incognitas como puntos se elijan paraevaluar el campo de velocidades.

El problema es que incluso despues de resolver dicho sistema, la solucion no es unica: para el casosustentador la circulacion no esta biunivocamente definida.

A la vista de la figura (2.1), se extrae que para poder generar circulacion en el ala, debe haber unadiscontinuidad en el potencial de velocidades cerca del borde de salida para que:

Γ = φ2 − φ1 6= 0 (2.28)

Figura 2.1: Circulaciones en ala y estela.

Se hace evidente la necesidad de ampliar la distribucion de vorticidad aguas abajo del ala sobrela estela de manera que se aporte dicha discontinuidad al mismo que cumpla con las condiciones deequilibrio de presiones y no acumulacion de masa en la estela explicitadas en (2.24).

Para modelar la estela bajo estas condiciones, lo que se hace es extender los cuadrilateros detorbellinos hasta el infinito a partir del borde de salida de manera que la estela queda mallada en ypero no en x, donde la intensidad permanece constante tal y como se ilustra en la figura(2.2).

CAPITULO 2. MODELO AERODINAMICO 9

Como se ve, en la estela no hay hilos de torbellinos perpendiculares al flujo y por lo tanto, au-tomaticamente se cumplen las condiciones (2.24).

Figura 2.2: Distribucion de vorticidad en ala y estela. Modelos de deflexion.

Por otro lado, ya que apriori no se conoce la posicion de la estela, en primera aproximacion sesupone que la estela abandona el borde de salida justo con el angulo de los ultimos paneles en caday δest(y) = δbs(y). A efectos practicos, se suele tomar la media para ası tener una estela plana, noobstante, se dejara un parametro libre para seleccionar dicho angulo manualmente ya que este condi-cionara cuantitativamente los resultados y en vistas a tomar el que mejor los aproxime en comparacioncon la literatura o otros codigos.

Para tener una idea de como influye la posicion de la estela a los resultados, Katz & Plotkin [6]proponen los resultados de la figura(2.2).

Ya se tiene una distribucion de vorticidad apropiada sobre la forma en planta. Previo paso a laresolucion del sistema de ecuaciones que nos permita conocer la intensidad Γ de cada uno de los anillosde torbellinos (que, por comodidad, van a ser referidos como paneles), se hace necesario implementaruna funcion que dados los puntos del cuadrilatero, permita conocer la velocidad inducida por el mismoen cualquier punto del espacio y para una intensidad unitaria. Esto no es mas que implementar la Leyde Biot-Savart previamente comentada. Debido a su gran importancia en el metodo, se va a procedera detallar su obtencion.

El fluıdo incompresible ha de cumplir la ecuacion de continuidad:

∇ · ~v = 0 (2.29)

La idea es determinar el campo de velocidades que resulta de una distribucion conocida de vorticidad.Para ello, se puede expresar la velocidad como el rotacional de un campo A tal que:

~v = ∇× ~A (2.30)

Entonces, expresando la vorticidad en terminos de ~A y desarrollando el producto triple se tiene:

~ω = ∇× ~v = ∇× (∇× ~A) = ∇(∇ · ~A)−∇2 ~A (2.31)

Ya que el rotacional del gradiente es cero, ~A no esta determinada, de manera que es posible elegirlatal que:

∇ · ~A = 0 (2.32)

CAPITULO 2. MODELO AERODINAMICO 10

Ası, resultarıa la ecuacion de Poisson para ~A:

~ω = −∇2 ~A (2.33)

La solucion de esta ecuacion empleando el teorema de Green (ver Karamcheti [7] pag 533 ) es:

~A(P ) =1

∫V

ω

|~r − ~r0|dV (2.34)

Se esta evaluando ~A en el punto P (a una distancia r del orıgen), como resultado de integrar lavorticidad ω (a r0) en V . Las distancias quedan explicitadas en la figura(2.3).

Figura 2.3: Velocidad en el punto P debida a una distribucion de vorticidad general.

Entonces, el campo de velocidades resulta de aplicar rotacional:

~v =1

∫V∇× ω

|~r − ~r0|dV (2.35)

Es conveniente ahora expresar el integrando en terminos de la circulacion e integrar a lo largo de unvolumen filiforme. Sea un trozo de filamento infinitesimal de vorticidad ~ω como el de la figura(2.4).Tomese ahora la seccion transversal dS perpendicular al vector vorticidad, entonces se puede expresarun diferencial de filamento como:

~dl =~ω

|ω|dl (2.36)

la circulacion, por su parte, es

Γ = ωdS (2.37)

y

dV = dSdl (2.38)

de manera que sustituyendo y aplicando rotacional (manteniendo ~r0 y ~dl constantes) se obtiene:

∇× ~ω

|~r − ~r0|dV = ∇× Γ

~dl

|~r − ~r0|= Γ

~dl × (~r − ~r0)

|~r − ~r0|3(2.39)

CAPITULO 2. MODELO AERODINAMICO 11

Figura 2.4: Velocidad en el punto P debida a una distribucion filiforme de vorticidad.

Recapitulando, ya se tiene el campo de velocidades debido a un elemento de vorticidad filiforme,esto es, de un segmento de vorticidad como los que constituyen la red de cuadrilateros de nuestradistribucion de vorticidad:

~v′ =Γ

∫ ~dl0 × (~r − ~r0)

|~r − ~r0|3(2.40)

Ahora solo queda evaluar la integral de lınea a lo largo del cuadrilatero de la figura(2.5). Lo quese va a hacer es encadenar las integrales de lınea por segmentos, de manera que el campo total creadopor un cuadrilatero sera:

∮ABCD

Γ

4π~dl0 ×

~r − ~r0|~r − ~r0|3

(∫ B

A

~dl0 ×~r − ~r0|~r − ~r0|3

+

∫ C

B

~dl0 ×~r − ~r0|~r − ~r0|3

+

∫ D

C

~dl0 ×~r − ~r0|~r − ~r0|3

+

∫ A

D

~dl0 ×~r − ~r0|~r − ~r0|3

)(2.41)

Figura 2.5: Cuadrilatero de vorticidad.

Con esto, para evaluar (2.41) basta con determinar una expresion que recoja las coordenadas delos puntos iniciales y finales (P y Q) de segmento en cuestion, ası como las del punto donde se pre-tende evaluar el campo de velocidades generado por el segmento y particularizar para cada segmento.Acontinuacion, se van a realizar algunos cambios de variable y relaciones geometricas basados en lafigura(2.6).

CAPITULO 2. MODELO AERODINAMICO 12

Figura 2.6: Definicion de angulos y distancias para el calculo de la velocidad.

El vector ~n es perpendicular al plano formado por OPQ y constante a lo largo de PQ y lleva elsentido dado por Γ , luego es valido sustituir el producto vectorial por el modulo incluyendo el senodel angulo que forman:

~vPQ(~r) =

∫ Q

P

Γ

4π~dl0 ×

~r − ~r0

|~r − ~r0|3= ~n

∫ Q

P

Γ

dl0sinβ

|~r − ~r0|2(2.42)

Se procede a hacer un cambio de variable dl0 → dβ teniendo en cuenta que:

d

l0= tan(π − β) = −tan(β) → l0 = − d

tan(β)→ dl0 =

d

tan2(β)

cos2(β)=

d

sin2(β)dβ (2.43)

donde d = rsin(β). Simplificando y sustituyendo en (2.42) se tiene

~vPQ(~r) = ~n

∫ β2

β1

Γ

1

dsin(β)dβ = ~n

Γ

4πd(cos(β1)− cos(β2)) (2.44)

Para el calculo de β y ~n apoyandose en la figura(2.7) se extrae que:

Figura 2.7: Definicion de vectores para el calculo de β y ~n.

cosβ1 =~rPQ · ~SP|~rPQ||~SP |

(2.45)

cosβ2 =~rPQ · ~SQ|~rPQ||~SQ|

(2.46)

~n =~SP × ~SQ

|~SP × ~SQ|(2.47)

CAPITULO 2. MODELO AERODINAMICO 13

Finalmente, se obtiene la expresion buscada:

~vPQ =Γ

~SP × ~SQ

|~SP × ~SQ|~rPQ ·

(~SP

|~SP |−

~SQ

|~SQ|

)(2.48)

2.2.1.1. Implementacion en BiotSavart3D.m

Para hallar la velocidad en un punto creada por un segmento habra que resolver (2.48). Pararesolver la de un cuadrilatero habra que resolver (2.48) cuatro veces particularizando en cada segmentotal y como se explicita en (2.41). Asımismo, para calcular la velocidad en un punto creada por unconjunto de MxN cuadrilateros, como es el caso de nuestra distribucion de vorticidad para modelar elala, habrıa que resolver (2.48) 4xMxN veces, y todo ello solo para evaluar la velocidad en un punto.Y, por ultimo, para evaluar la velocidad creada por la distribucion de MxN cuadrilateros en MxNpuntos, es necesario resolver la ecuacion 4x[MxN ]2.

Se hace, pues, evidente que la eficiencia de la funcion que resuelva (2.48) dadas las coordenadasde los puntos P, Q y R es crucial para tener un tiempo de computacion asequible. Es por esta razonque se le dedicara especial importancia para reivindicar el aprovechamiento de la potencia vectorialde MATLAB y optimizar el costo computacional.

La funcion

[VPQ, WPQ]=BiotSavart3D_v2(Xr,Yr,Zr,xP,yP,zP,xQ,yQ,zQ)

toma como argumentos las coordenadas (X,Y, Z) de los extremos del segmento P y Q ası como delpunto donde se pretende evaluar la velocidad. Como argumentos de salida devuelve la componenteen Y, vPQ, y en Z, wPQ. La componente en X de la velocidad no sera de utilidad (como se vera masadelante) y aunque su calculo es inmediato, no se calculara para ahorrar operaciones y, en definitiva,tiempo de computacion.

La idea es que todas las operaciones internas de la funcion sean componente a componente enrelacion al punto R donde se quiere evaluar el campo de velocidades. Ası, se permite que la funcionadmita un vector de puntos de evaluacion y devuelva de una vez la velocidad creada por el segmentoPQ en todos los puntos R introducidos. Parece evidente pero en otros codigos de la literatura se sueleevaluar punto a punto lo cual a la hora de generar el sistema de ecuaciones para las intensidades devortices requerira un for adicional.

De esta manera, y en vistas a su funcionalidad para el codigo numerico, las coordenadas de P y Qseran escalares pero las coordenadas de R podran ser tres vectores para caracterizar el conjunto de lospuntos de evaluacion. Ahora bien, aunque la dimension de Xr,Yr,Zr en principio es libre, debera serla misma en las tres entradas.

Por otro lado, la salida tendra precisamente la misma dimension que las coordenadas de los puntosR. A modo de ejemplo, si se quiere evaluar las velocidades en tres puntos (1, 2 y 3), dadas lascoordenadas de los puntos P y Q de un segmento, si se introducen las coordenadas de los puntos Rcomo Xr = [x1, x2, x3], Yr = [y1, y2, y3], y Zr = [z1, z2, z3], entonces las salidas tendran exactamenteesa forma: VPQ = [vpq1, vpq2, vpq3], WPQ = [wpq1, wpq2, wpq3].

Incluir tambien que aunque matlab incorpora funciones especıficas para calcular modulos, pro-ductos escalares y vectoriales, es mas conveniente en terminos de costo computacional y versatilidad

CAPITULO 2. MODELO AERODINAMICO 14

vectorial hacerlo a mas bajo nivel tal y como se observa acontinuacion:

function [VPQ, WPQ]=BiotSavart3D_v2(Xr,Yr,Zr,xP,yP,zP,xQ,yQ,zQ) %

asP=sqrt((Xr-xP).^2+(Yr-yP).^2+(Zr-zP).^2); %Modulos

asQ=sqrt((Xr-xQ).^2+(Yr-yQ).^2+(Zr-zQ).^2);

rPQsP=(xQ-xP).*(Xr-xP)+(yQ-yP).*(Yr-yP)+(zQ-zP).*(Zr-zP); %productos escalares

rPQsQ=(xQ-xP).*(Xr-xQ)+(yQ-yP).*(Yr-yQ)+(zQ-zP).*(Zr-zQ);

sPxsQ_x=(Yr-yP).*(Zr-zQ)-(Zr-zP).*(Yr-yQ); %componente x del producto vectorial

sPxsQ_y=(Zr-zP).*(Xr-xQ)-(Xr-xP).*(Zr-zQ); %componente y del producto vectorial

sPxsQ_z=(Xr-xP).*(Yr-yQ)-(Yr-yP).*(Xr-xQ); %componente z del producto vectorial

modsPxsQ2=(sPxsQ_x.^2+sPxsQ_y.^2+sPxsQ_z.^2);

VPQ=1/4/pi./(modsPxsQ2+10^-12).*(rPQsP./asP-rPQsQ./asQ).*sPxsQ_y;

WPQ=1/4/pi./(modsPxsQ2+10^-12).*(rPQsP./asP-rPQsQ./asQ).*sPxsQ_z;

2.2.2. Generacion del sistema de ecuaciones

Llegados a este punto se asume que el problema es unico y que se ha seleccionado una distribucionapropiada de vorticidad (cuadrilateros de vortices cerrados e intensidad constante por unidad) paramodelar tanto el ala, como la estela para ası cumplir con la condicion de Kutta.

Es ahora momento de definir una serie de puntos de interes dentro de cada panel tomando comoreferencia la figura (2.8):

Puntos de colocacion ~rcol: uno por cada panel situados a 0,75h, son los puntos donde se imponela condicion de contorno, se calculan las normales ~nextij y se evaluaran las magnitudes de interes.

Centros de densidad de circulacion ~rg: uno por cada panel situadios a 0,25h, son los puntos dondese supone concentrada la densidad de circulacion una vez resuelto el sistema de ecuaciones.

Puntos 1234: son el contorno de cada panel, sobre estos se calcularan la cuerda y los puntosABCD que constituiran la verdadera red de vorticidad. La razon por la cual no se superponenunos cuadrilateros con otros y las distancias entre los mismos forma parte del metodo numericoy son tales que se garantiza un resultado coherente con la teorıa empleando un unico panel almismo tiempo que se evitan posibles singulares.

Puntos ABCD: conforman el cuadrilatero singular de la red de vorticidad que se emplea paramodelar el ala. Recordar que para cumplir con las leyes de Helmholtz estos deben ser cerrados(o acabar en el infinito como en el caso de la estela) y deben tener intensidad de torbellinoconstante a lo largo del anillo cerrado.

Lo que se busca ahora es imponer la condicion de contorno como se sigue:

~V · ~n = 0 (2.49)

donde ~V = ~U∞ + ~v′. Desglosando se tiene que

[(U∞x + u′)~ex + ((U∞y + v′)~ey + ((U∞z + w′)~ez] · ~n = 0 (2.50)

CAPITULO 2. MODELO AERODINAMICO 15

Figura 2.8: Influencia de la geometrıa de la estela en los resultados segun [6].

...introduciendo la aproximacion U∞x+u′ ' U∞x realizando el producto escalar y llevando a la derechalos terminos conocidos (Right Hand Side) la ecuacion (2.49) queda:

v′ny + w′nz = −[(U∞xnx + U∞yny + U∞znz] (2.51)

Donde las normales estan determinadas por la geometrıa (incidencias, lınea de curvatura...) y lasvelocidades en el infinito vienen dadas por la condicion de vuelo (angulos de ataque, resbalamiento,rotaciones...). Con esto, las incognitas son v’ y w’.

Como se vio en secciones previas, el campo de velocidades en un punto de colocacion generico(~rcolij ) se puede calcular utilizando la ley de Biot-Savart:

~v′(~r ijcol) =

u′

v′

w′

(~r ijcol) =

M∑k=1

N∑l=1

Γkl4π

[∮ABCD(k,l)

(~r ijcol − ~r0)

|~r ijcol − ~r0)|3

× ~dl0

]=

=

M∑k=1

N∑l=1

~a ijkl Γkl =

M∑k=1

N∑l=1

aiju′,klaijv′,klaijw′,kl

Γkl (2.52)

Donde los terminos ~a ijkl corresponden al campo de velocidades por unidad de intensidad de torbellino

generado por un panel generico (k, l) sobre el punto de colocacion (i, j). En la literatura se conocencomo coeficientes de influencia y pueden calcularse facilmente mediante la funcion BiotSavart3D.m

generada en apartados previos, quedando las intensidades de torbellino como unicas incognitas ennuestro problema.

Introduciendo el resultado anterior en la ecuacion (2.51) evaluada en el punto de colocacion generico(~rcolij ) se tiene:∑

kl

aijv′,kln

ijy + aijw′,kln

ijz

Γkl = −[(U ij∞x

nijx + U ij∞ynijy + U ij∞z

nijz ] = RHS ij (2.53)

Donde para simplificar la notacion se ha llamado a los terminos conocidos de la derecha Right HandSide. Por otro lado, hay MxN incognitas, que son las circulaciones Γkl de cada uno de los cuadrilateros

CAPITULO 2. MODELO AERODINAMICO 16

de vorticidad pero hay tambien MxN puntos de colocacion donde evaluar la ecuacion (2.53), con locual, se tiene un sistema de ecuaciones lineal determinado.

Llegados a este punto, se hace conveniente reenumerar los paneles con un solo ındice en lugar dedos para ası poder resolver el problema matricialmente aprovechando la potencia de MATLAB. Deesta manera, cada fila de la matriz de coeficientes recorrera todos los paneles recogiendo su influenciasobre los puntos de colocacion que se recorren por columnas.

Figura 2.9: Reenumeracion de los paneles para la formacion del sistema de ecuaciones.

El sistema de ecuaciones para imponer la condicion de impenetrabilidad queda

MxN∑K=1

aIv′,Kn

Iy + aIw′,Kn

Iz

ΓK =

MxN∑K=1

AIKΓK = RHS I (I = 1, 2, ...,MxN) (2.54)

que se puede expresar matricialmente

AΓ = RHS (2.55)

Para resolver el sistema, se aprovecharan las depuradas rutinas que aporta MATLAB mediante laorden x=A/b, donde A es la matriz de coeficientes del sistema y b es el vector columna del terminoindependiente (RHS).

El sistema de ecuaciones se monta y resuelve en MATLAB como se sigue:

for I=1:(MxN_tot),

xc1=xCOL_v(I); yc1=yCOL_v(I); zc1=zCOL_v(I);

[VAB_v,WAB_v]=BiotSavart3D_v2(xc1,yc1,zc1,xA_v,yA_v,zA_v,xB_v,yB_v,zB_v);

[VBC_v,WBC_v]=BiotSavart3D_v2(xc1,yc1,zc1,xB_v,yB_v,zB_v,xC_v,yC_v,zC_v);

[VCD_v,WCD_v]=BiotSavart3D_v2(xc1,yc1,zc1,xC_v,yC_v,zC_v,xD_v,yD_v,zD_v);

[VDA_v,WDA_v]=BiotSavart3D_v2(xc1,yc1,zc1,xD_v,yD_v,zD_v,xA_v,yA_v,zA_v);

VABCD_v=VAB_v+VBC_v+VCD_v+VDA_v; WABCD_v=WAB_v+WBC_v+WCD_v+WDA_v;

V_eq_v=(WABCD_v).*nz_v(I)+(VABCD_v).*ny_v(I);

A(I,1:(MxN_tot))=V_eq_v; % Matriz de coeficientes de influencia

bv(I,1)=-(Uinf_tot(1,I)*(nx_v(I))+Uinf_tot(2,I)*(ny_v(I))+Uinf_tot(3,I)*(nz_v(I))); % RHS segun Katz

end

%%%%%%%%%%%%%%%%%%%%%%%% SOLVER

Gammasol(1:(MxN_tot),1)=A\bv;

%%%%%%%%%%%%%%%%%%%%%%%%

CAPITULO 2. MODELO AERODINAMICO 17

2.3. Densidades de circulacion y cargas aerodinamicas

En esta seccion se detallara el tratamiento de la solucion del sistema (2.55), es decir, ya se conocecual ha de ser la intensidad de cada cuadrilatero de torbellinos tal que la velocidad inducida por elconjunto de los mismos sobre todos y cada uno de los puntos de colocacion cumpla con (2.49), peroahora se hace necesario organizar esta informacion para obtener resultados de interes.

En primer lugar se ha de reconstruir una matriz Γkl a partir de ΓK , lo cual se puede conseguirfacilmente recorriendo la matriz e introduciendo termino a termino teniendo en cuenta que se cumplela siguiente relacion

K = (k − 1) ∗N + l (2.56)

A la hora de evaluar las densidades de circulacion γ(x, y) = ∂Γ/∂x(x, y) se va a considerar unahilera de paneles correspondientes a un mismo j y se tomaran cocientes incrementales tal y como seesquematiza en la figura (2.10). Notar que se estan suponiendo las densidades de circulacion concen-tradas en los puntos de centrado de torbellinos.

Figura 2.10: Calculo de las densidades de circulacion.

El resultado anterior no es valido para los paneles que estan en el borde de ataque (i = 1) ya queno hay torbellinos por delante del borde de ataque, la corriente es libre y no hay discontinuidadesluego es valido asumir que la densidad de circulacion en este tipo de paneles es

γ1j =Γ1j

h1j(2.57)

Llegados a este punto y antes de acometer el calculo de las cargas aerodinamicas de interes, resultainteresante implementar el modelo para una geometrıa sencilla y representar las densidades de circu-lacion para poder verificar que cualitativamente el comportamiento es el esperado como se hace en lafigura (2.11).

Efectivamente, se aprecia el comportamiento esperado: en la zona central las densidades de circu-lacion son mayores y van cayendo al acercarse al borde marginal debido al efecto de rebordeo, el picode succion se da en el entorno del borde de ataque y no hay singularidades o discontinuidades cercadel borde de salida.

CAPITULO 2. MODELO AERODINAMICO 18

Figura 2.11: Calculo de las densidades de circulacion.

Una vez se han verificado las tendencias de la solucion, es momento de proceder al calculo de lascargas y coeficientes aerodinamicos de interes.

Para calcular la sustentacion, es util apoyarse en la figura (2.12), donde se ha tomado como re-ferencia unos ejes viento. Tambien es necesario tener en cuenta que de la ecuacion de cantidad demovimiento puede extraerse que p + ρ∞U∞u

′ = cte. A traves de esta relacion se puede relacionarel campo de presiones con el campo de velocidades de perturbacion, y este, gracias al caracter anti-simetrico del problema se puede relacionar con la circulacion teniendo en cuenta que

Γ (x, y) =

∫ x′

0[uE(x′, y)− uI(x′, y)]dx′ → γ(x, y) =

∂Γ

∂x= uE(x, y)− uI(x, y) (2.58)

Incluyendo las consideraciones previas en el balance de presiones sobre la superficie del ala, y pro-yectando sobre la direccion perpendicular al flujo incidente (~n · ~kw = nWz ) se obtiene la sustentacioncomo

L =

∫FP

(pI − pE)nWz dσ = ρ∞U∞

∫FP

nWz [uE − uI ]dσ = ρ∞U∞

∫FP

nWz γdσ (2.59)

y discretizando la integral sobre los paneles ası como anadiendo la contribucion de la succion de bordede ataque de la paradoja de Cisotti se recupera la formula de Kutta:

L = ρ∞U∞∑ij

γijSpij (2.60)

donde Spij es la superficie de cada panel.

Figura 2.12: Calculo de la sustentacion.

CAPITULO 2. MODELO AERODINAMICO 19

Asımismo, adimensionalizando se obtiene el coeficiente de sustentacion:

CL =L

12ρ∞U

2∞S

(2.61)

donde S es la superficie total.

Del mismo modo se pueden calcular momentos y sus respectivos coeficientes pero habra que in-troducir nuevos puntos de referencia y distribuciones de presion asimetricas. Todo esto se tratara ensecciones posteriores aprovechando la incorporacion de geometrıas mas complejas (incluyendo superfi-cies de control, derivas...) ası como condiciones de vuelo con resbalamiento y rotaciones. No obstante,se hace incapie en que lo dicho hasta ahora funciona de forma general para cualquier geometrıa y con-dicion de vuelo ya que la informacion va implicita en los puntos del mallado, normales y componentesde la velocidad en el infinito.

Especial atencion merece la distribucion de sustentacion a lo largo de la envergadura, lo cual daidea de como evoluciona la carga en los perfiles y de cuan grandes seran los momentos flectores enel encastre. Para ello se generaran unas lıneas intermedias entre cada j, j + 1 donde se evaluaran losresultados tal y como se observa en la figura (2.13)

Figura 2.13: Lıneas intermedias en j para evaluar la circulacion.

Una vez definidas las lıneas medias, solo queda integrar las densidades de circulacion a lo largo deestas:

Γ (ymed,j) =

∫ xbs(j)

xba(j)γdx =

M∑i=1

γijhij (2.62)

donde x[ ](j) = 12(x[ ](j − 1) + x[ ](j)). Por otro lado, la distribucion de coeficientes de sustentacion es

Cl(y) =l(y)

12ρ∞U

2∞c(y)

=2Γ (y)

U∞c(y)(2.63)

En la figura (2.13) tambien se pueden observar las distribuciones de circulacion para alas condistintos alargamientos en comparacion a la distribucion elıptica o ideal. Notar que, a medida queaumenta el alargamiento, los efectos de rebordeo (caıda de la circulacion) quedan cada vez confinadosa una region mas pequena en el entorno de las puntas. Esto supone que, para grandes alargamien-tos, la mayor parte de los perfiles estarıan viendo un flujo bidimensional y siendo despreciables lascomponentes de perturbacion transversal.

CAPITULO 2. MODELO AERODINAMICO 20

2.4. Resistencia Inducida

De las secciones previas se extrae el campo de vorticidad es solenoidal:

∇ · ~ω = ∇ · (∇× ~v) = 0 (2.64)

Sea el volumen diferencial ∂ωf de la figura (2.14), que en x se extiende desde el borde de ataque hastael borde de salida. A la vista de la ecuacion (2.64) se cumple que

0solen

=

∫∫∫∂ωf

∇ · ~ω dωGauss

=

∫∫∂σf

~ω · ~n dS =

∫∫∂σf

(∇× ~v) · ~n dS Stokes=

∮∑6

i=1 dCi

~v · ~dl =

6∑i=1

Γi = 0 (2.65)

Figura 2.14: Continuidad de la vorticidad.

El resultado anterior implica que la circulacion neta sobre el conjunto de las aristas que delimitanla superficie ∂σf que encierra a ∂ωf ha de ser nula. Por otro lado, la circulacion sobre el contorno de lassuperficies 2, 3 y 5 es nula ya que no son atravesadas por ningun hilo de torbellinos al no intersectara la superficie de curvatura donde se han distribuıdo los paneles. Con esto, solo son de interes lassuperficies 1, 4 y 6 en el sentido en que la circulacion neta ha de ser nula.

El torbellino de estela amortigua las variaciones de circulacion en y para cumplir (2.65) y cuyovalor, segun la nomenclatura de la figura(2.14) es

Γest = Γ (y0 + dy0)− Γ (y0) =∂Γ

∂y0dy0 (2.66)

de manera que, ası, se consigue relacionar la intensidad de los torbellinos de la estela con las variacionesen y de la circulacion.

CAPITULO 2. MODELO AERODINAMICO 21

La resistencia inducida de origen exclusivamentepotencial y se debe a la componente de perturbacionvertical que los torbellinos de la estela, debidos a losefectos tridimensionales, inducen en el flujo. Como setrata de un problema subsonico, lo que pasa aguasabajo se transmite aguas arriba, y el borde de ata-que ve un flujo con un angulo de ataque menor. Estohace que la sustentacion tenga una componente en ladireccion X viento, que no es mas que el termino deresistencia inducida.

Utilizando el esquema de la derecha, empleando laformula de Kutta para la sustentacion de cada perfilen ’y’ y modelando el ”downwash”por una distribu-cion continua de torbellinos en la estela, se concluyeque para toda la envergadura la resistencia inducidase calcula como se sigue:

Di =

∫ b2

− b2

di(y)dy =

∫ b2

− b2

l(y)tan(αi(y))dy '∫ b

2

− b2

l(y)αi(y)dy =

∫ b2

− b2

ρ∞U∞Γ (y)αi(y)dy (2.67)

donde: αi(y) ' wi(y)

U∞=

∫ b2

− b2

∂Γ∂yo

dy0

y − y0(

1

4πU∞) (2.68)

con lo que... CDi =Di

12ρ∞U

2∞S

=1

2πU∞S

∫ b2

− b2

Γ (y)[

∫ b2

− b2

∂Γ∂yo

y − y0dy0]dy (2.69)

En el desarrollo se ha tenido en cuenta que la intensidad de los torbellinos (semiinfinitos, de ahı quedivida por 4π) de la estela esta relacionada con la derivada en y de la circulacion en los perfiles segunla ecuacion (2.66). Notar, tambien, que las aproximaciones tenidas en cuenta son tanto mas exactascuanto mas pequeno sea α.

Otra forma de obtener la resistencia inducida es mediante el Metodo de Trefftz (veaseKaramcheti [7] pag.554 ).

Aunque ya es factible obtener un resultado por cuadratura numerica, para resolver (2.69) analıti-camente, historicamente se ha hecho el cambio de variables y = − b

2cos(θ). Gracias a este cambio,se tiene que la circulacion se anula en θ = 0 y θ = π, de manera que puede aproximarse como unacombinacion lineal de infinitos armonicos en una serie de Fourier:

Γ (θ) =

n=∞∑n=0

ansin(nθ) (2.70)

CAPITULO 2. MODELO AERODINAMICO 22

Aplicando el cambio de variables e introduciendo el desarrollo en serie de Γ se llega a una integralde Glauert, y simplificando queda:

CDi=πΛ

4

∞∑n=1

na2n =C2L

πΛ(1 +

∞∑n=2

na2na21

) (2.71)

ya que, de la misma manera... L =1

2ρ∞U

2∞b

2∞∑n=1

∫ π

0sin(nθ)sin(θ)dθ =

π

4ρ∞U∞ba1 (2.72)

... y, por lo tanto: CL =L

12ρ∞U2

∞S=πΛ

2a1 (2.73)

Cuando la forma en planta es elıptica, y para alas rectas y sin torsion (planas), la distribucion decuerdas a lo largo de la envergadura es de la forma c(θ) = sin(θ) y ası, se pueden hallar los coeficientesde Fourier de la circulacion de manera teorica aplicando directamente la condicion de impenetrabilidaden θ y teniendo en cuenta el angulo de ataque inducido (expresion conocida como ecuacion del alalarga de Prandtl). Ası, se puede demostrar que para este tipo de geometrıa el unico coeficiente distintode cero es el primero, luego la distribucion de Γ es un seno en θ y elıptica en y, la misma formatendra la distribucion de sustentacion, que es proporcional por la formula de Kutta.

Figura 2.15: Distribucion de velocidades longitudinales en extrados para forma en planta elıptica. Seobserva la homogeneidad trasnversal que hace que no haya flujos transversales significativos.

Otra manera de justificar el buen aprovechamiento del flujo con la geometrıa en planta elıpticaes que se cumple que el angulo de ataque inducido se mantiene constante en la envergadura, estohace que los gradientes de presion en y sean practicamente nulos y no haya flujos transversales. En laFigura(2.15) se puede observar que se cumple esa homogeneidad transversal de presiones (o velocidadesu).

Teniendo en cuenta entonces la ecuacion(2.71), se concluye que para esta geometrıa el CDi es elmınimo ya que el sumatorio del parentesis es siempre mayor o igual que 0 y en este caso se anula.

Ante esta situacion, se define el parametro de eficiencia de Oswald, que representa el ratio entre laresistencia inducida generada por un ala ideal con distribucion de sustentacion elıptica y un ala realcon el mismo alargamiento.

e =CidealDi

CrealDi

=1

1 +∑∞

n=2 na2na21

< 1 (2.74)

23

Capıtulo 3

Implementacion

Una vez detallado el modelo aerodinamico que se va a emplear y recordando que se ha formulado demanera generica en funcion de la geometrıa y condiciones del flujo, es ahora momento de implementarloen una serie de funciones que abarquen los siguientes aspectos:

Crear geometrıas en planta complejas multicajon y situarlas en cualquier punto del espacio.

Incluir superficies de control e hipersustentadoras.

Utilizar lıneas de curvatura de perfiles reales a partir de archivos .dat

Representar tridimensionalmente las geometrıas creadas.

Proveer al usuario datos geometricos de interes sobre la geometrıa creada.

Incluir derivas para analisis de estabilidad.

Incluir condiciones de vuelo complejas con resbalamiento y rotaciones.

Solucionar el problema aerodinamico multiala teniendo en cuenta las interferencias entre lasdistintas superficies y deflexiones de estela.

Generar resultados aerodinamicos de interes a partir de la solucion y la geometrıa.

Estas funciones, por lo general tomaran estructuras de datos de entrada y generaran las propiasde salida. La idea es que el usuario conozca su funcionamiento para poder utilizarlas a modo librerıapara generar codigos que se adapten a sus necesidades.

Pensando en el usuario que no se va a detener en el funcionamiento interno, a mas alto nivel, secreara un interfaz grafico mediante el modulo Graphic User Interface que MATLAB incorpora. Dichointerfaz integrara una serie de modulos que iran llamando a las distintas funciones segun las utilidadesque se consideren oportunas.

La filosofıa basica que se seguira en el diseno de la arquitectura global, consistira un codigo quevaya generando archivos con distintos tipos de estructuras, de manera que en cualquier momento, eldisenador puede irse a un modulo concreto, hacer modificaciones, sobreescribirlas y finalmente cargarel nuevo archivo en el modulo que corresponda.

CAPITULO 3. IMPLEMENTACION 24

En terminos generales, el codigo se estucturara en torno a tres nucleos basicos claramente diferen-ciados:

Para relacionar los modulos, se ha creado una ventana base a modo menu principal tal y como semuestra.

A continuacion, se procede a ir detallando nucleo a nucleo, con sus respectivas funciones e interfaces.

CAPITULO 3. IMPLEMENTACION 25

3.1. Preprocesador

Sin duda, este es el modulo que va a aportar al codigo la mayor versatilidad. Debe incorprarfunciones formuladas con total generalidad para que generen la geometrıa y mallado de cualesquierasean los datos que el usuario introduzca.

En una primera aproximacion, se genero un codigo que generaba un ala, con un numero fijo dedos cajones, cuya geometrıa sı era configurable. Acto seguido, se planteo la posibilidad de podergenerar n alas, con k cajones, de manera que cada ala, como ente independiente, tuviera su posicionen el espacio, pudiera ser simetrica o no simetrica y que la geometrıa de cada cajon fuera totalmentegeneral y configurable en terminos de estrechamiento, flecha, proporcion de envergadura que ocupa ylocalizacion, diedro, superficie de curvatura y superficies de control.

En las siguientes secciones se detallara el proceder de las funciones empleadas, no tanto a nivel deprogramacion, pero sı a nivel de estructura, interfaces y operacion. Cuando sea necesario, se incluiranporciones especıficas de codigo, pero el lector interesado en acceder al codigo en su conjunto siemprepuede hacerlo en el Anexo, al cual se ira remitiendo en los distintos puntos a tratar.

3.1.1. Funcion create wing.m

CAPITULO 3. IMPLEMENTACION 26

Lo primero que hay que tener claro, son los interfaces de entrada y salida con los que trabaja lafuncion. Al tratarse de tantas variables, pero que se repiten a modo patron, se ha decidido aprovecharlas estructuras de datos y cell arrays que ofrece MATLAB. El lector interesado en esta versatil formade mover datos y variables queda remitido al capıtulo 7 de Chapman [1].

A la vista de la figura anterior, se extraen dos tipos de estructuras:

1. Las estructuras tipo input recogen los parametros geometricos de entrada que la funcion create wing.m

necesita para definir el ala en cuestion y sus cajones. Se aprecia que tanto input como cajon

llevan un ındice, lo cual implica que son estructuras multiples, es decir, se pueden rellenar losmismos campos con distintos datos segun con que ındice se trabaje. Por ejemplo, si el usuarioquiere generar un solo ala, basta con que rellene los campos de la estructura correspondientesa input(1). Una vez rellena la estructura, si quiere anadir una nueva ala simplemente tendrıaque rellenar los campos para input(2), y ası sucesivamente.

Los cajones funcionan con el mismo mecanismo. Cada ala, puede tener n cajones siempre ycuando en su estructura input se rellenen los campos de los correspondientes cajones. A modode ejemplo, input(2).cajon(3).Died serıa el campo de la estructura asociado al angulo dediedro del tercer cajon del segundo ala.

Notese la ardua tarea que supondrıa generar el input rellenando campo a campo para lo cualse han propuesto dos soluciones:

Un script modelo generico que el usuario rellena y puede extender copiando y pegando laporcion correspondiente al cajon y actualizando el ındice del que se trate. Se trata de unamanera muy versatil y rapida de generar la estructura ya que los campos quedan guardadosy estan listos para ser modificados al ejecutar el script. Vease anexo A.1

Un interfaz grafico donde el usuario va introduciendo los parametros y al ir anadiendocajones el ala se va creando y representando interactivamente de manera que el usuariotiene realimentacion de lo que esta creando y puede corregir los campos sobre la marcha.En capıtulos posteriores se detallara el funcionamiento de este.

2. Las estructuras tipo ala pierden el caracter multiple por cajones y pasan a almacenar los parame-tros geometricos por vectores de manera que la componente k es el parametro correspondienteal cajon k. Asimismo, y como salida a la funcion que es, provee las matrices con las matricesde puntos xv, yv y zv que determinan los vectores de posicion de cada uno de los puntos queconforman el mallado.

En cuanto a su funcionamiento, create wing.m en primer lugar pregunta a la estructura de en-trada por el numero de cajones que desea el usuario, y a partir de aquı, vuelca las variables de cadasubestructura input.cajon(k) en la componente k de un vector con el mismo nombre para ası po-der trabajar mas comodamente. Digamos que en un primer paso la funcion recibe la estructura deentrada y la transforma en variables internas con las que podra operar mejor. Acto seguido, mediantela funcion NACA v2.m (Vease anexo A.2 ) se introduce una estructura con los datos geometricos delperfil seleccionado del archivo .dat con los puntos del mismo.

En este punto hay una bifurcacion en funcion de si se trata de un ala simetrica o tipo estabilizadorvertical. A partir de este punto se tomara la rutina ala simetrica por ser el caso mas general, si bien,al final se comentaran algunos aspectos concretos del otro caso.

CAPITULO 3. IMPLEMENTACION 27

Tomando como base la figura (3.1) es ahora momento de generar un span de puntos de resolucionen la direccion transversal. El problema es que los puntos no seran equiespaciados a lo largo de laenvergadura pero sı en cada cajon. La idea es ir generando, cajon a cajon, un linspace en y desdeel punto inicial hasta el final y con la resolucion introducida para cada cajon Nc(k), de manera queal final, se encadenaran en un vector global para recorrer la envergadura. Lo mismo se hara con laley de torsion, al ındice final de cada cajon le sera asociado un angulo de incidencia de manera quese generara un linspace de incidencias por cajon y posteriormente seran encadenados en un vectorglobal de incidencias que recorre la envergadura.

Figura 3.1: Discretizacion no uniforme a lo largo de la envergadura.

Para generar la geometrıa, los cajones se iran recorriendo a partir del eje de simetrıa en direccionY +. Una vez generado la semiala positiva, se procedera a rellenar las componentes de los vectorescorrespondientes a los cajones negativos, para lo cual se aprovechara la simetrıa del problema. Sehace necesario entonces defininir los ındices justo al final de cada cajon teniendo en cuenta que porcada linspace que se encadena, se pierde un punto de resolucion (el final del anterior solapa con elprincipio del siguiente):

ind0 = 2

ncajones∑k=1

Nc(k)− (2ncajones − 1) (3.1)

ind(k) = ind(k − 1) + (Nc(k)− 1) (3.2)

ind neg(k) = ind neg(k − 1)− (Nc(k)− 1) (3.3)

El primer cajon, que abarca desde ind 0 a ind(1) ha de tratarse a parte ya que no se puedeindexar la componente 0 de un vector. Pero a partir del segundo cajon, se implementara un for hastael cajon final de manera que en cada iteracion:

Se asociara el span de puntos del cajon a sus respectivas componentes en el vector global de yque recorre la envergadura. Lo mismo se hace con las incidencias.

Una vez haya resolucion en y, ya es posible definir los puntos de borde de ataque y de salida delcajon como funcion de y.

CAPITULO 3. IMPLEMENTACION 28

Para definir la geometrıa de cada cajon, conviene tener en cuenta la figura (3.2).

Figura 3.2: Geometrıa de cajon generico.

Se observan los ındices y parametros de un cajon generico y se han empleado las mismas etiquetasque las propias variables en el codigo para facilitar la identificacion. Se esta ya en condiciones deplantear las ecuaciones que definen el borde de ataque y de salida del cajon k. Una vez definidos, sedispone de los lımites para generar resolucion en x para cada lınea y = cte.

El borde de ataque a lo largo del cajon k queda facilmente determinado como

xak(y) = xaind(k−1)+ y tan(ψk) (3.4)

Para determinar el borde de salida, es necesario tener en cuenta que

E(k) =ct(k)

cr(k)(3.5)

Por otro lado, la cuerda en la raız del cajon k es la cuerda en la punta del cajon k − 1, con lo cual,por recurrencia, la cuerda en la raız del cajon k puede expresarse en funcion a la cuerda en la raız delala como

cr(k) = cr

k−1∏n=1

E(k) (3.6)

ct(k) = cr(k)E(k) (3.7)

Ahora simplemente queda generar una ley de estrechamiento lineal en y tal que se cumplan las con-diciones anteriores:

xsk(y) = xak(y) +Aky + Ck (3.8)

donde Ak = cr(k)(E(k)−1)yind(k)−yind(k−1)

, Ck = cr(k)−Akyind(k−1)

CAPITULO 3. IMPLEMENTACION 29

Una vez generada el semiala positiva, se procede a rellenar las componentes de los cajones de laparte negativa por simetrıa como se sigue:

y(1:(ind_0-1))= -y(end:-1:(ind_0+1));

alpha_span(1:(ind_0-1))= alpha_span(end:-1:(ind_0+1));

xa(1:(ind_0-1))= xa(end:-1:(ind_0+1));

xs(1:(ind_0-1))= xs(end:-1:(ind_0+1));

Notar que esta forma de trabajar confiere un gran ahorro en costo computacional a la funcion frente a la posibilidad de recorrertodo el ala de principio a fin calculando las variables. De hecho, este ultimo paso es muy rapido porque MATLAB trabaja muybien con la indexacion y asignacion multiple.

Ya se dispone de todo el contorno del ala y resolucion en y, ahora solo queda ir recorriendo cadalınea y = cte generando en cada una de ellas un linspace que vaya desde el borde de ataque alborde de salida con los M puntos seleccionados por el usuario. Acontinuacion, se procede a generarlas matrices del mallado en forma compacta premultiplicando por matrices de unos con la dimensionapropiada.

%% Mallado en x

for j=ind_0:N, % Parte positiva

xv(:,j)=linspace(xa(j),xs(j),M);

end

xv(:,1:(ind_0-1))=xv(:,(N:-1:(ind_0+1))); % Parte negativa

%% Mallado en y

yv=ones(M,1)*y; % Generacion la matriz de forma compacta.

%% Angulos de ataque segun la ley de torsion

alpha=ones(M,1)*alpha_span; % Forma compacta

Llegados a este punto, ya se han generado de las matrices con los puntos de resolucion X,Y sobre laforma en planta, ahora solo queda obtener las coordenadas Z como funcion de los anteriores. Lo quese hara es ir sumando los offsets correspondientes a:

Diedro

Incidencia

Superficies de control

Superficie de curvatura

En primer lugar, se anade la componente debida al diedro, que al variar en y es el caso mas crıtico.Como el diedro varıa en cada cajon, lo que se va a hacer es ir recorriendo cajon a cajon con un bucleen y de manera que para el cajon k se tiene que

Z(∀x, y)k = z0k + (y − y0k) tan(Diedk) (3.9)

donde z0k =z(:,ind(k)) e y0k =y(ind(k)), conocidos del cajon anterior.

Una vez se ha subido la componente debida al diedro, es ahora momento de completar la depen-dencia con x en las componentes debidas a la incidencia, curvatura y superficies de control.

CAPITULO 3. IMPLEMENTACION 30

La idea es mediante un bucle exterior (k), ir recorriendo los cajones, un segundo bucle internoj recorre los puntos y que vendran dados por el cajon actual. Por ultimo, un tercer bucle interior i

recorre los puntos en x.

Ası, se pude concluir que:

Z(x, y)k = ZDiedk(y)− tan(alpha(y))(x− xak(y)) + Zcurv + Zsupcontk (3.10)

Para abordar el termino de curvatura, y puesto que el archivo .dat solo incorpora los puntos parauna cuerda generica unitaria, lo que se ha hecho es implementar una funcion scale NACA(perfil,xa,xs,x)

que recoje la estructura de salida de NACA v2.m con la informacion del perfil y reescala los puntos dela lınea de curvatura a la cuerda dada por los bordes de ataque y de salida del perfil actual. Por otrolado, se interpola con splines para obtener la ordenada correspondiente al punto x introducido. Paramas detalle sobre la funcion, vease el Anexo A.3.

En cuanto al termino de las superficies de control:

Zsupcont,k =

(x− xch,k)tan(δk) si (x, y) ∈ A/F

0 en otro caso(3.11)

Figura 3.3: Coordenadas Z de un cajon generico dadas por create wing.m.

Para implementar la ecuacion (3.11) en lugar de establecer condiciones if lo que se hace es mul-tiplicar el termino por una condicion logica de manera que si los ındices quedan dentro de la regionA/F el resultado es 1 y si no, el resultado es 0 y la contribucion del termino es nula:

% % Cajones k positivos

for j=(ind(k)+1):ind(k+1)

for i=1:(M),

zv(i,j)=zv(i,j)...

-tan(alpha(i,j)).*(xv(i,j)-xa(j))... % Angulo de ataque

+scale_NACA(perfil,xa(j),xs(j),xv(i,j))... % Curvatura

+(xv(i,j)-xv(x_ch(k+1),j))*tan(deflex(k+1))*... % Sup_control(k)

... % Condicon logica

((i>x_ch(k+1)) && ( (j>ind(k)+pos_min(k+1)) && (j<ind(k)+pos_max(k+1)) ) ); %Condicion Sup_control [0/1]

end

end

CAPITULO 3. IMPLEMENTACION 31

Se aprecia que la condicion logica no esta en base a distancias x o y sobre la forma en planta, sinoen terminos de los ındices que recorren el cajon en cada una de las direcciones. Con esto, aunque sepierde un control directo sobre las dimensiones absolutas de las superficies de control, se simplificamucho el codigo ya que el contorno de A/F va a coincidir con puntos de resolucion. De no ser ası,habrıa que forzar la coincidencia remallando lo cual resulta una tarea ardua e innecesaria para estosniveles del diseno.

Por otro lado, gracias a esta solucion se aprovecha la ley de estrechamiento natural del cajon en lasuperficie de control, esto es, si xch = 80 % la condicion solo saltra cuando el for en i haya recorridoel 80 % de los puntos a lo largo de la cuerda teniendo en cuenta, ası, su estrechamiento.

Para conseguir que pos min y pos max sean enteros y puedan funcionar como ındices, lo que sehace es multiplicar el porcentaje que el usuario introduce por el numero de puntos de resolucion delcajon pero con formato int8. Ası, al operar por ese numero el resultado propaga el formato y se sigueteniendo un entero con 8 bits.

Una vez subidas las coordenadas Z de los cajones positivos, solo queda recorrer los negativos yrellenarlas de manera simetrica a excepcion de los cajones con superficies de control de deflexionasimetrica.

El procedimiento seguido para rellenar los negativos es el siguiente. En cada iteracion exterior paraseleccionar el cajon (for k), primero se rellenan las coordenadas Z del cajon positivo y a continuacionse rellenan las del negativo simetrico, y ası desde el eje de simetrıa hasta los bordes marginales. Laclave esta en que antes de pasar al negativo se modificara el valor de la deflexion al opuesto si se tratade un aleron o se quedara igual si se trata de un flap.

%% Cajones k negativos

if aileroned(k+1)==1; % Si es aleron, toma deflexion antisimetrica

deflex_neg(k+1)=-deflex(k+1);

else

deflex_neg(k+1)=deflex(k+1);

end

for j=(ind_neg(k)-1):-1:ind_neg(k+1),

for i=1:M

zv(i,j)=zv(i,j)...

-tan(alpha(i,j)).*(xv(i,j)-xa(j))...

+scale_NACA(perfil,xa(j),xs(j),xv(i,j))...

+(xv(i,j)-xv(x_ch(k+1),j))*tan(deflex_neg(k+1))*...

...

((i>x_ch(k+1)) && ( (j<ind_neg(k)-pos_min(k+1)) && (j>ind_neg(k)-pos_max(k+1)) ) );

end

end

Una vez se han subido todos los puntos Z tanto de los cajones positivos como negativos, es momentode sumar los offsets correspondientes para situar el ala en la posicion introducida por el usuario.

Por otro lado, queda por comentar la subrutina de estabilizador vertical o ala no simetrica. Sehace practicamente lo mismo pero sin ir rellenando los cajones negativos. Al final se intercambian lascoordenadas y por z para que la superficie sea vertical.

CAPITULO 3. IMPLEMENTACION 32

3.1.2. Funcion show wing.m

Se hace evidente la necesidad de una funcion que permita al usuario obtener una representaciontridimensional de la geometrıa que esta generando, y en la que se aprecien con claridad las dimensionesde las posibles superficies de control.

La funcion show wing toma como argumento de entrada una estructura tipo ala y ademas debeser no multiple. Esto implica que si en la estructura ala se han almacenado varias alas (ala(1),ala(2),..., ala(n)) para poder representarlas hay que ir llamando a la funcion show wing una poruna como se sigue: show wing(ala(1)), show wing(ala(2)),...,show wing(ala(n)). Para repre-sentarlas todas en la misma figura, el usuario puede emplear la instruccion hold on.

A mas alto nivel, en el Graphic User Interface, se recurrira reiteradamente a esta funcion y otras va-riantes de esta como show wing embebed.m o show wing figdef.m que no anaden mas que pequenasmodificaciones del nucleo central de la funcion para concretar donde y como se va a representar lafigura.

MATLAB ya incorpora funciones especıficas como mesh o surf muy utiles para representar tridi-mensionalmente una serie de puntos, con lo cual, a primera vista, el problema es trivial puesto que yase dispone de los puntos (X,Y, Z) con los que se ha mallado el ala.

El problema es que de hacerlo ası directamente, no se consigue una diferenciacion clara de lassuperficies de control. Es por esto que se propone un codigo que vaya recorriendo el ala cajon porcajon, buscando la superficie de control y representandola en otro color.

Se trata de una tarea ardua ya que para emplear un unico color se procede a utilizar mesh pero conCDataMapping directo. Para ello, hay que ir generando unas matrices de colores (que seran almacenadasen un cell array) con las dimensiones exactas de la porcion que se quiere representar.

Para aclarar el procedimiento, se incorporan las lıneas de codigo del nucleo central de la funcion:

for k=1:(n_cajones-1),

Colork=40*ones(M-x_ch(k+1)+1,(pos_max(k+1))-(pos_min(k+1))+1);

if flapped(k+1)==1

hold on,

mesh(xv(x_ch(k+1):M,(ind(k)+pos_min(k+1)):(ind(k)+pos_max(k+1))),...

yv(x_ch(k+1):M,(ind(k)+pos_min(k+1)):(ind(k)+pos_max(k+1))),...

zv(x_ch(k+1):M,(ind(k)+pos_min(k+1)):(ind(k)+pos_max(k+1))),...

Colork,’CDataMapping’,’direct’)

if st_vert==0,% Si no es un estb_v hacemos el simetrico

mesh(xv(x_ch(k+1):M,(ind_neg(k)-pos_max(k+1)):(ind_neg(k)-pos_min(k+1))),...

yv(x_ch(k+1):M,(ind_neg(k)-pos_max(k+1)):(ind_neg(k)-pos_min(k+1))),...

zv(x_ch(k+1):M,(ind_neg(k)-pos_max(k+1)):(ind_neg(k)-pos_min(k+1))),...

Colork,’CDataMapping’,’direct’)

end

end

end

No obstante, el lector interesado en acceder al codigo completo queda direccionado al Anexo A.4.

CAPITULO 3. IMPLEMENTACION 33

3.2. Solver

El objetivo de este nucleo es aportar una serie de funciones que, partiendo de la geometrıa intro-ducida por el usuario y almacenada en su respectiva estructura tipo ala, permitan:

Generar las matrices de puntos y magnitudes de interes (vertices de paneles [1,2,3,4] y [A,B,C,D],puntos de colocacion, puntos centrado de torbellinos, vectores normales, superficie por panel...)necesarios para el metodo Vortex-Lattice. Vease figura (2.8).

Unificar las matrices anteriores de diversas alas encadenandolas por filas en vistas a la formacionde un unico sistema de ecuaciones global que pueda incluir varias alas dispuestas en el espaciopara, ası, tener en cuenta las deflexiones de estela.

Generar la matriz de coeficientes A del sistema (2.55) mediante los coeficientes de influencia decada panel.

Aportar las condiciones de vuelo (incluyendo un modelo de atmosfera ISA) para caracterizar eltermino independiente RHS.

Resolver el sistema de ecuaciones global y reconvertir la solucion al formato matricial por cadaala.

Calcular las densidades de circulacion en cada ala, y con estas, calcular fuerzas, momentos ycoeficientes de interes.

Todo ello tendra que ser implementado con total generalidad para dar respuesta a cualquier disenodel usuario.

3.2.1. Funcion lattice all.m

Esta funcion sera la encargada de recibir una estructura (multiple o no) tipo ala para, a partir deella, generar una estructura tipo lattice no multiple, pero que contendra todas las matrices con lospuntos (1, 2, 3, 4), (A,B,C,D), puntos de colocacion y puntos de centrado de torbellinos en cada panel,ası como los vectores normales y superficies, y todo ello para cada ala de la estructura de entrada.Para abordar las multiples alas de forma automatica, la funcion aprovechara las ventajas de los cellarrays de MATLAB.

Por ejemplo, la matriz correspondiente a las coordenadas x de los puntos A, del ala 4 con MxNpaneles sera xA4(1:M,1:N), mientras que la del ala 3, con M ′xN ′ paneles serıa xA3(1:M’,1:N’).

Todos estos datos seran necesarios a la hora de montar el sistema de ecuaciones y alimentaran laentrada de la funcion solve all. Para ello, esta funcion tambien convierte dichos datos a un formatovectorial, encadenando las matrices por filas, y encadenando el respectivo vector fila de un ala detrasde el vector fila de la anterior. Con esto, se facilita la tarea de montar el sistema de ecuaciones en elsolver, cuyo costo computacional sera el que determine la duracion de los sweeps.

La estructura de salida lattice depende exclusivamente de la geometrıa, con lo cual, el hecho deseparar la funcion del solver (que ya se alimenta de la condicion de vuelo) confiere cierta agilidad alcodigo a la hora de hacer barridos para diferentes condiciones de vuelo, ya que el lattice es comunpara todos los casos y no harıa falta generarlo en cada iteracion.

CAPITULO 3. IMPLEMENTACION 34

Antes de proseguir, conviene tener claras las estructuras de entrada y salida:

Figura 3.4: Interfaces de entrada y salida de lattie all.m

Se observa que se devuelven las mismas variables tanto en forma vectorial como matricial. Estoes ası porque aunque el solver tomara el formato vectorial para resolver todas las alas en un mismosistema, en operaciones posteriores sera de utilidad acceder a las variables en cada ala en formatomatricial.

Se va a proceder a detallar ahora las operaciones que la funcion realiza en una k-esima iteracionpara calcular las matrices de datos del ala k, que a su vez, conforman la componente k-esima del cellarray que corresponda. Notar que al principio de cada iteracion se hace que M=M w(k) y N=N w(k)

para ası simplificar la notacion. Por otro lado, tambien hay que predefinir las matrices y cell arrayscon sus dimensiones correspondientes para agilizar el proceso iterativo.

CAPITULO 3. IMPLEMENTACION 35

En lo que sigue, se tomara la notacion [ ] kij para designar la variable [ ] evaluada en el panel (i, j)del ala k.

Figura 3.5

En primer lugar, y tomando como apoyo la figura (3.5), se calculan los puntos (1, 2, 3, 4) de cadapanel aprovechando la indexacion como se sigue:

~r k1(i,j) = (x k

v(i,j), ykv(i,j), z

kv(i,j)) (3.12)

~r k2(i,j) = (x k

v(i,j+1), ykv(i,j+1), z

kv(i,j+1)) (3.13)

~r k3(i,j) = (x k

v(i+1,j+1), ykv(i+1,j+1), z

kv(i+1,j+1) (3.14)

~r k4(i,j) = (x k

v(i+1,j), ykv(i+1,j), z

kv(i+1,j)) (3.15)

y cuya implementacion en cell arrays puede acometerse mediante las siguientes lıneas de codigo:

xv1k(1:M,1:N)=xvk(1:M,1:N); yv1k(1:M,1:N)=yvk(1:M,1:N); zv1k(1:M,1:N)=zvk(1:M,1:N);

xv2k(1:M,1:N)=xvk(1:M,2:(N+1)); yv2k(1:M,1:N)=yvk(1:M,2:(N+1)); zv2k(1:M,1:N)=zvk(1:M,2:(N+1));

xv3k(1:M,1:N)=xvk(2:(M+1),2:(N+1)); yv3k(1:M,1:N)=yvk(2:(M+1),2:(N+1)); zv3k(1:M,1:N)=zvk(2:(M+1),2:(N+1));

xv4k(1:M,1:N)=xvk(2:(M+1),1:N); yv4k(1:M,1:N)=yvk(2:(M+1),1:N); zv4k(1:M,1:N)=zvk(2:(M+1),1:N);

A partir de estos puntos es facil calcular los puntos (A,B,C,D) teniendo en cuenta que:

~r kA(i,j) = ~r k

1(i,j) + 0,25(~r k4(i,j) − ~r

k1(i,j)) (3.16)

~r kB(i,j) = ~r k

2(i,j) + 0,25(~r k3(i,j) − ~r

k2(i,j)) (3.17)

~r kC(i,j) = ~r k

B(i+1,j) (3.18)

~r kD(i,j) = ~r k

A(i+1,j) (3.19)

A la hora de implementarlo es necesario tener en cuenta que los puntos C y D de los paneles deborde de salida (M, j) se alargan hasta el infinito, que a efectos practicos se tomara como cien veces lacuerda en la raız. Asimismo, su coordenada z sera tal que, en principio, el panel de estela sea tangenteal borde de salida.

CAPITULO 3. IMPLEMENTACION 36

Ante estas consideraciones, la implementacion se puede llevar a cabo mediante las siguientes lıneasen el codigo:

% Puntos A

xAk(1:M,1:N)=xv1k+0.25.*(xv4k-xv1k);

yAk(1:M,1:N)=yv1k(1:M,1:N)+0.25*(yv4k-yv1k);

zAk(1:M,1:N)=zv1k(1:M,1:N)+0.25*(zv4k(1:M,1:N)-zv1k(1:M,1:N));

%

% Puntos B

xBk(1:M,1:N)=xv2k+0.25.*(xv3k-xv2k);

yBk(1:M,1:N)=yv2k(1:M,1:N)+0.25*(yv3k-yv2k);

zBk(1:M,1:N)=zv2k(1:M,1:N)+0.25*(zv3k(1:M,1:N)-zv2k(1:M,1:N));

%

% Puntos C

xCk(1:(M-1),1:N)=xBk(2:M,1:N);

xCk(M,1:N)=xBk(M,1:N)+100*cr(k); % Est

yCk(1:M,1:N)=yBk;

zCk(1:(M-1),1:N)=zBk(2:M,1:N);

zCk(M,1:N)=zCk((M-1),1:N)-(xCk(M,1:N)-xCk((M-1),1:N)).*tan(alphak(M,1:N)+CORR*pi/180); % Est

%

% Puntos D

xDk(1:(M-1),1:N)=xAk(2:M,1:N);

xDk(M,1:N)=xAk(M,1:N)+100*cr(k); % Est

yDk(1:M,1:N)=yAk;

zDk(1:(M-1),1:N)=zAk(2:M,1:N);

zDk(M,1:N)=zDk((M-1),1:N)-(xDk(M,1:N)-xDk((M-1),1:N)).*tan(alphak(M,1:N)+CORR*pi/180); % Est

Como se aprecia, el parametros CORR permite aumentar o disminuir el angulo con el que se deflectala estela a partir del borde de salida. En capıtulos posteriores se analizara su influencia sobre losresultados en vistas a fijar aquel valor que mejor aproxime los resultados empıricos.

Para calcular los puntos de colocacion se definen los puntos intermedios P y R de manera que~r kCOL(i,j) = ~r k

P,ij + 0,75 (~r kR,ij − ~r k

P,ij) donde ~r kP,ij = 0,5 (~r k

1,ij + ~r k2,ij) y ~r k

R,ij = 0,5 (~r k3,ij + ~r k

4,ij).

Figura 3.6: Punto de colocacion en rojo y punto de centrado de torbellinos en azul.

CAPITULO 3. IMPLEMENTACION 37

Los puntos de centrado de torbellinos se calculan facilmente como el punto medio entre los puntosA y B, con lo cual se tiene que ~r k

g,ij = 0,5 (~r kA,ij + ~r k

B,ij)

Por otro lado, las cuerdas de cada panel se calculan con la distancia de P a R. Ası, utilizando elmodulo del vector se obtiene que h k

ij = |~r kR,ij − ~r k

P,ij |. La superficie de cada panel, por su parte, se

obtiene a traves de la regla del paralelogramo como S kp,ij = (~r k

4,ij +~r k1,ij))× (~r k

2,ij +~r k1,ij)). Asımismo, la

superficie total del ala k puede obtenerse como la suma de todas las de los paneles como Sk =∑

ij Skp,ij .

El calculo del vector normal unitario exterior a cada panel, evaluado en el punto de colocacionpuede obtenerse facilmente empleando el producto vectorial:

~n kij =

~v kij × ~u k

ij

|~v kij × ~u k

ij |(3.20)

donde ~v kij = ~r k

COL,ij − ~r k2,ij y ~u k

ij = ~r kCOL,ij − ~r k

1,ij tal y como se aprecia en la figura (3.6).

Todos estos pasos pueden implementarse como se sigue:

% Puntos P R y colocacion:

xmpk(1:M,1:N)=0.5*(xv1k(1:M,1:N)+xv2k(1:M,1:N));

xmrk(1:M,1:N)=0.5*(xv4k(1:M,1:N)+xv3k(1:M,1:N));

xCOLk(1:M,1:N)=xmpk+0.75.*(xmrk-xmpk); %Colocacion x

ympk(1:M,1:N)=0.5*(yv1k(1:M,1:N)+yv2k(1:M,1:N));

ymrk(1:M,1:N)=0.5*(yv4k(1:M,1:N)+yv3k(1:M,1:N));

yCOLk(1:M,1:N)=ympk+0.75.*(ymrk-ympk); %Colocacion y

zmpk(1:M,1:N)=0.5*(zv1k(1:M,1:N)+zv2k(1:M,1:N));

zmrk(1:M,1:N)=0.5*(zv4k(1:M,1:N)+zv3k(1:M,1:N));

zCOLk(1:M,1:N)=zmpk+0.75.*(zmrk-zmpk); %Colocacion z

% Centro de torbellinos:

xgk(1:M,1:N)=0.5*(xAk+xBk); ygk(1:M,1:N)=0.5*(yAk+yBk); zgk(1:M,1:N)=0.5*(zAk+zBk);

% Cuerda de cada panel

hk(1:M,1:N)=sqrt((xmpk(1:M,1:N)-xmrk(1:M,1:N)).^2+(ympk(1:M,1:N)-ymrk(1:M,1:N)).^2+...

(zmpk(1:M,1:N)-zmrk(1:M,1:N)).^2);

% Superficie de cada panel con el producto vectorial:

for i=1:M,

for j=1:N,

Spk(i,j)=norm(cross([ xv4k(i,j)-xv1k(i,j), yv4k(i,j)-yv1k(i,j), zv4k(i,j)-zv1k(i,j) ],...

[ xv2k(i,j)-xv1k(i,j), yv2k(i,j)-yv1k(i,j), zv2k(i,j)-zv1k(i,j)]));

end

end

S(k)=sum(sum(Spk)); % Superficie total

% Vector normal en el punto de colocacion:

normalv_xk(1:M,1:N)=-((yCOLk-yv1k).*(zCOLk-zv2k)-(yCOLk-yv2k).*(zCOLk-zv1k));

normalv_yk(1:M,1:N)=-((xCOLk-xv2k).*(zCOLk-zv1k)-(xCOLk-xv1k).*(zCOLk-zv2k));

normalv_zk(1:M,1:N)=-((xCOLk-xv1k).*(yCOLk-yv2k)-(xCOLk-xv2k).*(yCOLk-yv1k));

mod_normal_vk(1:M,1:N)=sqrt(normalv_xk(1:M,1:N).^2+normalv_yk(1:M,1:N).^2....

+normalv_zk(1:M,1:N).^2);

nxk(1:M,1:N)=normalv_xk(1:M,1:N)./mod_normal_vk;

nyk(1:M,1:N)=normalv_yk(1:M,1:N)./mod_normal_vk;

nzk(1:M,1:N)=normalv_zk(1:M,1:N)./mod_normal_vk;

CAPITULO 3. IMPLEMENTACION 38

Llegados a este punto, ya se han calculado todas las matrices con las variables de interes almace-nadas en la componente k de los cell arrays y cuyos terminos (i, j) no son mas que dichas variablesevaluadas en el panel (i,j) del ala generica k. Ası, es posible iterar mediante un for k=(1:n alas)

para calcular las respectivas matrices de todas las alas de la estructura de entrada. Este formatosera referido de aquı en adelante como formato matricial. Incidir en que gracias a la versatilidad de loscell arrays se puede trabajar de forma generica con matrices de distinta dimension, lo cual no hubierasido posible con matrices n-dimensionales o matroides de tres ındices.

Una vez se tienen todas las variables de todas las alas calculadas y apiladas en los cell arrayscorrespondientes, mediante la orden reshape se va a proceder a transformar las matrices de cadacomponente del cell array en vectores fila y acontinuacion, se encadenaran todos esos vectores filade manera que al final se tendra un solo vector global con la variable que sea evaluada en todos lospaneles de todas las alas. O lo que es lo mismo, se pasa de tener la informacion ordenada con tresındices a un solo ındice que recorre los mismos puntos. Por comodidad, a partir de ahora, para referireste formato se empleara el termino formato vectorial.

En lo que se sigue, y sin perdida de generalidad, se tomara como ejemplo la variable correspondientea la coordenada x de los puntos de colocacion xCOL.

En primer lugar, puesto que cada matriz del cell array tendra sus respectivas dimensiones M(k),N(k)y puesto que a la hora de hacer el reshape interesa el numero total de componentes, interesa crear unnuevo vector MxN(k) que no es mas que el producto de las dimensiones de cada matriz de la celda.Igualmente se aprovechara el proceso de encadenacion para asignar la solucion a la estructura de salidade la funcion directamente.

Ası, el proceso de encadenacion por filas se resume a:

MxN(1)=M_w(1)*N_w(1);

output.vectores.xCOL_v(1:MxN(1))=reshape(xCOL1’,1,MxN(1));

for k=2:n_alas

MxN(k)=M_w(k)*N_w(k);

output.vectores.xCOL_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(xCOLk’,1,MxN(k));

end

Se aprecia que a la hora de indexar a partir de la segunda componente del cell array se ha sumadoel termino correspondiente a

∑k−1i=1 MxN(i) para ası encadenar los vectores fila resultantes de cada

matriz uno tras otro. Informacion completa relativa a como opera el reshape y por que se trasponenlas matrices puede encontrarse en la propia ayuda de MATLAB.

Pese al tremendo numero de operaciones que se acometen en esta funcion, se verifica la eficienciade la misma puesto que apenas sobrepasa el medio segundo de tiempo de ejecucion para una entradacon varias alas y mallados finos.

Por ultimo, el lector interesado en acceder al codigo completo de la funcion queda direccionado alAnexo A.5.

CAPITULO 3. IMPLEMENTACION 39

3.2.2. Funcion justsolve all.m

En primer lugar, y como se viene haciendo de las secciones previas, es conveniente familiarizar-se con los interfaces de entrada y salida de la funcion a traves del esquema anterior. En este casose observa que, ademas de la estructura tipo lattice generada con la funcion lattice all.m, la fun-cion justsolve all.m tambien recibe las variables que caracterizan la condicion de vuelo (velocidad,altitud, angulo de ataque, angulo de resbalamiento y rotaciones en los tres ejes).

CAPITULO 3. IMPLEMENTACION 40

Decir tambien que las rotaciones daran idea de la respuesta aerodinamica pero solo en regimencuasiestacionario ya que los terminos no estacionarios fueron eliminados en el modelo.

Gracias a que ya se dispone de las variables de entrada en formato vectorial, el unico paso restanteantes de proceder a montar el sistema de ecuaciones es generar un campo de velocidades evalua-do en los puntos de colocacion a partir de los datos de entrada. Para ello, se ha creado la funcionflight cond rot.m, que genera una matriz velocidad de 3xN , de manera que la primera fila corres-ponde a las componentes x, la segunda a y y la tercera a la componente z de la velocidad. Por columnastendremos las tres componentes de la velocidad evaluadas en los puntos N puntos de colocacion.

Para generar el campo de velocidades se tendra en cuenta tanto la componente debida a la velocidadincidente, que denotaremos como ~U∞[lin] y cuyo valor sera independiente del punto de evaluacion,

como la componente debida a la rotacion ~U∞[rot](x, y, z), que dependera de la posicion relativa entre

los puntos de colocacion y el vector de rotacion instantanea ~Ω = (p, q, r) dado en ejes cuerpo.

En primer lugar, para extraer las componentes de ~U∞[lin], se proyecta el vector velocidad sobre losejes cuerpo gracias al modulo y los angulos de ataque y resbalamiento segun la figura (3.7):

U∞[lin],x = U∞cos(α)cos(β) (3.21)

U∞[lin],y = −U∞cos(α)sin(β) (3.22)

U∞[lin],z = U∞sin(α) (3.23)

Para obtener la componente de rotacion basta con calcular el momento del vector rotacion intro-ducido sobre todos los puntos de colocacion:

~U∞[rot],ij = ~Ω × ~rCOL,ij (3.24)

Figura 3.7: Campo de velocidades segun la condicion de vuelo.

Notar que las rotaciones del flujo aquı consideradas son las opuestas a las realmente tiene el ala,a la cual esta ligado el sistema de referencia.

Por otro lado, la funcion tambien incorpora un modelo de atmosfera ISA que devuelve parametroscomo la densidad, temperatura, Mach... actualizados a la altura de vuelo. El lector interesado enacceder al codigo completo queda referenciado al Anexo A.6 y A.7.

CAPITULO 3. IMPLEMENTACION 41

Una vez se tienen las componentes de la velocidad evaluadas en los puntos de colocacion se puedeproceder a montar el sistema de ecuaciones, con la matriz de coeficientes de influencia de los panelessobre los puntos de colocacion y el termino independiente con el campo de velocidades en el infinito taly como se especifico en la seccion (2.2.2). En dicha seccion tambien se aportan las respectivas lıneas decodigo con lo cual, en lo que sigue, se considerara resuelto el sistema y se procedera a pasar el vectorsolucion de formato vectorial a matricial.

La solucion obtenida al resolver sistema de ecuaciones Gammasol es un vector fila cuya dimension esla suma de los MxN puntos de cada una de las k alas a resolver. El objetivo es transformarlo en k ma-trices de dimenson MxN apiladas como componentes de un cell array Gammak(1:M w(k),1:N w(k)).De esta manera, se pueden ir recorriendo las alas con un for k exterior y en cada iteracion, recorrerla matriz correspondiente reasignando terminos.

Para asociar la componente K del vector global, a la componente (i, j) de la matriz del ala k seemplea la siguiente relacion:

K = (i− 1)Nk + j +

k−1∑n=1

(MkNk) (3.25)

El proceso seguido se puede implementar como se sigue:

suma=zeros(n_alas,1);

for k=2:n_alas,

suma(k)=sum(MxN(1:(k-1)));

end

for k=1:n_alas,

Gammak=zeros(M_w(k),N_w(k));

for kin=1:M_w(k),

for l=1:N_w(k),

K=(kin-1)*N_w(k)+l+suma(k);

Gammak(kin,l)=Gammasol(K,1);

end

end

end

Llegados a este punto, ya se tienen las intensidades de torbellinos de cada panel tales que se cumplela condicion de impenetrabilidad, y ademas, en formato matricial. Se decide entonces aprovechar elfor k exterior del bloque anterior para, en cada ala, ejecutar una serie de operaciones de interes sobrela solucion Gamma ya en formato matricial.

De este modo, todas las operaciones que se van a comentar estaran referidas a un ındice genericocorrespondiente al ala k.

En primer lugar, se van a calcular las densidades de circulacion tal y como se explicita en la seccion(2.3). El cociente incremental puede calcularse en forma compacta, como se sigue:

gammak(1,1:N_w(k))=Gammak(1,1:N_w(k))./hk(1,1:N_w(k));

gammak(2:M_w(k),1:N_w(k))=(Gammak(2:M_w(k),1:N_w(k))-Gammak((2:M_w(k))-1,1:N_w(k)))...

./hk(2:M_w(k),1:N_w(k));

CAPITULO 3. IMPLEMENTACION 42

Acontinuacion, los puntos de resolucion en y, ası como la distribucion de cuerdas y circulaciones alo largo de la envergadura se calculan mediante las siguientes lıneas de codigo:

ymedk(1:N_w(k))=0.5*(yvk(1,2:(N_w(k)+1))+yvk(1,1:N_w(k)));

cyk(1:N_w(k))=0.5*(xvk(end,2:(N_w(k)+1))+xvk(end,1:N_w(k))-xvk(1,(2:(N_w(k)+1)))-xvk(1,1:N_w(k)));

for j=1:N_w(k),

Circuk(j)=gammak(1:M_w(k),j)’*hk(1:M_w(k),j);

end

Lo que esta haciendo el for j en cada iteracion es, aprovechando el producto escalar, integra a lolargo de la cuerda j las circulaciones. De esta manera se consigue evaluar la distribucion Γ (y) en elala k.

En esta funcion tambien se considera el calculo de cargas y coeficientes de interes basicos de cada alatales como el coeficiente de sustentacion CL (o su distribucion a lo largo de la envergadura), coeficientesde momentos de alabeo Cm,roll y cabeceo Cm,pitch o parametros como el coeficiente de eficienciade Oswald, e. A partir de este ultimo se puede extraer el coeficiente de resistencia inducida comoCDi = C2

L/(πΛe). Para aproximar un coeficiente de resistencia general CD, se supone un coeficientede resistencia parasitaria de CD0 = 0,015 que el usuario puede modificar a su antojo en caso de teneruna fuente mas fidedigna. Una vez se conoce el CL y el CD se puede tener un orden de la eficienciaaerodinamica E, no obstante, hay que recordar que el termino de resistencia parasitaria no es mas queuna simple estimacion y convendrıa refinarla.

Para acometer los calculos, en primer lugar se obtienen las fuerzas sustentadoras de cada panel (i, j)del ala k segun las expresiones del final del apartado (2.3) y se almacenan en la variable incLk(i,j).La sustentacion total es facil de extraer sumando los terminos de la matriz por sumas y columnas.Asımismo, el coeficiente de sustentacion es inmediato ya que se puede dividir por la mitad de la presiondinamica y por la superficie, ambos datos ya conocidos.

Para el calculo de los momentos, se ira multiplicando la sustentacion de cada panel incLk(i,j),por la distancia entre su punto de colocacion y el punto con respecto al cual se esta tomando el mo-mento. En primera aproximacion, y por simplicidad, los momentos se toman con respecto al origen delsistema de referencia ligado al ala hasta ahora empleado. Comentar que en el apartado de postprocesose calculara el centro aerodinamico y se expresara el momento con respecto a dicho punto. Tambien esimportante tener en cuenta que los coeficientes de momento longitudinales en primera aproximacionse adimensionalizaran con la cuerda raız (tras calcular la MAC se corregiran) mientras que en loslateral-direccionales se empleara la envergadura.

El proceso descrito puede implementarse como acontinuacion:

% % % Sustentacion % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

incLk(1:M_w(k),1:N_w(k))=rhoinf*Uinf*(gammak.*Spk);

L(k)=sum(sum(incLk));

Cl(k)=L(k)/(0.5*rhoinf*Uinf^2*S(k));

clyk=2*Circuk./(Uinf.*cyk);

CAPITULO 3. IMPLEMENTACION 43

% % % MOMENTO ROLL % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

incM_rollk(1:M_w(k),1:N_w(k))=incLk(1:M_w(k),1:N_w(k)).*zCOLk(1:M_w(k),1:N_w(k));

M_roll(k)=-sum(sum(incM_rollk));

Cm_roll(k)=M_roll(k)/(0.5*rhoinf*Uinf^2*S(k)*b_tot(k));

% % % MOMENTO PITCH % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

incM_pitchk(1:M_w(k),1:N_w(k))=incLk(1:M_w(k),1:N_w(k)).*(xCOLk(1:M_w(k),1:N_w(k)));

M_pitch(k)=-sum(sum(incM_pitchk));

Cm_pitch(k)=M_pitch(k)/(0.5*rhoinf*Uinf^2*S(k)*b_tot(k));

% % Resistencia inducida por sustentacion % % % % % % % % % % % % % % % % % % % %

AR(k)=b_tot(k)^2/S(k);

e(k)=eOswald(b_tot(k),Circuk,N_w(k),ymedk-b_tot(k)/2); % Eficiencia de Oswald (por comodidad llamamos a otra funcion)

Cdi(k)=Cl(k)^2/(AR(k)*pi*e(k));

Cd0=0.015; % Esto es una estimacion habrıa que afinar (que el usuario lo introduzca o incluir modelos con viscosidad)

% Eficiencia aerodinamica % % % % % % % % % % % % % % % % % % % % % % % % % % % %

Eff(k)=Cl(k)/(Cd0+Cdi(k));

Como puede observarse, en el calculo de la eficiencia de Oswald se llama a la funcion eOswald.m.A grandes rasgos, la funcion recibe la distribucion de circulacion sobre los puntos de resolucion a lolargo de la envergadura ymed y anade circulaciones nulas en las puntas, que no estaban incluıdas. Actoseguido se genera un nuevo span mas fino en θ que va de 0 a π, el cual se relaciona con y medianteel cambio de variables y(θ) = − b

2cos(θ). Una vez se tiene la nueva resolucion en y, se procede ainterpolar la distribucion de circulacion en el nuevo span, de manera que se tiene Γ (y(θ))) tal que,como se explico en la seccion(2.4), se anula en θ = 0 y θ = π y puede expresarse como una sumaponderada de infinitos armonicos en serie de Fourier.

Siendo ya conocida la distribucion de circulacion con respecto a θ, se pueden obtener los coeficientesde Fourier proyectandola sobre cada armonico de manera que se cumple que an = 2

π

∫ π0 Γ (θ)sin(nθ)dθ.

En la practica se consideraran suficientes 100 armonicos, valor que el usuario puede configurar enla variable Nfou. Para implementar la integral en cada coeficiente de la forma mas eficiente posible,y teniendo en cuenta que el intervalo de integracion es equiespaciado, en lugar de utilizar la ordentrapz de MATLAB, se va a volver a aprovechar el producto escalar como se sigue:

a=zeros(1,Nfou);

for n=1:Nfou,

a(n)=2/pi*Ctheta*sin(n*theta)’*(pi/(Ntheta-1));

end

Ya se esta en disposicion de proceder a calcular la eficiencia de Oswald a traves de la expresion(2.74), que puede implementarse como se sigue:

sumaOs=0;

for kos=2:Nfou

sumaOs=sumaOs+(kos*(a(kos)/a(1))^2);

end

e=1/(1+sumaOs);

Para acceder al codigo completo de la funcion eOswald.m, consultese el Anexo A.8 mientras queel codigo completo de la funcion justsolve all.m puede extraerse del Anexo A.9.

CAPITULO 3. IMPLEMENTACION 44

3.3. Postprocesador

Una vez se ha resuelto el problema en terminos de circulaciones y se han calculado los resultadosmas directos (coeficientes de fuerzas y momentos) para cada ala y para la condicion de vuelo intro-ducida por el usuario, se procede a plantear el calculo de otros resultados interesantes como son laposicion del centro aerodinamico, MAC o cuerda aerodinamica media), centro de presiones del semialaetc. Las subfunciones de este nucleo se organizan en la funcion postproceso.m (vease el Anexo A.10) yoperaran tomando como entradas las estructuras tipo solucion que devuelve el solver y simplementelas actualizaran con los campos correspondientes.

Asımismo, en vistas a una extraccion facil de los resultados se va dar especial importancia al disenode un interfaz grafico en el que el usuario pueda acceder las graficas y resultados convenientes ası comovolcarlos en archivos .txt, haciendo su acceso aun mas versatil.

3.3.1. Calculo del centro aerodinamico.

Por definicion, el centro aerodinamico es el punto en el cual el momento de cabeceo es independientedel angulo de ataque. Debido a su intensa utilizacion en problemas de mecanica del vuelo se va adedicar esta seccion a su obtencion. Existen metodos analıticos que aproximan muy bien su posicion,no obstante, se decide continuar con un enfoque puramente numerico para encontrarla, el metodo debiseccion.

Basicamente, lo que se va a hacer es dar un intervalo inicial en x con inicio en xA y fin en xBdonde se espera encontrar el centro aerodinamico. A partir de este intervalo, se tomara el punto medioxC . Llegados a este punto puede obtenerse la estructura lattice del ala en cuestion y pasarsela alsolver para que itere y solucione el problema aerodinamico para dos angulos de ataque, por ejemplo 0y 10 grados, calculandose los respectivos momentos en el punto considerado tal y como se explico ensecciones previas.

Sea f(x) la diferencia entre los momentos en torno al punto x obtenidos a 0 y 10 grados. El centroaerodinamico sera la raız de f ya que el momento en torno a ese punto se mantiene constante al habervariado el angulo de ataque.

La idea que sigue es ir evaluando f en xA y xC en cada iteracion tal que si se obtiene distintosigno, se entiende que al menos existe una solucion comprendida en ese semiintervalo y en la siguienteiteracion se tomara como el inicial. Si se obtiene el mismo signo, y, asumiendo que la f es monotona, esde esperar que la solucion, de existir en el intervalo inicial, este contenida en el semiintervalo (xC , xB),con lo cual se seleccionara este como intervalo inicial en la siguiente iteracion.

Tras un numero suficiente de iteraciones se ira acotando el intervalo a un recinto suficientementeproximo al punto en el que se cumpla que f(xAC) ' 0. Para dejar salir del proceso iterativo bastara conque f sea menor que una cierta tolerancia TOL.

El principal problema que se encuentra tras implementar este proceso, son los largos tiempos decomputacion ya que, segun se ha planteado, habrıa que resolver el sistema de ecuaciones cuatro vecesen cada iteracion: una por cada angulo de ataque y por cada punto en torno al cual se quiere calcularel momento. Se comprueba que para obtener tiempos de en torno a 30 segundos hay que afinar muchoel intervalo inicial y esto no es de interes ya que pueden darse casos de alas con mucha flecha dondela solucion no caiga cerca de donde puede esperarse en alas convencionales.

CAPITULO 3. IMPLEMENTACION 45

Se hace evidente la necesidad de dar un giro al algoritmo. Notese que la solucion del problemaaerodinamico es comun para un mismo angulo de ataque independientemente del punto con respecto alcual se esta tomando el momento. Lo que se va a hacer, entonces, es resolver el problema aerodinamicopara α = 0 y α = 10 antes de entrar en el proceso iterativo y proveer las distribuciones de sustentacionsobre el ala en cada caso para, ası, en cada iteracion calcular el momento respecto al punto que seaa partir de ellas. Puesto que solo interesa la distribucion de sustentacion para el caso concreto de unala, y bajo condiciones de resbalamiento y rotaciones nulas, se decide hacer una modificacion de lafuncion justsolve all.m mas ligera computacionalmente que omita calculos innecesarios: la funcionezsolve.m. Esta funcion toma como argumentos una estructura tipo lattice pero de un unico ala, lavelocidad en el infinito U∞ y el angulo de ataque α en grados y como salida devuelve la matriz incL

con la distribucion de sustentacion en los paneles.

Con todo esto, se consigue reducir el tiempo de computacion a un orden de 5 segundos mientrasque este se hace practicamente independiente de la amplitud del intervalo inicial considerado, justo loque se pretendıa.

La implementacion se puede resumir en las siguientes lıneas de codigo:

incL1 = ezsolve_v2(lattice,Uinf,alfa(1));

incL2 = ezsolve_v2(lattice,Uinf,alfa(2));

a=pos_ref_x+lim_inf/100*cr;

b=pos_ref_x+lim_sup/100*cr;

k=0;

err=100;

while err>TOL;

k=k+1; % Contador de iteraciones

c=0.5*(a+b);

fa = look4_ac(a,xCOL,incL);

[fc, Mx0] = look4_ac(c,xCOL,incL);

if fa*fc<0,

b=c;

else

a=c;

end

err=abs(fc);

end

x_ac=(c-pos_ref_x)/cr; % posicion centro aerodinamico

cm_ac=Mx0/(0.5*rhoinf*Uinf^2*S*MAC); % momento en el centro aerodinamico

% % % % % % % % % % % Por comodidad se delega el calculo de f a otra subfuncion

function [f, Mx0]=look4_ac(x0,xCOL,incL)

incM_pitch_1=incL1.*(xCOL-x0);

M_pitch_1=-sum(sum(incM_pitch_1)); % Cambiamos el signo para tener momentos de encabritado positivos

incM_pitch_2=incL2.*(xCOL-x0);

M_pitch_2=-sum(sum(incM_pitch_2)); % Cambiamos el signo para tener momentos de encabritado positivos

f=M_pitch_2-M_pitch_1;

Mx0=0.5*(M_pitch_1+M_pitch_2); % Para minimizar errores se toma la media

end

CAPITULO 3. IMPLEMENTACION 46

En alas simetricas la ubicacion transversal es trivial ya que se encuentra en el plano de simetrıa,pero en alas asimetricas, como es el caso de los estabilizadores verticales, tambien se hace necesariala determinacion de la coordenada z del centro aerodinamico. Este punto se tomara como centro dereduccion de la distribucion de momentos en el calculo de las algunas derivadas de estabilidad delproblema lateral-direccional.

Para su determinacion, se sigue un proceso analogo al anterior. Se esta buscando z con respectoal cual el coeficiente de roll con respecto a la raız es independiente del angulo β. Notar que al haberabatido la superficie al plano xz el angulo de ataque que realmente ve el perfil no es α sino β.

Con esto, lo unico que se hace es generar unas funciones similares a postproceso.m en las quese anade otro modulo de biseccion que opera en la direccion de la envergadura para encontrar dichopunto z. En la practica, el usuario a bajo nivel debera llamar al bloque de funciones que correspondasegun el tipo de ala. No obstante, en el interfaz grafico se hace de manera automatica, es decir, si sedetecta que la estructura en cuestion es simetrica, a la hora de computar el postproceso se llama albloque normal y sino llama a este ultimo bloque.

El resto de resultados se extraen de manera analoga simplemente teniendo en cuenta que el angulode ataque pasa a ser β.

3.3.2. Calculo de la MAC y cuerda centroidal.

La MAC o cuerda aerodinamica media es la longitud de referencia que hace que el coeficiente demomento de un ala sin flecha y sin torsion es igual al coeficiente de momento de su perfil. Puedecalcularse mediante la siguiente expresion:

cMAC =2

S

∫ b2

0c(y)2dy (3.26)

Una vez obtenida, se utilizara para adimensionalizar el coeficiente de momento de cabeceo del apartadoanterior. Por otro lado, su posicion en x sera tal que el centro aerodinamico del ala caiga exactamenteen 1

4cMAC .

La implementacion puede hacerse facilmente por trapecios empleando la orden trapz.

Por otro lado, la cuerda centroidal es aquella que pasa por el centroide del ala. En alas simetricas,el centroide se encuentra en el plano de simetrıa, con lo que la cuerda centroidal es la cuerda raız.En alas no simetricas, como los estabilizadores verticales, la ubicacion del centroide puede calcularsecomo:

~rcent =1

S

∫∫S~rdA (3.27)

y que puede calcularse facilmente a partir de los puntos ~rg,ij y la superficie de cada panel Sp,ij con-tenidos en la estructura solucion como ~rcent = 1/S

∑ij ~rg,ijSp,ij . Tomese especial cuidado a la hora

de lidiar con estos vectores pues, pese a llevar la etiqueta y, para el caso de estabilizadores verticalesrealmente contienen la informacion de las distribuciones en z. En la estructuras solucion puede serutil entender que las variables en y se refieren a la direccion de la envergadura independientemente desu relacion con el sistema de referencia.

CAPITULO 3. IMPLEMENTACION 47

Para calcular la cuerda centroidal, y puesto que no va a coincidir, por lo general, con el mallado,lo que se hace es interpolar los puntos xv en zv.

El proceso de calculo de la cuerda centroidal se resume como se sigue:

xa=xv( 1,:); % Borde de ataque

xs=xv(end,:); % Borde de salida

z=zv(1,:); % Resolucion en z

% Centroide basado en los puntos de centrado de torbellinos

x_cent=1/S*sum(sum(xg.*Sij));

y_cent=1/S*sum(sum(yg.*Sij));

z_cent=1/S*sum(sum(zg.*Sij));

xa_cent=interp1(z,xa,z_cent);

xs_cent=interp1(z,xs,z_cent);

cent_chord=abs(xs_cent-xa_cent);

3.3.3. Obtencion del CL0 y de la pendiente de sustentacio CLα.

Para estos resultados, se va a aprovechar que en el calculo del centro aerodinamico se resuelve elproblema aerodinamico para dos angulos de ataque y, concretamente, uno de ellos es 0.

Se parte pues de la distribucion de sustentacion por paneles incL, que se trata de un cell arraycuya primera componente es la distribucion a angulo de ataque 0 y la segunda a 10 grados.

Por otro lado, como se comento anteriormente, la superficie, velocidad, densidad... se puedenextraer de la estructura de entrada tipo solucion.

Se esta en condiciones de computar la sustentacion total sumando incL para todos los paneles(i, j) y a continuacion adimensionalizar segun la definicion de CL.

Una vez se tiene el CL a ambos angulos de ataque, el calculo de la pendiente es directo medianteel cociente incremental CLα = ∆CL/∆α, ya que se trata de una aproximacion lineal. Notar que ∆αse expresa en radianes para obtener una solucion del orden de la referencia para placa plana segunteorıa potencial 2π.

Los pasos acometidos pueden implementarse como acontinuacion:

cl0 = sum(sum(incL1))/(0.5*rhoinf*Uinf^2*S); %

cl_10 = sum(sum(incL2))/(0.5*rhoinf*Uinf^2*S); %

clalpha = (cl_10-cl0)/(10*pi/180); % pendiente de sustentacion en radianes

En estabilizadores verticales se procede del mismo modo pero teniendo en cuenta que el angulo deataque pasa a ser β tras hacer el abatimiento al plano vertical.

CAPITULO 3. IMPLEMENTACION 48

3.3.4. Centro de presiones del semiala

Otra aplicacion del codigo interesante para el disenador, es el calculo de la distancia y al encastreen la cual esta actuando la resultante de fuerzas del semiala. Acortando esta distancia se consiguedisminuir el momento en el encastre, permitiendo, por ejemplo, aligerar dicha estructura.

Para su obtencion se ha procedido como se sigue:∫ b2

0yl(y)dy = yce

∫ b2

0l(y)dy (3.28)

donde...

∫ b2

0yl(y)dy =

1

2

∫ b2

− b2

|y|l(y)dy (3.29)

luego:1

2

∫ b2

− b2

|y|l(y)dy =1

2yce

∫ b2

− b2

l(y)dy (3.30)

Desarrollando la sustentacion como l(y) = ρ∞U∞Γ (y) de las integrales en (3.30) pueden extraersey simplificarse los terminos constantes, quedando unicamente la circulacion:

1

b/2

∫ b2

− b2

|y|Γ (y)dy =yceb/2

∫ b2

− b2

Γ (y)dy (3.31)

y despejando...yceb/2

=2

b

∫ b2

− b2

|y|Γ (y)dy∫ b2

− b2

Γ (y)dy(3.32)

La implementacion puede acometerse con la orden trapz:

int1=trapz(ymed,abs(ymed).*Circu); % integral del numerador

int2=trapz(ymed,Circu); % integral del denominador

La razon por la que se integra en toda la envergadura y se divide por 2 es por comodidad ya quela circulacion esta definida en ymed y depende de la discretizacion que una lınea media coincida con el0 o no para evaluar el primer punto de integracion.

49

Capıtulo 4

Interfaz grafico: GUI

Programar GUIs, por un lado, no supone mucha complejidad, pero por otro, resulta una labormuy larga y tediosa si se quiere dejar cerradas la mayor parte de actitudes que el usuario puedetomar de cara a la aplicacion. En el diseno de los mismos, se han ido teniendo en cuenta los posiblesfallos del usuario mediante bloques try/catch. Asımismo, los objetos y variables se almacenan enla macroestructura handles, que se va actualizando y transfiriendo entre los distintos Callbakcs yfunciones del GUI.

La primera implicacion de tener tantos datos organizados en torno a una unica estructura es queesta contiene numerosos campos que tendran que ir siendo escritos uno por uno para acceder a lavariable que sea, resultando en larguısimas y tortuosas sentencias. Ante esta situacion, se ha tenidoespecial cuidado en mantener una redaccion del codigo legible, manteniendo espacios e intentandoalinear las sentencias por funcionalidad.

En la mayor parte de los Callbacks la estructura que se sigue es la de un interfaz de entrada en la quese extraen las variables de interes de la estructura global handles a continuacion se opera empleandocomo subfunciones las hasta ahora explicadas (create wing.m, show wing.m, lattice all.m...), peroligeramente modificadas para que tomen como entrada la estructura handles, en cuyo interior estaranlas estructuras tipo input, ala, lattice o solucion segun corresponda. Asimismo, dichas funcionesdeben incorporar modificaciones que les permitan interactuar con el resto del GUI. Por ultimo, una vezacometidos los calculos y llamadas a subfunciones correspondientes, se actualiza la estructura handles

global mediante la instruccion guidata.

En lo que sigue, se procede a profundizar en los modulos principales a nivel de funcionalidades eilustrando mediante ejemplos su operacion a modo manual de uso. Por lo general, no se va a detallar elproceso de implementacion de los GUIs ya que, como se ha explicado, se trata de larguısimas funcionesen las que se configuran todos los Callbacks de los uiobjects ası como sus propiedades.

El lector interesado en el manejo de GUIs en MATLAB puede consultar Smith [11]. Asımismo,notar que las funciones GUI tampoco se adjuntan en los anexos debido a su extension, con lo cual,el usuario interesado en su acceso, debe dirigirse directamente a las funciones provistas en la librerıa.Para diferenciarlas del resto, en el nombre suele aparecer GUI.

CAPITULO 4. INTERFAZ GRAFICO: GUI 50

4.1. Generador de alas

Introducir la geometrıa del ala generando la estructura tipo input previamente explicada manual-mente y sin cometer fallos puede resultar una ardua tarea. Por esta razon se ha disenado un modulode interfaz grafica a traves del cual el usuario puede ir introduciendo los parametros y actualizandola estructura poco a poco y realimentando, al mismo tiempo, mediante el visor.

La ventana, que puede apreciarse en la figura ( 4.1), contiene los campos propios de la estructuratipo input a rellenar ası como una serie de botones cuyas funcionalidades van a ser descritas. Asımismo,se observa que no todos los editables esta habilitados; el interfaz ira habilitando y deshabilitando laedicion de ciertos campos segun convenga para facilitar el trabajo al usuario. Por ejemplo, el cajon 1,se aprecia que solo puede configurarse en terminos de resolucion y tanto por ciento de la envergadurahasta donde se extiende. Esto es ası ya que se trata del cajon que conforma o modela la zona dondeirıa el fuselaje, y por tanto, el resto de parametros se configuran automaticamente. Notar tambien quela habilitacion de superficies de control para este cajon tambien esta impedida por razones evidentes.

Figura 4.1: Generador de alas.

El proceso de generacion del ala multicajon es como se sigue. En primer lugar, hay que tener claroslos ındices del ala (kw) y del cajon (kc) actuales. La idea es rellenar los campos del cuadro generalpara el ala que sea y una vez rellenados, pasar al cuadro de configuracion de los cajones.

En el cuadro Cajones se van rellenando los campos correspondientes al cajon kc y una vez seacaba, pulsando el boton Anadir cajon al ala y guardar cambios, se actualiza la estructura tipo input

con los valores introducidos en los editables para el cajon kc al tiempo que mediante las funciones

CAPITULO 4. INTERFAZ GRAFICO: GUI 51

create wing GUI.m y show wing GUI.m se genera la estructura tipo ala correspondiente y se repre-senta la forma en planta en el visor Previsulizacion forma en planta. Justo entonces, los editablesdel cuadro general se mantienen porque pertenecen al mismo ala pero los editables pertenecientes alcuadro de configuracion de los cajones se ponen en blanco preparados para introducir los valores delcajon kc + 1. El ındice del cajon se va actualizando de manera automatica al crear un cajon paraası ahorrar tiempo al usuario.

Es facil comprobar que una vez se crea el cajon 1, se desbloquean el resto de campos y el cajon pasaa ser totalmente configurable. Los campos a rellenar no deben suponer un problema para el usuarioque ya esta familiarizado con la estructura tipo input y el funcionamiento de create wing GUI.m, encualquier caso, al final de la seccion se ilustrara con un ejemplo practico.

El boton Ver cajon simplemente permite al usuario retroceder para ver los campos que ha rellenadoen un cajon anterior. Imagınese el lector que rellenando el cajon 4 del ala 2, el usuario se da cuentaque se ha equivocado en un parametro del cajon 3 del ala 1. Serıa un grave problema el hecho detener que volver a configurar todos los cajones de todas las alas pero este no es el caso. Lo unico quehabrıa que hacer es introducir el ındice 1 en el campo Ala para indicarle al GUI que el cajon cuyoscampos queremos modificar esta en dicho ala, acto seguido, hacemos lo propio en el campo Cajonintroduciendo un 3. Sin preocuparse de nada mas, se pulsa el boton Ver cajon y automaticamentetodos los editables se actualizan con los campos que el usuario introdujo para tal cajon de dicho ala.

Para modificar algun valor simplemente se actua sobre el editable y se guardan los cambios pulsandode nuevo el boton Anadir cajon al ala y guardar cambios. Una vez hecho esto, se puede comprobar comotoda la estructura se reorganiza teniendo en cuenta la modificacion. Al mismo tiempo, se representala nueva forma en planta del ala que se trate.

El unico problema es que al pulsar Anadir cajon... los campos del cuadro de configuracion decajones se pondran en blanco y el ındice kc se actualizara a kc + 1 dando la sensacion al usuario queel cajon kc + 1 que anteriormente ya habıa rellenado se ha borrado. Nada mas lejos de la realidad,lo unico que pasa es que el boton se ha optimizado para que un usuario que esta rellenando cajoneslo haga de la forma mas rapida posible. Lo unico que habrıa que hacer para ver los campos de esecajon es pinchar nuevamente sobre el boton Ver cajon y automaticamente se actualizaran con losvalores que se introdujeron en su momento. Para seguir por donde iba, el usuario simplemente ha deintroducir manualmente los ındices correspondientes al ala y cajon por el que iba y proceder a rellenarlos campos y guardar cambios con normalidad.

Una vez se ha completado el ala 1, por ejemplo, y el usuario quiere introducir un nuevo alasimplemente ha de pulsar el boton Anadir ala del cuadro General. Al hacer esto, todos los editables sepondran en blanco excepto el ındice del ala, que se actualizara a kw = kw + 1 y el ındice del cajon seactualizara a kc = 1 para empezar configurando el ala desde el primer cajon como hasta el momento.En el diseno multiala, el visor de la forma en planta se centra en el ala actual pero el usuario siemprepuede acceder a una representacion tridimensional del conjunto a traves del boton Plot all dondeademas podra apreciar detalles como la curvatura, diedro, ley de torsion, deflexion de alerones etc.

El checkbox Winglet, por su parte, ha de ser seleccionado en caso de querer anadir un winglet alala actual (kw) pero ha de tenerse en cuenta que una vez se clique, ya no se podran seguir anadiendocajones puesto que el winglet ha de ser el ultimo. Al pulsarlo, se proponen una serie de valoresorientativos en los editables en los que el usuario puede apoyarse para generar un cajon de ese tipo.Incidir en que para que dichos valores funcionen generando tal winglet, el cajon anterior kc − 1 ha dehaber completado el 100 % de la envergadura.

CAPITULO 4. INTERFAZ GRAFICO: GUI 52

Dicho esto, se procede a ilustrar su funcionamiento con un ejemplo practico.

Imagınese el lector que se quiere generar, en primer lugar, un ala con 3 cajones, perfil NACA-6409,flaps en el segundo cajon y alerones en el tercero. Tambien se quiere que tenga winglets.

A continuacion se desea anadir un estabilizador vertical a 10m y alineado a la misma cota, con doscajones y superficies de control simetricas tipo flaps a modo de elevador.

En primer lugar se rellenan los parametros generales del primer ala, por ejemplo, 20 puntos M deresolucion en la direccion longitudinal, una cuerda raız de 2,5m, incidencia en la raız de 2 grados, unaenvergadura de 12m y una posicion de referencia en el orıgen (0, 0). Por ultimo, mediante el botonAnadir perfil se selecciona el archivo .dat con los puntos del perfil NACA-6409.

Se procede ahora a ir rellenando los cajones. Para el cajon del fuselaje (kc = 1) interesa ponerpocos puntos N de resolucion en la direccion transversal, seleccionaremos 5. En el campo Env. seintroduce el tanto por ciento de la semienvergadura total a la que va a llegar el fuselaje, por ejemplo,se introduce un 10 %. De esta manera, el cajon tipo fuselaje se extendera hasta 0,6m y, contando a susimetrico, la extension total del fuselaje sera de 1,2m. Al no haber mas editables habilitados no quedamas que pulsar el boton Anadir cajon..., tras lo cual se actualiza la estructura y se representan en losvisores tanto la forma en planta como la forma del perfil que se ha elegido.

El segundo cajon del primer ala se rellena con 20 puntos N de resolucion, que se extienda hasta un50 % de la envergadura con una flecha de borde de ataque Ψ de 25 grados, un estrechamiento de 0,55,una incidencia de 1 grado (ası se modela una ley de torsion negativa hacia la punta para disminuir losflectores y el riesgo de entrada en perdida primero por los alerones del tercer cajon) y un diedro de 2.A continuacion se habilita el checkbox Superficies de control y se procede a seleccionar el tipo FLapextendiendose desde el 10 % del cajon hasta el 90 % de la longitud transversal. La charnela se situa al80 % del borde de ataque en la direccion longitudinal. Por ultimo se selecciona una deflexion positivade 5 grados y click en Anadir cajon... .

Figura 4.2: Ver cajon 2 del Ala 1.

CAPITULO 4. INTERFAZ GRAFICO: GUI 53

El cajon 3 contara con 25 puntos de resolucion transversal, y se extendera hasta el 100 % de lasemienvergadura con una flecha de 30 grados, un estrechamiento de 0,45 una incidencia menor de 0grados y un diedro mayor de 3. A diferencia del segundo, ahora en superficies de control se elegira laopcion Aleron (def anti-sim) y su geometrıa sera menor que la del flap extendiendose desde un 25 %del cajon al 80 % en la direccion transversal y empezando la charneala al pasar el 90 % de la cuerdaen la direccion longitudinal. Se seleccionara una deflexion asimetrica de −5 grados.

Figura 4.3: Ver cajon 3 del Ala 1.

Por ultimo, el cajon 4 funcionara a modo winglet, con lo que no sera un cajon en sı. Al activarel checkbox se observa que, por un lado, desaparecen los cuadros de superficies de control, ahorainnecesarios, y por otro, se rellenan los editables con unos valores de referencia que modelan la formadel dispositivo. Tambien se observa que el boton Anadir cajon y guardar cambios cambia a Generar alay guardar cambios, eliminando la posibilidad de anadir mas cajones tras el winglet, lo cual carecerıade sentido.

Figura 4.4: Ver cajon 4 del Ala 1: winglet.

Una vez finalizado el primer ala, se ha de pulsar el boton Anadir ala del cuadro general. El ındicekw se actualiza a 2 y kc a 1, el resto en blanco listos para ser introducidos.

CAPITULO 4. INTERFAZ GRAFICO: GUI 54

El estabilizador se propone con M puntos de resolucion longitudinal, una cuerda raız de 1,25m,incidencia nula y una envergadura total de 5m. Se selecciona un perfil NACA-4415 y el origen de losejes cuerpo locales se situa a 10m en x del orıgen de los ejes cuerpo del ala 1. La cota se mantiene az0 = 0m.

Para el primer cajon tipo fuslelaje se vuelve a tomar 5 puntos N y una extension hasta el 10 % dela semienvergadura.

El segundo cajon se propone con 25 puntos N, una extension hasta el 100 % de la semienvergadura,una flecha de 20 grados, estrechamiento de 0,4 e incidencia y diedro nulos. El elevador se modela comouna superficie de control tipo flap ya que su deflexion es simetrica y se extendera desde el 10 % hastael 90 % de la envergadura del segundo cajon con una charnela al 75 % de la cuerda en la direccionlongitudinal. Se toma, por ejemplo, una deflexion negativa de −15 que corresponderıa a una maniobrade encabritado.

Figura 4.5: Ver cajon 2 del Ala 2: winglet.

Una vez finalizada la configuracion de ambas alas, puede representarse el conjunto en una mismafigura tridimensional pinchando en Plot all.

Figura 4.6: Plot all.

CAPITULO 4. INTERFAZ GRAFICO: GUI 55

El boton Terminar es el que permite guardar la geometrıa creada en una estructura tipo ala. Sineste paso no se podrıa proseguir por el resto de modulos ya que parten de esta estructura.

Por otro lado, como a partir de la estructura ala generada no puede modificarse la geometrıa, sehan aportado botones para cargar y guardar la estructura tipo input a partir de la cual se crea laotra.

Con esto, un usuario que ha generado un ala y la soluciona pero tras ello decide cambiar algunparametro geometrico, simplemente ha de cargar la respectiva estructura tipo input en el generadorde alas. Una vez cargada, ya tendra a su disposicion la edicion de todos sus campos a traves del botonVer cajon.

Esta funcionalidad tambien sera de gran utilidad a la hora de trabajar a bajo nivel a partir de unageometrıa dada. La primera geometrıa se crea mediante el interfaz pero por ejemplo luego, se quierehacer un barrido en la deflexion de alguna superficie de control de manera que se puede acceder a laestructura tipo input en cada iteracion e ir cambiando el parametro correspondiente antes de generarla estructura tipo ala.

4.2. Solver

Una vez se ha creado la estructura tipo ala se hace necesario otro modulo que permita al usuarioseleccionar las condiciones de vuelo y resolver el problema para obtener la estructura tipo solucion

correspondiente.

La estructura de este GUI es muy sencilla y puede observarse en la figura (4.7).

Figura 4.7: Solver.

CAPITULO 4. INTERFAZ GRAFICO: GUI 56

Lo primero que habrıa que hacer es seleccionar la estructura tipo ala a solucionar mediante el botonexaminar del panel Lattice. A modo de ejemplo, se tomara la estructura ala.mat que se genero en laseccion anterior. Una vez se ha seleccionado la estructura, se ha de pulsar el boton Generar Lattice,que no hace mas que llamar a la funcion lattice all.m ya explicada con la estructura seleccionadacomo entrada. Si todo ha ido correctamente, aparecera en verde una pestana avisando al usuario deque la estructura tipo lattice se ha generado correctamente. De no haber seleccionado un archivo.mat apropiado como entrada, mostrara un aviso en rojo y no se habilitara el boton Solve.

Una vez se ha generado el lattice exitosamente, se deben introducir las condiciones de vuelo.En este caso, por ejemplo, se tomara una altitud de 6000km, una velocidad de 150m/s, un angulode ataque alpha de 5 grados y condiciones de resbalamiento y rotaciones nulas. En el capıtulo deresultados se analizara la influencia del resbalamiento y las rotaciones en regimen cuasiestacionariopero por simplicidad en este apartado se consideraran nulas.

Acto seguido, notamos un checkbox en el que se propone mostrar una solucion cualitativa. Lo quehace este boton es simplemente hacer que una vez resuelto el problema, se represente las distribucionde velocidades de perturbacion (adimensionadas con la velocidad en el infinito) sobre todas las alasen cuestion. Tambien se aporta tanto el coeficiente de sustentacion del primer ala como su momentode roll. De este modo, el usuario ya tiene una primera realimentacion del resultado y puede jugarfacilmente cambiando las condiciones de vuelo sin tener que acceder al modulo de postprocesado paraello ni guardar la estructura solucion.

Una vez se han rellenado todos los campos, se procede a pulsar el boton Solve! y si todo ha idobien se obtendra algo parecido a la figura (4.8).

Figura 4.8: Ejemplo de solucion.

Como se observa, para el usuario que no opte por mostrar la solucion, se despliega un mensaje deSuccess! indicando que el problema se ha solucionado con exito. El problema que esto conlleva es queno se despliegan los mensajes de error correspondientes en el command windows y el usuario no puedeacceder a la procedencia del error. Se recomienda, entonces, el acceso al GUI para proceder a eliminarlos bloques try/catch que correspondan. Por ultimo, para guardar la estructura tipo solucion unavez solucionado el problema con exito se debe pulsar el boton Terminar.

CAPITULO 4. INTERFAZ GRAFICO: GUI 57

4.3. Acceso a solucion y postprocesado.

Aunque ya se dispone de la estructura tipo solucion, que ya contiene varios resultados de interesy a los que se puede acceder directamente cargando el archivo .mat, se va a generar otro interfaz atraves del cual el usuario puede acceder a dichos resultados y generar nuevos.

La ventana se distribuye como puede verse en la figura (4.9).

Figura 4.9: Interfaz de acceso a la solucion.

Para ilustrar su funcionamiento se va a proceder a cargar (mediante el boton Examinar) el archivosolucion.mat generado en el apartado previo a partir de la estructura tipo ala creada en la primeraseccion a traves del generador de alas.

Se observa como con el simple hecho de seleccionar el archivo ya se actualizan algunos campossegun el valor que se aporta en la estructura para el ala cuyo subındice se haya introducido. Losresultados que aun no se han calculado se quedan en blanco hasta que se lleve a cabo el postprocesomediante el boton Computar postproceso. Al pulsar dicho boton, se llama a la funcion postproceso.m

que acometıa el calculo del centro aerodinamico, MAC, centro de presiones del semiala etc.

Asımismo, en el Visor se facilita un abanico de resultados graficos a los que se pueden accederdesplegando la ventana. Por su utilidad, se ha decidido incluir las distribuciones de circulacion a lolargo de la envegadura, de sustentacion, la polar, curva de sustentacion, localizacion del AC en laforma en planta y centro de presiones del semiala, distribucion de velocidades en extrados y geometrıatridimensional. Algunas graficas pueden extraerse a traves del boton Plot sin necesidad de haberejecutado el postproceso pero otras no. En dicho caso, se despliega un mensaje avisando al usuario deque para su obtencion debe ejecutar el postproceso antes.

Notar que el codigo detecta si el ala actual se trata de un ala simetrica o tipo estabilizador verticaly si se trata de este ultimo, sustituira la semienvergadura por la envergadura total a la hora depresentar los resultados. Asımismo, cambiara las coordenadas y por z, ya que la envergadura en losestabilizadores va segun la direccion z.

CAPITULO 4. INTERFAZ GRAFICO: GUI 58

Algunas veces, sobre todo al cambiar de unas graficas a otras, puede que se de el caso que los ejesse descuadren. Esto se soluciona facilmente volviendo a pulsar el boton plot.

Para cambiar de ala, dentro de la estructura solucion, el usuario simplemente ha de introducirel ındice del que se trate y pulsar el boton Ver resultados, se volveran a cargar aquellos disponiblesteniendo que volver a computar el postproceso para dicho ala en caso de ser necesario. Una vez se haejecutado el postproceso en un ala, los resultados ya se quedan grabados y aparecen sin mas al pulsarel boton Ver resultados.

En vistas a facilitar los resultados graficos en formato .pdf se ha incluıdo un boton de guardaren la esquina superior derecha del visor a traves del cual el usuario podra guardar el archivo dondey con el nombre que quiera. Asımismo, tambien se ha aportado un boton para volcar todos los datosde la estructura sobre un archivo .txt de manera que el usuario puede acceder a todos los datosdisponibles. En todo caso, se recomienda al usuario interesado en manipular variables de la solucionproceder directamente a bajo nivel cargando la estructura mediante la orden load(’solucion.mat’)

y procediendo a ir viendo los campos que correspondan de la estructura.

Un ejemplo de lo que se obtiene mediante el postproceso del archivo solucion.mat que se ha idocreando a lo largo de estas secciones puede verse en la figura (4.10).

Figura 4.10: Ejemplo de solucion. Notar que en alas simetricas el centro aerodinamico se representacon un asterisco sobre la MAC en color amarillo mientras que el centro de presiones del semialase representa con un asterisco en verde. La cuerda centroidal se obtiene en postprocesos de alasasimetricas tipo estabilizador vertical. Asımismo, la distribucion de circulacion se representa juntocon la distribucion elıptica para tener una referencia de la ideal e = 1.

59

Capıtulo 5

Resultados

Una vez se ha disenado y generado la herramienta, se procede ahora a ir planteando problemas pararesolverlos y contrastar los resultados con la literatura o bien, empleando programas tradicionales.

5.1. Placa plana de gran alargamiento

Como primer resultado, se va a resolver un problema bien conocido y resuelto teoricamente, la placaplana rectangular. Como se sabe, en alas de gran alargamiento, las regiones afectadas por los flujostransversales quedan confinadas en el entorno de las puntas, y estas suponen una pequena porcion deltotal del ala. Dicho esto, es valido suponer que el ala en su totalidad esta viendo un flujo puramentebidimensional. Para estas condiciones, puede demostrarse que la pendiente de sustentacion del alacoincide con la del perfil, y en el caso de una placa plana segun teorıa potencial dicha pendiente es 2π.

Lo primero que se debe esperar del codigo, es que entrando con un ala sin curvatura, rectangulary de gran alargamiento, se obtenga una pendiente de sustentacion cercana a la teorica. Se creara,entonces, un ala con un alargamiento de 100, que ya es mucho mayor que lo que se encuentra enla practica (en torno a 10) y un perfil simetrico NACA-16006. Otra ventaja del codigo por cajones,es que se puede elegir un mallado no uniforme. Como en este caso se sabe que en la zona centralla circulacion sera practicamente constante se tomaran solo 10 puntos de resolucion en la direcciontransversal mientras que cerca de las puntas, que es donde la circulacion ha de caer a 0 debido alrebordeo, se tomara un mallado mas fino con 50 puntos. Ası, se consigue un buen resultado sin grandescostos computacionales. Tras resolver el problema, se obtienen los resultados de la figura (5.1).

Figura 5.1: Distribucion cualitativa de sustentacion y curva de sustentacion con CLα = 5,9911rad−1.

CAPITULO 5. RESULTADOS 60

Puede observarse que se obtiene un CLα de 0,9535 · 2π, lo cual implica que, suponiendo que ladistribucion fuera del todo plana hasta las puntas, se estarıa cometiendo un error de tan solo el4,65 %. No obstante hay que tener en cuenta que aunque el efecto de la caıda de sustentacion en laspuntas tiene poca importancia relativa debido al gran alargamiento, este puede justificar dicho error.

Esto es ası debido a que los puntos de colocacion y centrado de torbellinos han sido bien elegidosde manera que si se resolviera el problema bidimensional, incluso para un unico panel, la solucion serıaexactamente la que predice la teorıa potencial.

Llegados a este punto, se va a proceder a hacer un primer barrido a bajo nivel con doble finalidad;ver la tendencia de CLα con el alargamiento e ilustrar al lector como se harıa empleando las funcionesde la librerıa.

En primer lugar se va a crear una estructura tipo input inicial mediante el generador de alas. Seintroducen los parametros geometricos de un ala rectangular con un mallado no uniforme mas fino enlas puntas (a partir del 85 % de la semienvergadura se tomaran 15 puntos por cajon, y desde el planode simetrıa hasta tal punto se tomaran 3). La cuerda sera de 2m y la envergadura de 12m de maneraque el alargamiento inicial sera de AR = 6. El perfil se elegira simetrico.

Figura 5.2: Mallado no uniforme.

Una vez se han generado los dos cajones correspondientes, en lugar de crear la estructura tipo ala

mediante el boton Terminar, se pulsa el boton Guardar input para ası poder acceder a la estructuracon los parametros de entrada y modificarlos a bajo nivel en cada iteracion.

Antes de proseguir, se recomienda al lector interesado en trabajar a bajo nivel con las funcionesprovistas proceder a cargar el archivo input.mat mediante la instruccion load(’input.mat’) paraası familiarizarse con la estructura en vistas a modificar o extraer los campos que considere oportunos.

La idea que sigue es muy sencilla; en cada iteracion del barrido se modificara la estructura input

en terminos de la envergadura input.b tot=b tot(k). Una vez modificado se creara el ala mediantela funcion create wing.m y acto seguido mediante las funciones lattice all.m y ezsolve.m paracada angulo de ataque. A continuacion, a partir de la distribucion de sustentacion para cada angulode ataque (0 y 10 grados), se puede calcular la pendiente como el cociente incremental.

Asımismo, se ha aprovechado para calcular tambien el error relativo cometido por la funcionlattice all.m a la hora de calcular las areas, ya que las aproxima sumando las superficies de cadapanel calculadas mediante la regla del paralelogramo.

CAPITULO 5. RESULTADOS 61

En la figura (5.3) se representan los resultados obtenidos. Se observa que, como era de esperar,la pendiente de sustentacion tiende a 2π conforme el alargamiento tiende a infinito. Por otro lado,tambien se comprueba que la funcion lattice all.m esta aproximando las areas numericamente conbuena precision ya que los errores relativos son del orden de 10−15.

Figura 5.3: Resultados del sweep en alargamientos.

Para ilustrar el proceso iterativo a bajo nivel, en las siguientes lıneas se aportan las lıneas de codigonecesarias.

close all, clear all, tic, load(’input_infinita.mat’)

%Flight cond %%%%%

ALT=6000; Uinf=150; [~,~,rhoinf,~,~,~]=atmosfera_isa(ALT);

alfa=[0 10];

%%%%%%%%%%%%%%%%%%

b_tot=linspace(12,1000,20);

%%% prelocation %%%%

Cl_alpha = zeros(1,length(b_tot));

AR = zeros(1,length(b_tot));

err = zeros(1,length(b_tot));

L1 = zeros(1,length(b_tot));

L2 = zeros(1,length(b_tot));

for k=1:length(b_tot)

inputt.b_tot=b_tot(k);

ala=create_wing(inputt);

lattice= lattice_all(ala);

incL1=ezsolve_v2(lattice,rhoinf,Uinf,alfa(1));

incL2=ezsolve_v2(lattice,rhoinf,Uinf,alfa(2));

L1(k) = sum(sum(incL1));

L2(k) = sum(sum(incL2));

Cl_alpha(k)=(L2(k)-L1(k))/(10*pi/180*0.5*rhoinf*Uinf^2*lattice.geom.S_w(1));

AR(k)=b_tot(k)^2/lattice.geom.S_w(1);

err(k)=abs(b_tot(k)*2-lattice.geom.S_w(1))/(b_tot(k)*2);

clear lattice, clear ala

end

% Cl_alpha Vs AL

figure(1), plot(AR,Cl_alpha,’LineWidth’,2), grid on

xlabel(’AR [-]’), ylabel(’C_L\alpha’), %title([’C_L,\deltaf [1/deg ]= ’,num2str(Cldeltaf)])

toc

CAPITULO 5. RESULTADOS 62

5.2. Estudio del efecto de la deflexion de flaps

Siguiendo con el modelo de placa plana rectangular, por simplicidad, se va a proseguir el procesode validacion del codigo en este apartado aportando flaps y discutiendo la solucion.

En una primera aproximacion, se genera una placa rectangular plana con un flap a lo largo de suenvergadura y se soluciona el problema para una deflexion nula en primer lugar y, acontinuacion, de10.

Lo primero que se espera del codigo, es que una deflexion positiva de los flaps se traduzca en unasuccion en el entorno de su charnela. Para ello, se procede a representar las densidades de circulacionen la figura (5.4).

Figura 5.4: Efecto de la deflexion de los flaps sobre el campo de densidades de circulacion en extrados.Un estudio similar puede verse en VLM - Brazilian Symposium [2] (pag.7).

En efecto, se comprueba que al deflectar los flaps 15 grados, por ejemplo, se produce un aumentode circulacion apreciable en el entorno del borde de salida lo cual se traduce en una succion en virtudde la ecuacion de Bernouilli. Por lo pronto, cualitativamente el codigo se comporta como es de esperar.

Se trata ahora de dar un paso mas; se va a representar la curva de sustentacion en un rango de 0 a10 grados (valido para teorıa potencial) y para distintas deflexiones de flaps (0, 5 y 10 grados). Es deesperar que para un angulo de ataque nulo y deflexion nula de los flaps, el coeficiente de sustentacionsea nulo ya que el perfil no tiene curvatura (placa plana). Asimismo, la curva de sustentacion debe teneruna pendiente proxima pero inferior a la teorica (2π) debido al rebordeo en los bordes marginales.Por otro lado, tambien se espera que a medida que aumente la deflexion de los flaps la curva desustentacion se traslade hacia mayores sustentaciones, aportando sustentacion a angulos de ataquenulos.

CAPITULO 5. RESULTADOS 63

En la figura (5.5) se presentan los resultados obtenidos tras hacer los barridos correspondientes.

Figura 5.5: Curva de sustentacion para distintas deflexiones de flaps. Se comprueba que las tendenciasse corresponden con lo esperado.

5.2.1. Comparacion de resultados con otros softwares

Para acometer una discusion mas profunda de los resultados a nivel numerico, se procede a modelarun ala rectangular de 12m de envergadura y 2m de cuerda con dos cajones por semiala. El primercajon se extendera hasta el 10 % de la semienvergadura y no tendra flaps. El segundo, por su parte,se extendera hasta el borde marginal y tendra un flap deflectado a +10 grados (hacia abajo segun laconvencion de signos). Este ala, se introducira tanto en el codigo que este texto trata, como en XFLR5,Tornado y USAF Digital Datcom para comparar los resultados de cada uno. Se utilizaran resolucionesde mallado parecidas y las mismas condiciones de vuelo. Asımismo, para referir el paquete que esteproyecto aporta, se empleara el nombre VLM-US.

5.2.1.1. Tornado

Tornado es una librerıa de codigo para analizar alas en el marco de la aerodinamica lineal frutode una tesis para la KTH y obra de Tomas Melin. En [9] y [10] se recoje exhaustivamente tanto losprincipios en los que se basa, como el manual de operacion del software, con lo cual, el lector interesadoqueda referenciado a esos documentos. Se trata de un codigo que, segun los estudios comparativosen [9], presenta resultados en coherencia con datos experimentales. Si bien, se ha comprobado quelas caracterısticas sustentadoras quedan ligeramente sobredimensionadas. Aunque Tornado incorporanumerosas funcionalidades adicionales que, por razones evidentes, no se contemplan en el codigo queen este proyecto se disena, su principal inconveniente es el tiempo de computacion para geometrıasrelativamente complejas (del orden de minutos frente a segundos en VLM-US ).

Ambos codigos se basan en VLM, pero cabe senalar que Tornado modela la distribucion de vor-ticidad a traves de vortices de herradura (horseshoe vortex ) en lugar de los cuadrilateros cerradosempleados en VLM-US.

CAPITULO 5. RESULTADOS 64

En la figura (5.6) se muestra el modelo de ala que se ha tomado tanto en nuestro codigo como enTornado.

(a) Modelado de la geometrıa en Tornado

(b) Modelado de la geometrıa en VLM-US. La MAC y centro aerodinamico aparecen en amarillo mientras que el asterıscoverde representa el centro de presiones del semiala.

Figura 5.6: Geometrıa placa plana rectangular con flaps.

En la siguiente tabla se presenta una comparativa de los resultados mas significativos:

VLM-US Tornado Error relativo ( %)

CL 0.4857 0.4914 1.1620

CL0 0.4013 0.3809 5.3557

L [kN ] 86.8840 87.572 0.7856

CLα 4.2119 4.2632 1.2033

CDi 0.0158 0.0144 1.5800

CmAC -0.1019 -0.0873 16.7010

xAC/cr 0.2649 - -

Eficiencia Oswald 0.7959 0.8896 10.5328

Se observa, por lo general, que VLM-US aproxima los resultados en coherencia con Tornado conerrores relativos inferiores al 5 % excepto para el caso del coeficiente de momento. El caso del error dela eficiencia de Oswald puede justificarse con la dependendencia del cuadrado de CL, y cruzarse conCDi con lo que los errores se van amplificando. En cualquier caso ambos valores delimitan un intervalorazonable en torno a 0,85.

CAPITULO 5. RESULTADOS 65

Debido a que Tornado no devuelve la posicion del centro aerodinamico, el coeficiente de momentoque obtiene esta referido al orıgen. Para compararlo con el resultado de VLM-US, que lo calcula conrespecto al centro aerodinamico, lo que se ha hecho es emplear el teorema de Chasles a partir de lalocalizacion del centro aerodinamico que aporta VLM-US como se sigue:

CTornadomAC = CTornadom0 + xACCTornadoL (5.1)

Asımismo, tambien se aporta una comparacion de la distribucion de CL a lo largo de la envergadura.

(a) Resultados dados por VLM-US. (b) Resultados dados por Tornado.

Figura 5.7: Distribucion de sustentacion a lo largo de la envergadura.

Notar que Tornado obtiene menor carga en los perfiles con flap que VLM-US pero en la zonacentral no cae tanto, con lo cual compensa y obtiene un CL mayor como se observa en la tabla.

En la figura (5.8) se comparan las curvas de sustentacion dadas por ambos codigos.

−10 −5 0 5 10−2

−1.5

−1

−0.5

0

0.5

1

1.5

2

α [deg]

CL

CL,α [rad−1] =4.2119

(a) Resultados dados por VLM-US.

−10 −5 0 5−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

1.2

Angle of attack, α, [deg]

Liftcurve

(b) Resultados dados por Tornado.

Figura 5.8: Curva de sustentacion. Se observa que los resultados son practicamente identicos en amboscasos.

CAPITULO 5. RESULTADOS 66

5.2.1.2. XFLR5

XFLR5 es una herramienta de analisis para perfiles, alas, e incluso aviones completos inmersos enflujos a bajos numeros de Reynolds. Incluye analisis directo e inverso de perfiles ası como funcionali-dades para el diseno y resolucion de alas multicajon basandose en Teorıa de la Lınea Sustentadora,Vortex-Lattice Method y Metodo de Paneles tidimensional. Tambien incorpora modulos enfocados alanalisis de estabilidad.

Se recomienda al lector no familiarizado con el programa consultar el manual de uso [3].

Para modelar la placa plana, se crean dos perfiles NACA 0001, el segundo de ellos con un flap al80 % de la cuerda y con una deflexion positiva de 10 grados tal y como se observa en la figura (5.9).

Figura 5.9: Generacion de los perfiles en XFLR5 a partir de la importacion de un archivo .dat.

La geometrıa del ala se crea en el modulo Wing and Plane Desing introduciendo los parametroscorrespondientes. Vease la figura (5.10).

Figura 5.10: Generacion de geometrıa 3D del ala en XFLR5.

Notese de la figura como se han creado dos secciones muy proximas donde se va a procudir latransicion entre el perfil sin flap y el perfil con flap para modelar el cambio de la misma forma queVLM-US.

CAPITULO 5. RESULTADOS 67

Ya modelada la geometrıa, se procede a definir un analisis tipo VLM sin viscosidad y para unangulo de ataque de 1 grado. Una vez resuelto el problema, se obtienen los resultados de la figura(5.11).

Figura 5.11: Solucion de XFLR5.

Para visualizar mejor la comparacion, en la siguiente tabla se resumen los resultados principales yerrores entre las distintas opciones.

VLM-US XFLR5 Error relativo ( %)

CL 0.4857 0.4810 0.9771

CL0 0.4013 0.4020 0.1741

CLα 4.2119 4.5264 6.9481

CDi 0.0158 0.0116 36.2069

CmAC -0.1019 -0.2127 52.0921

Se observa que aunque las magnitudes relacionadas con las sustentacion se aproximan con pocoerror, aquellas relacionadas con la resistencia inducida y los momentos, aunque son del mismo orden,divergen mucho mas. Se ha supuesto que XFLR5 toma los momentos con respecto a la lınea c/4,con lo cual se ha procedido como en el caso anterior evaluando el momento en la posicion del centroaerodinamico que devuelve VLM-US. Este proceso en sı ya puede significar una fuente de erroresimportante.

Por otro lado, la divergencia en la resistencia inducida implica que al ser los coeficientes de susten-tacion practicamente identicos, XFLR5 sobreestima la eficiencia de Oswald con respecto a VLM-US,que da un valor de 0,7959 como ya se vio anteriormente.

CAPITULO 5. RESULTADOS 68

Teniendo en cuenta que CDi =C2L

πARe , se extrae que asumiendo que ambos CL son practicamenteiguales, y que el alargamiento es el mismo, el valor de e necesario para obtener una resistencia inducidatan pequena debe ser mayor que 1, lo cual carece de sentido fısico. Habrıa que profundizar en comoXFLR5 calcula dicha resistencia, lo cual cae fuera de los lımites de este texto. Ası, por lo pronto y enbase al razonamiento anterior, se va a tomar como bueno el resultado de VLM-US, tambien abaladopor Tornado segun el estudio previo.

5.2.1.3. USAF Digital Datcom

Digital Datcom es un software que recoge algunos de los metodos de calculo semiempıricos que laUSAF ha ido elaborando a partir de numerosos ensayos en tunel desde la decada de los 60. Dichosmetodos se basan en parametros sencillos de la geometrıa del avion pero suponen una ardua tarea ala hora de obtener resultados generales sobre algun modelo de avion complejo ya que precisa el accesoa numerosas curvas experimentales. La ventaja de DDatcom es que permite el manejo computacionalde todos estos metodos de manera que para un archivo de entrada .dcm, genera un archivo de salida.out con cuantiosos resultados de interes relacionados con la aerodinamica y estabilidad del modeloy todo ello, en cuestion de segundos.

Conviene recordar que dichos resultados no son mas que interpolaciones de una gran base de datos,con lo que, sin constituir una solucion definitiva para el modelo, se comprueba que son una primeraaproximacion bastante buena en fases preliminares del diseno. Por otro lado, hay que resaltar que losresultados que se extraigan de DDatcom ya sı contemplan los efectos de la viscosidad y compresibilidad,y hay que tener en cuenta que en el resto de codigos con los que se esta comparando la solucion nose han contemplado dichos efectos. Por esta razon, aunque en apartados previos se ha tomado unavelocidad incidente de 150m/s, se va a reducir en este analisis a 80m/s para reducir el Mach a unvalor claramente incompresible de 0,25 frente al casi 0,5 de los casos anteriores. De esta manera, semodelara el mismo problema en terminos de coeficientes adimensionales.

En lo que sigue, se utilizara el software sin entrar a profundizar en como se modelan las geo-metrıas en cuestion para dar protagonismo a la propia comparacion e interpretacion de los resultados.Asımismo, se incluiran unicamente las lıneas de codigo correspondientes a las estructuras principalesde entrada para que el lector familiarizado simplemente pueda reconocer el modelo.

El lector interesado en profundizar en aspectos relacionados con el manejo de DDatcom puedeconsultar el Manual de Introduccion a Datcom en espanol [5] o dirigirse directamente al manual deuso que aporta la USAF en [8].

Las estructuras de entrada del modelo se resumen en:

* Flight Conditions *

$FLTCON NMACH=1.0, MACH(1)=.25,

NALT=1.,ALT(1)=6000.,

NALPHA=10.0,

ALSCHD(1)= -10.0, -8.0, -6.0, -4.0, -1.0, 0.0, 1.0, 4.0, 6.0, 8.0, 10.0,

GAMMA=0., LOOP=1.0,

RNNUB(1)=20120887.0$

* Wing planform variables pg 37-38

$WGPLNF CHRDR=2.,CHRDTP=2.,CHRDBP=2.,

SSPN=6.,SSPNE=6.,CHSTAT=0.,TWISTA=0.,TYPE=1.,

SAVSI=0.,SAVSO=0.0,DHDADI=0.,DHDADO=0.$

CAPITULO 5. RESULTADOS 69

* Symetrical Flap Deflection parameters

$SYMFLP FTYPE=1.,NDELTA=9.,DELTA(1)=-40.,-30.,-20.,-10.,

0.,10.,20.,30.,40.,SPANFI=0.6,SPANFO=6.,CHRDFI=0.4,

CHRDFO=0.4,NTYPE=1.0,CB=0.0,TC=0.01,PHETE=0.0,PHETEP=0.0$

* Wing Sectional Characteristics Parameters *

NACA-W-4-0002-25

Del archivo .out se pueden extraer los siguientes resultados para angulo de ataque de 1 grado ydeflexion positiva de los flaps de 10 grados:

VLM-US DDatcom Error relativo ( %)

CL 0.4857 0.4590 5.8170

CL0 0.4013 0.379 5.8839

CLα 4.2119 4.5407 7.2412

CD 0.0158 0.0110 43.6364

CmAC -0.1019 -0.0785 29.8089

xAC/cr 0.2649 0.26028 1.7750

Se observa que la mayorıa de resultados se aproximan bastante en la comparativa, y mas, teniendoen cuenta que se han extraıdo ya no de dos codigos VLM distintos, sino de modelos completamentedistintos. Ası, acercarse en un orden del 5 % al coeficiente de sustentacion interpolado de resultadosempıricos a traves de un codgio VLM puede considerarse perfectamente como un resultado valido.

Tambien resalta la enorme divergencia entre ambos valores de resistencia, siendo el resultado deDDatcom incluso menor que el aportado por XFLR5 de la seccion previa. Por el momento se va aseguir en la lınea de considerar validos los resultados en terminos de resistencia de Tornado y VLM-USya que incluso en el propio manual de la USAF [8], ya desde el principio se desaconseja emplear losmetodos para el calculo de la misma:

“Potential users are forewarned that Datcom drag methods are not recommended for performance”.

En cuanto al coeficiente de momento de picado en el centro aerodinamico (cuya aproximacion desu localizacion se aprecia bastante buena con un casi 2 % de error relativo), se extrae de los resultadosque DDatcom va en la lınea de los valores de Tornado y VLM-US, quedando muy sobredimensionadoel resultado de XFLR5, que dobla practicamente el valor.

Ası, de este primer estudio se puede concluir que, cuantitativamente, los resultados de VLM-USvan en una lınea muy aceptable. En la siguiente tabla se sintetizan los resultados obtenidos en cadacaso a modo resumen y resaltando en rojo los casos con mayor divergencia:

α = 1 / δflap = 10 [deg] VLM-US Tornado XFLR5 DDatcom

CL 0.4857 0.4914 0.4810 0.4590

CL0 0.4013 0.3809 0.4020 0.379

CLα 4.2119 4.2632 4.5264 4.5407

CD 0.0158 0.0144 0.0116 0.0110

CmAC -0.1019 -0.0873 -0.2127 -0.0785

xAC/cr 0.2649 - - 0.26028

CAPITULO 5. RESULTADOS 70

5.3. Estudio del efecto de la deflexion de alerones

Para acometer el estudio de la deflexion asimetrica de las superficies de control, los alerones, se vaa aprovechar el mismo modelo sencillo de ala de la seccion anterior pero simplemente cambiando ladeflexion simetrica por asimetrica. Aunque se sigue manteniendo una deflexion de 10 grados, se va aaumentar el angulo de ataque al valor de 6 grados.

En la figura (5.12) se presentan distribuciones representativas de las soluciones dadas por VLM-USy Tornado.

(a) Campo de velocidades de perturbacion sobre el ex-trados dado por VLM-US.

(b) Distribucion de Cp segun Tornado. Cp.

−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

2*y/b

Cl(y

)

(c) Distribucion de CL a lo largo de la envergadurasegun VLM-US.

−6 −4 −2 0 2 4 60

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9Local CL on main wing

CL

Spanstation

(d) Distribucion de CL a lo largo de la envergadurasegun Tornado.

Figura 5.12: Comparacion grafica de la solucion.

Antes de proceder a la interpretacion de las divergencias y su posible justificacion, en la siguientetabla se presentan algunos valores numericos de interes, incluyendo tambien resultados de DDatcom.

α = 6 / δ = 10[deg] VLM-US Tornado DDatcom

CL 0.4462 0.4441 0.4730

CD 0.0239 0.0210 0.0198

CmROLL 0.0845 0.0756 0.0598

A la vista de los resultados, lo primero que salta a la luz es que, si bien VLM-US y Tornadoclavan practicamente el mismo coeficiente de sustentacion, en la distribucion de sustentacion frentea la envergadura se ve que el pico en VLM-US es mayor que en Tornado. Ası, para que el valormedio (CL) coincida, se debe compensar con un defecto mayor de sustentacion en el semiala derecha,

CAPITULO 5. RESULTADOS 71

acentuandose ası el momento de balance para el caso de VLM-US tal y como se observa en la tabla.Teniendo en cuenta que el resultado que aporta DDatcom tira bastante a la baja con respecto al resto,se extrae que en este caso VLM-US esta descompensando la distribucion en demasıa y el momento debalance queda sobredimensionado en un 40 %. Esto deja de ser admisible.

Para intentar extraer la causa de esta divergencia, aunque sea un enfoque puramente heurıstico,note el lector como en la figura (5.12a) el efecto sobre el campo de velocidades circundante que suponela deflexion del aleron se propaga de algun modo aguas arriba condicinando el pico de succion en elborde de ataque.

Se tiene que en lıneas y = cte de la envergadura que solapan con el aleron con deflexion positiva(contribuye a mayor sustentacion), el pico de succion de borde de ataque se acentua. Lo propio ocurreen la region que solapa con el aleron que contribuye a la perdida de sustentacion disminuyendo lasuccion en la correspondiente region del borde de ataque final.

En un primer examen, esta influencia sobre el campo de velocidades aguas arriba es lo que seespera de un flujo subsonico. El problema es que dicha influencia es demasiado grande o mas de loque debiera para ajustar bien el resto de resultados en terminos de momento de balance. Tambienpuede observarse en la figura figura (5.12b) que en el caso de Tornado pasa exactamente lo mismo,justificando ası la tendencia, pero la influencia esta mucho mas amortiguada. Esto puede deberse a laforma de los vortices de herradura que emplea Tornado; los segmentos adicionales de cada cuadrilaterode torbellinos del modelo que se emplea en VLM-US acentuan la influencia de cada panel aguas arriba.

En cualquier caso, se propone un estudio mas detallado en el que modificando parametros internoscomo la deflexion de la estela, o los puntos finales de la misma, se vaya viendo la evolucion de losresultados en busca de un buen ajuste.

5.4. Estudio del efecto de la curvatura

En este apartado se va a cambiar el perfil simetrico que se utilizo en apartados previos para modelarla placa plana rectangular por un perfil NACA-6409. La deflexion de los flaps/alerones se situara en0 grados para quedarnos unicamente con el aporte del termino de curvatura.

Figura 5.13: Geometrıa del modelo en VLM-US.

CAPITULO 5. RESULTADOS 72

Tras resolver para un angulo de ataque de 1 grado, VLM-US devuelve el siguiente campo develocidades sobre extrados.

Figura 5.14: Solucion de la placa rectangular con la curvatura NACA-64** por VLM-US.

Como es de esperar, se observa que debido a que el perfil en cuestion retrasa el maximo de curvaturaal 40 % de la cuerda, es en torno a esta distancia donde tambien se produce el pico de succion. Desdeel borde de ataque hasta el pico de succion, se aprecia una gran aceleracion del flujo tal y como es deesperar. Tambien se aprecia como una vez rebasado el pico de succion, la deceleracion es muy suavepara evitar los posibles gradientes adversos excesivos y ası mantener la capa lımite adherida. Recordarque VLM-US solo resuelve el problema de curvatura, con lo cual los efectos del espesor no quedanrecogidos en dicha solucion y en el borde de ataque no se produce la succion que pueda esperarsedebida al rebordeo. Es mas, se aprecia claramente que los paneles proximos al borde de ataque estansuccionando por el intrados. Aunque no es lo que se espera del fenomeno en perfiles reales, note ellector que los paneles proximos al borde de ataque tienen unas normales que al proyectar sobre el flujoincidente resultan con angulo de ataque negativo, y el metodo empleado se basa exclusivamente enesta consideracion para calcular la circulacion, lo cual justifica el error.

Una vez verificado que el comportamiento cualitativo de la solucion es aceptable, se procede acomprobar si cuantitativamente los resultados solapan con los que propone DDatcom y Tornado. Paramodelar la superficie de curvatura sin espesor, se tomara un perfil NACA-6402, cuya superficie decurvatura es la misma y el espesor se ha reducido para asemejarse mas al modelo de VLM-US. En lasiguiente tabla se recojen los principales resultados extraıdos:

α = 1 / NACA− 6402 VLM-US Tornado DDatcom

CL 0.5301 0.5561 0.5970

CL0 0.4561 0.4821 0.5140

CLα 4.2077 4.2485 4.6080

CD 0.0159 0.0166 0.0260

CmAC -0.1661 -0.1391 -0.1122

Por lo general, se extrae que los resultados en terminos de sustentacion solapan con errores de entorno al 10 %. No ocurre esto en los casos del coeficiente de resistencia y momento de picado en elcentro aerodinamico.

La divergencia en el coeficiente de resistencia se presenta solo con DDatcom y puede justificarsecon que este contempla viscosidad y tampoco emplea metodos muy fiables para su determinacion. Porotro lado el coeficiente de momento de cabeceo extraıdo de VLM-US tambien queda muy sobredimen-sionado con respecto al valor dado por DDatcom y no puede pasarse por alto. Se observa en todos loscasos que Tornado propone una solucion intermedia entre los otros dos softwares.

CAPITULO 5. RESULTADOS 73

5.5. Estudio del efecto de las condiciones de vuelo

En este apartado se analizara el mismo modelo que hasta ahora pero con flecha de 20 gradosen el segundo cajon y para distintas condiciones de vuelo en terminos de resbalamiento y rotacionesinstantaneas y se compararan los resultados con los otros softwares. Notar que el modelo aerodinamicoempleado en VLM-US ha eliminado en su formulacion los terminos no estacionarios. Esto implica quela solucion ante rotaciones del flujo solo puede considerarse valida en regimen cuasiestacionario.

En la figura (5.15) se observa la nueva geometrıa. Para evitar la interferencia de errores, se anulala deflexion de flaps/alerones.

Figura 5.15: Nuevo modelo con flecha positiva para evaluar el efecto de las condiciones de vuelo.

5.5.1. Resbalamiento

En primer lugar, se va a resolver el modelo para un angulo de ataque de 1 grado y 15 grados deresbalamiento. Las rotaciones en este primer estudio seran nulas para recoger el efecto de cada cosa porseparado. A priori, cabe esperar que angulos de resbalamiento positivos (el flujo entra por la derecha)supongan que, al tener flecha positiva, los perfiles del semiala derecha vean un flujo normal mayor ysustenten mas que los del semiala izquierda generandose ası un pequeno momento de balance.

CAPITULO 5. RESULTADOS 74

En la figura (5.16) se muestra una comparativa de la solucion.

−2 0 2 4 6−6

−4

−2

0

2

4

6

CL,w

=0.49241 Cmroll,w

=−0.0078049

(a) Solucion extraıda de VLM-US.

−2 0 2 4 6−6

−4

−2

0

2

4

6

CL,w

=0.4962 Cmroll,w

=−0.0069953

(b) Solucion extraıda de Tornado.

Figura 5.16: Comparacion del efecto del resbalamiento (α = 1deg).

Se aprecia que en concordancia a lo esperado, en ambos casos las succiones maximas estan en elsemiala derecha. Por otro lado, la comparacion cuantitativa de los resultados a nivel de CL y CmROLLes asequible con errores relativos inferiores al 10 %. Se ha intentado comparar tambien con XFLR5,pero para este modelo y sin viscosidad no devuelve resultados coherentes. Igualmente, note el lectorcomo en ambos casos se obtiene una succion por intrados en el borde de ataque debido a que al noconsiderar espesor, no se esta modelando el rebordeo y los paneles de borde de ataque debido a lacurvatura y al pequeno angulo de ataque ven un flujo incidente a angulo de ataque negativo. En el casode VLM-US este efecto es mas pronunciado y se prevee que invertira la tendencia con el resbalamientoa angulos de ataque mayores.

En la figura (5.17) se muestra la comparativa pero para un angulo de ataque mayor de 10 grados.

0

2

4

−8−6−4−20246

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

CL,w

=1.1314 Cmroll,w

=−0.0076875

(a) Solucion extraıda de VLM-US.

01

23

−6

−4

−2

0

2

4

6

−1

0

1

CL,w

=1.1039 Cmroll,w

=−0.014502

(b) Solucion extraıda de Tornado.

Figura 5.17: Comparacion del efecto del resbalamiento (α = 10deg).

CAPITULO 5. RESULTADOS 75

En efecto, puede observarse que mientras que el pico de succion en torno a x = 0,4c sigue dondedebe, en el semiala derecha, al aumentar el angulo de ataque se vislumbra que el pico de succiondel borde de ataque no responde al resbalamiento como deberıa, sino al contrario acentuandose eldel semiala izquierda. Esto es debido al fenomeno previamente comentado; al entrar el flujo por laderecha, el borde de ataque acentua su actuacion por el semiala que ve mayor componente normal deflujo incidente, la derecha ya que la flecha es positiva. El problema es que la actuacion en borde deataque, debido a que los paneles tienen incidencia negativa y que no se esta considerando el rebordeoal no haber modelado el espesor, no es desfavorable en terminos de succion, y esto se acentua por laderecha. De este modo, resulta que el semiala con mayor sustentacion es paradojicamente la que veuna menor componente normal de flujo incidente.

Para mitigar este efecto serıa necesario considerar el espesor o el rebordeo en el borde de ataque, conlo cual se propone como posibles mejoras. Asımismo, para garantizar resultados coherentes en terminosde balanceo ante resbalamiento, se recomienda al usuario no contemplar los efectos del resbalamientoa angulos de ataque en los que la succion de borde de ataque sea superior a la succion del punto demaxima curvatura sobre la cuerda del perfil.

Por otro lado, Tornado responde como se espera devolviendo una mayor contribucion de susten-tacion en el ala derecha, que ve un flujo normal mayor debido al resbalamiento.

5.5.2. Rotaciones

Para este estudio se selecciona un angulo de ataque de 10 grados y se disminuye la velocidad devuelo a 10m/s para acentuar el efecto de la rotacion. En primer lugar se procede a configurar unarotacion sobre el eje longitudinal de 5 grados por segundo, que se traduce en p = 0,0873rad/s. Una vezresuelto el problema se espera que el semiala derecha, que segun el giro esta bajando, vea un angulode ataque instantaneo mayor que la izquierda, que esta subiendo. Ası, la sustentacion debe ser mayoren el semiala derecha.

0

0.5

1

1.5

2

2.5

3

−4−202468

CL,w

=1.146 Cmroll,w

=−0.023303

(a) Solucion extraıda de VLM-US. Vista 3D

0 0.5 1 1.5 2 2.5 3 3.5 40

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

CL,w

=1.146 Cmroll,w

=−0.023303

(b) Solucion extraıda de Tornado. Vista en perfil paravisualizar la evolucion del flujo con la envergadura.

Figura 5.18: Efecto de una rotacion p = 0,0873rad/s. CL = 1,146 y CmROLL = −0,02333.

Se observa que cuantitativamente, VLM-US responde como se espera. Teniendo en cuenta que, bajoestas condiciones, Tornado devuelve un CL de 1,1516 y un CmROLL de −0,015914, puede concluirseque los resultados dados por VLM-US estan en la misma lınea y son aceptables.

CAPITULO 5. RESULTADOS 76

Para finalizar el estudio, y aprovechando que en este se introduce la solucion para un ala con unquiebro y flecha, se va a intentar justificar la forma de la solucion.

Por un lado, se aprecia con claridad que la flecha supone un barrido hacia las puntas; el pico desuccion se va trasladando desde el encastre a la punta del ala a medida que aumenta la flecha. Sinembargo, cerca de la punta confluyen tanto el efecto del barrido hacia las puntas como el efecto derebordeo. Dicho esto, se puede demostrar que existe una seccion donde la superposicion de ambosefectos supone una gran aceleracion del flujo a modo sumidero. En la practica este efecto es indeseableen tanto en cuanto interesa tener las zonas de succiones maximas alejadas de los perfiles donde seencuentran las superficies de control. Esto es debido a que tras la succion, el flujo vuelve a frenarsecon el gradiente adverso de presiones que esto conlleva. El gradiente adverso sera tanto mas abruptocomo profunda haya sido la succion ası que son las regiones mas proclives a entrar en perdida.

Por otro lado, se aprecia una caıda en la succion en torno al quiebro que puede justificarse con loscambios en la direccion de los rebordeos de borde de ataque.

5.6. Estudio de la validez de la aproximacion del centro aerodinami-co por el centroide

En lo que sigue se va a aprovechar el codigo para representar distintas geometrıas de semialas, demenor a mayor complejidad, situando sobre ellas lugares geometricos representativos como el centroaerodinamico, centroide, cuerda aerodinamica media, centro de presiones etc. Se resolvera el problemapara un angulo de ataque representativo de 5 grados y bajo condiciones de resbalamiento y rotacionesnulas. Asımismo, se empleara un perfil simetrico, con lo que la curvatura de la superficie alar sera nula.

De los resultados de la figura (5.19) se extrae que, por lo general, en alas con pequeno estrecha-miento la cuerda centroidal coincide practicamente con la ubicacion transversal de la MAC. A medidaque aumenta el estrechamiento la MAC se va adelantando hacia el borde marginal. La flecha positiva,por su parte, retrasa el centro aerodinamico hasta el punto en que en casos de flechas muy elevadas, lapropia MAC cae fuera de la forma en planta del ala. En la mayorıa de los casos, sobre todo en alas detres cajones con flechas rondando los 30 grados y estrechamientos reducidos, se comprueba que en unaprimera aproximacion es aceptable suponer que el centro aerodinamico esta en e centroide geometricodel ala. Menos error se cometerıa si en alas con estrechamientos reducidos se localiza sobre un cuartode la cuerda centroidal.

CAPITULO 5. RESULTADOS 77

−1 0 1 2 3 40

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5MACCuerda centroidal

Centro Aerodinámico

z

x

(a) Un cajon (−%), E1 = 1, ψba,1 = 0deg

0 1 2 3 4 50

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5MACCuerda centroidal

Centro Aerodinámico

z

x

(b) Dos cajones (15 %), E2 = 1, ψba,2 = 25deg

−1 0 1 2 3 40

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5MACCuerda centroidal

Centro Aerodinámico

z

x

(c) Dos cajones (15 %), E2 = 0,5, ψba,2 = 25deg

−1 0 1 2 3 4 50

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5MACCuerda centroidal

Centro Aerodinámicoz

x

(d) Dos cajones (15 %), E = 0,1, ψba = 40deg

−1 0 1 2 3 4 50

1

2

3

4

5

6MAC

Cuerda centroidal

Centro Aerodinámico

z

x

(e) Tres cajones (10 % − 55 %), E2 = 1, E3 = 0,65,ψba,2 = 15deg, ψba,3 = 35deg

−1 0 1 2 3 4 5 60

1

2

3

4

5

6MAC

Cuerda centroidal

Centro Aerodinámico

z

x

(f) Tres cajones (10 % − 50 %), E2 = 0,6, E3 = 0,45,ψba,2 = 25deg, ψba,3 = 45deg

Figura 5.19: Validez de la aproximacion del centro aerodinamico por el centroide geometrico.

CAPITULO 5. RESULTADOS 78

5.7. Estudio del problema acoplado ala y estabilizador horizontal:deflexion de la estela

En este apartado se va a modelar un ala con varios cajones y un estabilizador horizontal massencillo en vistas a evaluar la influencia de la estela del ala sobre la sustentacion del estabilizador.El sistema ala + estabilizador se tomara del ejemplo que se modelo en la seccion (4.1) para ilustrarel funcionamiento del generador de alas. Los unicos cambios que se introducen sobre dicho modeloconsisten en anular la deflexion de todas las superficies de control y sustituir el perfil del estabilizadorhorizontal por uno simetrico.

En la figura (5.20) , se presenta la solucion para la misma cota de referencia del ala y el estabilizadorbajo unas condiciones de vuelo de 6000m de altitud, una velocidad de 100m/s y un angulo de ataquede 2deg.

−2

0

2

4

6

8

10

12

−8

−6

−4

−2

0

2

4

6

80

0.2

0.4

0.6

0.8

1

1.2

1.4

CL,w

=1.4155 Cmroll,w

=0

Figura 5.20: Solucion conjunta para ala y estabilizador situados en la misma cota. Se aprecia como elmodelo de winglets hace que el ala principal recupere succion en los bordes marginales.

En lo que sigue se procedera a bajo nivel variando la cota relativa entre ala y estabilizador paraevaluar el efecto de la estela sobre el ultimo. Para volver a ilustrar el proceder a bajo nivel empleandolas funciones de la librerıa, acontinuacion se adjuntan las correspondientes lıenas de codigo:

% Cargamos la estructura de partida con las alas en cuestion

load(’input_downwash.mat’)

%Flight cond %%%%%

ALT=6000; Uinf=150; alfa=2; beta=0; p=0; q=0; r=0;

%% Cota del estabilizador

pos_ref_z=linspace(-2,2,20); % en metros

%Prellocation

CL_w = zeros(1,length(pos_ref_z));

CL_est = zeros(1,length(pos_ref_z));

for k=1:length(pos_ref_z)

inputt(2).pos_ref_z=pos_ref_z(k); % Se cambia la cota del estabilizador

CAPITULO 5. RESULTADOS 79

ala(1)=create_wing(inputt(1)); % Se crea el primer ala

ala(2)=create_wing(inputt(2)); % ......... segundo ala

lattice= lattice_all(ala);

sol=justsolve_all_light(lattice,ALT,Uinf,alfa,beta,p,q,r);

CL_w (k)=sol(1).Cl;

CL_est (k)=sol(2).Cl;

end

figure(1), plot(pos_ref_z,CL_est,’LineWidth’,2), grid on,

Tras efectuar el barrido, se obtiene la figura (5.21).

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

z0 [m]

CLestH CLwing

Figura 5.21: Influencia de la estela sobre el estabilizador horizontal. Barrido en cota del estabilizador.

Como es de esperar, el ala apenas nota la influencia del cambio de cota del estabilizador, sinembargo, el estabilizador sı que varıa su actuacion en funcion a su cota relativa con el ala. Se observaque conforme se alinea con esta, la sustentacion va cayendo debido al angulo de ataque inducido quemete la estela.

En este caso, debido a que se trata de un perfil simetrico y el angulo de ataque es pequeno al sumarla contribucion del angulo de ataque inducido por la estela el CL llega a ser negativo. Tras superar elpunto donde la influecia de la estela es maxima, en torno a z = −0,35m, se vuelve a recuperar CL aldisminuir el angulo de ataque inducido a medida que se aleja el estabilizador de la estela del ala.

CAPITULO 5. RESULTADOS 80

Tambien es interesante notar como el mınimo no se da justo para la alineacion, sino para una cotadel estabilizador tal que coincide aproximadamente con la posicion de la estela, que recordemos sehabıa deflectado hacia abajo segun la direccion de los paneles del borde de salida. Se propone parafuturas revisiones un estudio para ver como se modificarıa este resultado para distintos valores delparametro CORR, que modificaba la direccion con la que la estela abandonaba el borde de salida.

Llegados a este punto, se procede a hacer otro barrido pero manteniendo la posicion relativa ymodificando la incidencia del ala. Ası conseguimos aumentar el CL de la misma sin aportar mayorinfluencia al estabilizador que el propio efecto de la estela.

La implementacion a bajo nivel del barrido es muy parecida a la anterior y se obtiene sustituyendoel siguiente bloque de codigo donde corresponde en el anterior:

[...] p=0;q=0;r=0;

%% Incremento de incidencia

inc_i=linspace(-2,5,10)*pi/180; % en grados

%Prellocation

CL_w = zeros(1,length(inc_i)); CL_est = zeros(1,length(inc_i));

for k=1:length(inc_i)

inputt(1).alpha_r=2*pi/180+inc_i(k);

inputt(1).cajon(1).alpha=inputt(1).alpha_r; inputt(1).cajon(2).alpha=inputt(1).alpha_r;

inputt(1).cajon(3).alpha=inputt(1).alpha_r; inputt(1).cajon(4).alpha=inputt(1).alpha_r;

ala(1)=create_wing(inputt(1)); % Se crea el primer ala [...]

Tras efectuar el barrido se obtiene la figura (5.22).

0.7 0.8 0.9 1 1.1 1.2 1.3−0.26

−0.24

−0.22

−0.2

−0.18

−0.16

−0.14

−0.12

CLw

CLe

st

Figura 5.22: Influencia de la estela sobre el estabilizador horizontal. Barrido en incidencia del ala.

Como es de esperar, se observa que a medida que aumenta la incidencia del ala (y por tantoaumenta su coeficiente de sustentacion), los torbellinos de estela se acentuan aumentando el angulode ataque inducido. Esto se traduce en un menor angulo de ataque total visto desde el estabilizadorhorizontal con lo cual su sustentacion cae haciendose mas negativa. Un estabilizador simetrico volandoa angulo de ataque nulo inmerso en la estela de un ala con sustentacion positiva tendrıa segun, esterazonamiento, un coeficiente de sustentacion negativo al ver un angulo de ataque neto negativo.

81

Capıtulo 6

Conclusiones y lıneas de mejora futuras

En general, los resultados obtenidos han sido bastante aceptables en el marco de la comparativacon los demas softwares y, ademas, los tiempos de computacion son en todos los casos del orden desegundos frente al orden de minutos de programas como Tornado. El interfaz grafico empleado ha sidode gran utilidad para extraer los resultados de la seccion anterior con lo cual, se da por exitoso.

Asımismo, y en vistas a una mejor aceptacion, incluir que su diseno se ha ido mejorando poco a pocoatendiendo a la demanda de usuarios piloto, a los cuales aprovecho para mostrar mis agradecimientos.

En cuanto a aspectos mas puntuales sobre la solucion y los posibles motivos de las divergencias,note el lector que ya se han ido comentando conforme se extraıan los resultados. De este modo, seprocede a repasar los aspectos mas importantes a tener en cuenta ası como posibles lıneas de desarrollofuturas.

En primer lugar, y como comportamiento general del modelo, se puede extraer que frente a losvortices de herradura (horseshoe vortex ), los vortices cerrados propagan las perturbaciones del flujoaguas arriba con una mayor intensidad. Aunque los resultados integrales en terminos de sustentacionson muy aceptables, este hecho supone que hay que poner especial cuidado en estudios que involucrenel calculo de momentos, sobre todo de balanceo. Una posible lınea de mejora futura podrıa consistiren adecuar la funcion lattice all.m para que el usuario pueda elegir si hacer un mallado con lıneasde torbellinos cerradas o extendidas al infinito y comparar ambas soluciones.

Asimismo, en el apartado del estudio de la curvatura se detecto que el borde de ataque no fun-cionaba como era de esperar en la realidad. A angulos de ataque pequenos, los paneles del borde deataque estaban a angulo de ataque negativo con respecto al flujo, lo cual suponıa sobrepresiones conrespecto a lo esperado teniendo en cuenta que al no haber modelado espesor, no existe la succiondebida al rebordeo. Esto afecta directamente al coeficiente de momentos de cabeceo y conviene tenercuidado, ya que va a ser mas negativo de la cuenta. A angulos de ataque mayores, el efecto indeseablese va suavizando, adoptando la solucion un caracter mas fiable. Incluir que este efecto fue el causantede que en el posterior estudio ante resbalamiento a angulos de ataque moderados, el borde de ataquecon mayor succion fuera el opuesto al esperado. Se propone como posible lınea de desarrollo futu-ra la implementacion de un modelo con soluciones singulares tipo doblete en lugar de vortices paraası recoger el efecto del espesor.

CAPITULO 6. CONCLUSIONES Y LINEAS DE MEJORA FUTURAS 82

Tambien se ha comprobado que en perfiles simetricos, aunque tengan flecha positiva, el efecto delresbalamiento es practicamente nulo. Esto puede justificarse si se tiene en cuenta que el modelo deestela no se ha modificado segun la direccion del flujo incidente aguas abajo del borde de salida debidoa que las condiciones de vuelo se introdujeron tras ya haber creado el modelo lattice con su respectivaestela.

(a) Sin resbalamiento (b) Con resbalamiento

Figura 6.1: Modelos de estela.

Ante esta situacion, y en vistas a comprobar si, efectivamente, se corrigen los resultados, se va arealizar un estudio para la misma geometrıa empleada en la seccion 5.5 pero sin utilizar curvaturay deflectando la estela tambien tal que se alinee con la direccion del flujo incidente, que tendra unangulo de ataque de 2 grados y un resbalamiento de 5. Para ello se procede a modificar la funcionlattice all.m directamente como se sigue:

% Puntos C

xCk(1:(M-1),1:N)=xBk(2:M,1:N);

xCk(M,1:N)=xBk(M,1:N)+100*cr(k); % Estx

yCk(1:(M-1),1:N)=yBk(2:M,1:N);

yCk(M,1:N)=yCk((M-1),1:N)-(xCk(M,1:N)-xCk((M-1),1:N)).*tan(beta); % Esty

zCk(1:(M-1),1:N)=zBk(2:M,1:N);

zCk(M,1:N)=zCk((M-1),1:N)-(xCk(M,1:N)-xCk((M-1),1:N)).*tan(alphak(M,1:N)+CORR*pi/180); % Estz

%

% Puntos D

xDk(1:(M-1),1:N)=xAk(2:M,1:N);

xDk(M,1:N)=xAk(M,1:N)+100*cr(k); % Estx

yDk(1:(M-1),1:N)=yAk(2:M,1:N);

yDk(M,1:N)=yDk((M-1),1:N)-(xDk(M,1:N)-xDk((M-1),1:N)).*tan(beta); % Esty

zDk(1:(M-1),1:N)=zAk(2:M,1:N);

zDk(M,1:N)=zDk((M-1),1:N)-(xDk(M,1:N)-xDk((M-1),1:N)).*tan(alphak(M,1:N)+CORR*pi/180); % Estz

Notar que solo cambian los puntos finales tipo C y D comentados como Esty.

Tras solucionar el problema con ambos modelos de estela, mientras el modelo sin resbalamiento(figura (6.1a)) da coeficientes de momento nulos (orden del epsilon de matlab), el modelo con la estelaorientada segun el flujo con resbalamiento (figura (6.1b)) da coeficientes de momento aceptables delorden de 0,001. Dicho esto, se recomienda que aquellos usuarios interesados en analizar el compor-tamiento ante resbalamiento, modifiquen la funcion lattice all.m para que recoja el resbalamientodeseado y genere la estela en concordancia. Notar que esto supondra algo mas de costo computacionala la hora de hacer barridos porque en cada iteracion se tendra que ejecutar la funcion, crear de nuevotodos los puntos, normales, superficies..., lo cual si no fuera por la necesidad de modificar la estela

CAPITULO 6. CONCLUSIONES Y LINEAS DE MEJORA FUTURAS 83

carecerıa de sentido ya que la geometrıa es la misma. Ası, podrıa plantearse como posible mejora algunmodulo que modifique la estela segun el resbalamiento sin tener que entrar a recorrer toda la funciondel lattice.

Por ultimo, otra posible lınea de mejora podrıa consistir en cambiar el enfoque de las estructurasde datos por clases desde el enfoque de la programacion orientada a objetos. MATLAB ya incorpora laposibilidad de trabajar con dichas clases, que pasarıan a tener unos campos fijos a modo propiedades ya las que se podrıan adjuntar las funciones de interes. No obstante, tambien puede resultar interesanteadaptar el codigo directamente a C++ en vistas a mejorar los tiempos de computacion aun mas.

84

Apendice A

Codigos de interes

A.1. generate input.m

%%% Generacion de geometrıa

clear input

% close all

% GENERAL

input.M= 30; %resol long mallado

input.cr= 3; %cuerda raiz [m]

input.alpha_r= 0*pi/180; %INCIDENCIA de la raiz (angulo que forma con el fuselaje)

input.curv= 0.01*input.cr;

input.pos_ref_x= 0; %pos [m] del ref point

input.pos_ref_z= 0; %pos [m] del ref point

input.b_tot= 20; %envergadura total

input.show_geom= 1; % muestra por pantalla la geometrıa

input.st_vert= 0;

input.winglet= 0; % [0/1] si 1, toma el ultimo cajon como winglet

b_tot= input.b_tot;

M= input.M;

% CAJON 1 (por ejemplo)

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

% Para introducir mas cajones copiar este modulo y actualizar el valor de k %

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

k=1; %

input.cajon(k).mallado.N= 3; %resol trans mallado loc %

N(k)=input.cajon(1).mallado.N; %

input.cajon(k).span= 0.1*b_tot/2;%envergadura del cajon %

input.cajon(k).flecha= 0*pi/180; %flecha %

input.cajon(k).estrechamiento= 1; %estrechamiento %

input.cajon(k).alpha= input.alpha_r;%incidencia %

input.cajon(k).Died= 0*pi/180; %diedro %

input.cajon(k).flapped= 0; %flap? y/n [1/0] %

input.cajon(k).aileroned= 0; %aleron? y/n [1/0] %

input.cajon(k).sup_cont.geom.x_ch= 0*int8(M); %x_charnela %

input.cajon(k).sup_cont.geom.pos_min= 0*int8(N(k));%posicion mınima aleron %

input.cajon(k).sup_cont.geom.pos_max= 0*int8(N(k));%posicion maxima aleron %

input.cajon(k).sup_cont.deflex= 0*pi/180; %deflexion sup control %

%

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

APENDICE A. CODIGOS DE INTERES 85

A.2. NACA v2.m

function perfil=NACA_v2(filename)

% NACA_v2 recoge un fichero .dat y devuelve los puntos del perfil contenido

% en este. La actualizacion de la version recoge la posibilidad de que el

% fichero .dat tenga un tittulo de cabecera antes de las columnas con los

% puntos que nos interesan. La idea de como opera es muy sencilla. Mientras

% que la variables puntos este vacıa, pues itera en el bucle.

%

% En cada iteracion del bucle, pasamos el fscanf a partir de la lınea de la

% k-esima iteracion. Esto es, en la primera iteracion pasarıamos fscanf

% desde la primera lınea: ¿es el formato adecuado desde la primera lınea?

% sı --> pasa el fscanf a todo y sale del bucle

% no --> avanza una lınea y volvemos a iterar, en la siguiente iteracion

% el fscanf pasara a partir de la segunda lınea.

%

% La condicion para salir del fscanf es si la variable puntos esta vacıa o

% llena. Cuando el fscanf se encuentra un formato en el fichero como el que

% lleva especificado en la sentencia pues hace lo que se espera, pero

% cuando se encuentra un formato distinto (titulos, cabeceras... en

% definitiva todo lo que no sean dos columnas de numeros), pues devuelve

% una salida vacıa y nosotros nos aprovechamos de esto para seguir iterando

% en el bucle -> flag=1

fid=fopen(filename,’r’); %Abrimos el fichero

flag=1;

k=1;

while flag

puntos=fscanf(fid,’%g %g \n’); % Escaneamos todos los datos en un unico vector

fseek(fid,0,’bof’);

for i=1:k,

fgetl(fid);

end

k=k+1;

if isempty(puntos)

flag=1;

else

flag=0; % Salir del bucle

end

end

%try

% puntos=fscanf(fid,’%g %g \n’); % Escaneamos todos los datos en un unico vector

% a=1;

% catch

% try

% fgetl(fid); puntos=fscanf(fid,’%g %g \n’); a=2;

% catch

% fgetl(fid); puntos=fscanf(fid,’%g %g \n’); a=3;

% end

% end

N=length(puntos)/2; % Registramos la longitud del vector y dividimos por dos, sera la longitud de cada columna

fseek(fid,0,’bof’); % Ponemos el puntero al principio del documento de nuevo

clear puntos,

flag=1;

k=1;

while flag

puntos=fscanf(fid,’%g %g \n’,[2,N]); % Volvemos a escanear pero ahora bien

APENDICE A. CODIGOS DE INTERES 86

fseek(fid,0,’bof’);

for i=1:k,

fgetl(fid);

end

k=k+1;

if isempty(puntos)

flag=1;

else

flag=0; % Salir del bucle

end

end

fclose(fid);

x=puntos(1,:);

z=puntos(2,:);

N=length(x);

ind_0=round(N/2);

perfil.x_span=x(ind_0:end);

perfil.z_ext=z(ind_0:-1:1); %extrados

perfil.z_int=z(ind_0:end); %intrados

% Lınea de curvatura

perfil.z_curv=0.5*(perfil.z_ext+perfil.z_int);

%toc

plot(x,z,’g *-’),

hold on, plot(perfil.x_span,perfil.z_curv,’y --’)

set(gca,’Color’,[0 0 0],...

’YGrid’,’on’,...

’XGrid’,’on’,...

’YColor’,[1 1 1],...

’XColor’,[1 1 1])

axis equal

title(filename,’Color’,[1 1 1],’Fontsize’,8.0)

end

APENDICE A. CODIGOS DE INTERES 87

A.3. scale NACA.m

function zv=scale_NACA(perfil,xa,xs,xv)

tic

% Entrada de datos

x_span=perfil.x_span;

% z_ext=perfil.z_ext; %extrados

% z_int=perfil.z_int; %intrados

z_curv=perfil.z_curv; % curvatura

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% Hasta este punto ya tenemos todos los puntos de un ala que va de 0 a 1,

% lo que hacemos ahora es segun xa y xs, pues reescalamos todo para que

% empiece en xa y acabe en xs, lo primero es calcular la cuerda (chord) y

% luego lo que hacemos es multiplicar todo por esta y desplazar el span en

% x una distancia xa para cazar el offset del borde de ataque.

chord=xs-xa;

x_span_scaled=x_span.*chord+xa; %Span de puntos x reescalado [xa,xs]

% z_ext_scaled= z_ext .*chord; %Puntos z extrados (reescalado a [xa,xs])

% z_int_scaled= z_int .*chord; %Puntos z intrados (reescalado a [xa,xs])

z_curv_scaled=z_curv.*chord; %Lınea de curvatura

%% Ahora hacemos el polyfit y buscamos un polinomio que cace los puntos

% reescalados.

%z_pol_coefs=polyfit(x_span_scaled,z_curv_scaled,3);

%

%zv=polyval(z_pol_coefs,xv);

zv=spline(x_span_scaled,z_curv_scaled,xv);

end

APENDICE A. CODIGOS DE INTERES 88

A.4. show wing.m

function h=show_wing(input)

M= input.M+1;

N= input.N+1;

winglet= input.winglet; %[0/1] tiene winglet?

st_vert= input.st_vert; %[0/1] es un estabilizador_v?

xv= input.geom.xv;

yv= input.geom.yv;

zv= input.geom.zv;

N_c= input.vectores.N_c;

flapped= (input.vectores.flapped | input.vectores.aileroned ); % Si se da uno de los dos lo pinta amarillo

x_ch= input.vectores.x_ch;

pos_min= input.vectores.pos_min;

pos_max= input.vectores.pos_max;

ind= input.ind;

ind_neg= input.ind_neg;

n_cajones=length(N_c);

Color=cell(n_cajones,1);

%% Mostramos la geometrıa por pantalla

h=figure(101); set(h,’Numbertitle’,’off’,’Name’,’Visualizacion 3D’), hold on,

%%%%%%%%%%%%%%%%%%%%%%% DIBUJAMOS POR SECCIONES %%%%%%%%%%%%%%%%%%%%%%%%%%%

C1=18*ones(M,N);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ALA COMPLETA

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

mesh(xv(1:M,1:N),yv(1:M,1:N),zv(1:M,1:N),C1,’CDataMapping’,’direct’); hold on,

%%%%%%%%%%%%%%%%%%%%%% Ahora vamos buscando las superficies de control

for k=1:(n_cajones-1),

Colork=40*ones(M-x_ch(k+1)+1,(pos_max(k+1))-(pos_min(k+1))+1);

if flapped(k+1)==1

hold on,

mesh(xv(x_ch(k+1):M,(ind(k)+pos_min(k+1)):(ind(k)+pos_max(k+1))),...

yv(x_ch(k+1):M,(ind(k)+pos_min(k+1)):(ind(k)+pos_max(k+1))),...

zv(x_ch(k+1):M,(ind(k)+pos_min(k+1)):(ind(k)+pos_max(k+1))),...

Colork,’CDataMapping’,’direct’)

if st_vert==0,% Si no es un estb_v hacemos el simetrico

mesh(xv(x_ch(k+1):M,(ind_neg(k)-pos_max(k+1)):(ind_neg(k)-pos_min(k+1))),...

yv(x_ch(k+1):M,(ind_neg(k)-pos_max(k+1)):(ind_neg(k)-pos_min(k+1))),...

zv(x_ch(k+1):M,(ind_neg(k)-pos_max(k+1)):(ind_neg(k)-pos_min(k+1))),...

Colork,’CDataMapping’,’direct’)

end

end

end

% % % % % % % % % % % % % % % % % % % % % % %

hold off, grid on, axis equal

view(2)

whitebg(gcf,’black’)

set(gcf,’Color’,’k’)

material METAL

end

APENDICE A. CODIGOS DE INTERES 89

A.5. lattice all.m

function [output]=lattice_all(ala)

%

% [outpu]=lattice_all(ala)

%

% ala -> estructura que contiene toda la geometrıa de las alas en cuestion

% que se obtiene con la funcion create_wing_NACA(input)

% disponible en la librerıa.

%

% Esta funcion genera los puntos 1,2,3,4 y A,B,C,D de cada panel ası como

% su cuerda, superficie y vector normal en una estructura PARA CADA ALA.

% Tambien los puntos de colocacion (x,y,z)COL y de centrado de torbellinos

% (x,y,z)g necesarios para generar el sistema de ecuaciones en el solver.

% Asımismo, esta funcion tambien saca las variables ya en formato

% vectorial para un solver por filas.

n_alas=length(ala);

% Creamos vectores vacıos

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

M_w= zeros(n_alas,1);

N_w= zeros(n_alas,1);

xv=cell(n_alas,1);

yv=cell(n_alas,1);

zv=cell(n_alas,1);

S = zeros(n_alas,1);

alpha = cell (n_alas,1);

b_tot = zeros(n_alas,1);

cr = zeros(n_alas,1);

st_vert = zeros(n_alas,1);

pos_ref_x=zeros(n_alas,1);

pos_ref_z=zeros(n_alas,1);

ind_0 = zeros(n_alas,1);

ind = cell (n_alas,1);

ind_neg = cell (n_alas,1);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Interfaz de entrada

for k=1:n_alas

M_w(k)= ala(k).M; %Este es el numero real de paneles que se toman

N_w(k)= ala(k).N;

xvk= ala(k).geom.xv;

yvk= ala(k).geom.yv;

zvk= ala(k).geom.zv;

alphak= ala(k).geom.alpha;

b_tot(k) = ala(k) .b_tot;

cr(k) = ala(k). cr;

st_vert(k)= ala(k).st_vert;

pos_ref_x(k) = ala(k).pos_ref_x;

pos_ref_z(k) = ala(k).pos_ref_z;

indk = ala(k). ind;

ind_negk = ala(k).ind_neg;

ind_0(k) = ala(k). ind_0;

output.param_geom(k) = ala(k).vectores;

end

APENDICE A. CODIGOS DE INTERES 90

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%% Declaramos las celdas vacias (una por ala)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

%Sp= cell(n_alas,1);

%

%

%

xv1= cell(n_alas,1);

xv2= cell(n_alas,1);

xv3= cell(n_alas,1);

xv4= cell(n_alas,1);

%

yv1= cell(n_alas,1);

yv2= cell(n_alas,1);

yv3= cell(n_alas,1);

yv4= cell(n_alas,1);

%

zv1= cell(n_alas,1);

zv2= cell(n_alas,1);

zv3= cell(n_alas,1);

zv4= cell(n_alas,1);

%

%

xA= cell(n_alas,1);

xB= cell(n_alas,1);

xC= cell(n_alas,1);

xD= cell(n_alas,1);

%

yA= cell(n_alas,1);

yB= cell(n_alas,1);

yC= cell(n_alas,1);

yD= cell(n_alas,1);

%

zA= cell(n_alas,1);

zB= cell(n_alas,1);

zC= cell(n_alas,1);

zD= cell(n_alas,1);

%

%

xmp= cell(n_alas,1);

xmr= cell(n_alas,1);

xCOL= cell(n_alas,1);

xg= cell(n_alas,1);

%

ymp= cell(n_alas,1);

ymr= cell(n_alas,1);

yCOL= cell(n_alas,1);

yg= cell(n_alas,1);

%

zmp= cell(n_alas,1);

zmr= cell(n_alas,1);

zCOL= cell(n_alas,1);

zg= cell(n_alas,1);

%

%

h= cell(n_alas,1);

Sp= cell(n_alas,1); %S= cell(n_alas,1);

%

%

normalv_x= cell(n_alas,1);

normalv_y= cell(n_alas,1);

normalv_z= cell(n_alas,1);

%

mod_normal_v= cell(n_alas,1);

%

nx= cell(n_alas,1);

ny= cell(n_alas,1);

nz= cell(n_alas,1);

APENDICE A. CODIGOS DE INTERES 91

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

for k=1:n_alas

M=M_w(k);

N=N_w(k);

%%%%%%%%%%%%%%%%%%%% DECLARAMOS VARIABLES EN CADA ALA

%

Spk=zeros(M,N);

%

%

%

xCk=zeros(M,N);

xDk=zeros(M,N);

yCk=zeros(M,N);

yDk=zeros(M,N);

zCk=zeros(M,N);

zDk=zeros(M,N);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%% PANELES ALAk %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CORR=0;

%%Vertices 1 2 3 4 de cada panel

xv1k(1:M,1:N)=xvk(1:M,1:N); yv1k(1:M,1:N)=yvk(1:M,1:N); zv1k(1:M,1:N)=zvk(1:M,1:N);

xv2k(1:M,1:N)=xvk(1:M,2:(N+1)); yv2k(1:M,1:N)=yvk(1:M,2:(N+1)); zv2k(1:M,1:N)=zvk(1:M,2:(N+1));

xv3k(1:M,1:N)=xvk(2:(M+1),2:(N+1)); yv3k(1:M,1:N)=yvk(2:(M+1),2:(N+1)); zv3k(1:M,1:N)=zvk(2:(M+1),2:(N+1));

xv4k(1:M,1:N)=xvk(2:(M+1),1:N); yv4k(1:M,1:N)=yvk(2:(M+1),1:N); zv4k(1:M,1:N)=zvk(2:(M+1),1:N);

%%Vertices A B C D del torbellino asociado a cada panel:

% Puntos A

xAk(1:M,1:N)=xv1k+0.25.*(xv4k-xv1k);

yAk(1:M,1:N)=yv1k(1:M,1:N)+0.25*(yv4k-yv1k);

zAk(1:M,1:N)=zv1k(1:M,1:N)+0.25*(zv4k(1:M,1:N)-zv1k(1:M,1:N));

%

% Puntos B

xBk(1:M,1:N)=xv2k+0.25.*(xv3k-xv2k);

yBk(1:M,1:N)=yv2k(1:M,1:N)+0.25*(yv3k-yv2k);

zBk(1:M,1:N)=zv2k(1:M,1:N)+0.25*(zv3k(1:M,1:N)-zv2k(1:M,1:N));

%

% Puntos C

xCk(1:(M-1),1:N)=xBk(2:M,1:N);

xCk(M,1:N)=xBk(M,1:N)+100*cr(k); % Est

yCk(1:M,1:N)=yBk;

zCk(1:(M-1),1:N)=zBk(2:M,1:N);

zCk(M,1:N)=zCk((M-1),1:N)-(xCk(M,1:N)-xCk((M-1),1:N)).*tan(alphak(M,1:N)+CORR*pi/180); % Est

%

% Puntos D

xDk(1:(M-1),1:N)=xAk(2:M,1:N);

xDk(M,1:N)=xAk(M,1:N)+100*cr(k); % Est

yDk(1:M,1:N)=yAk;

zDk(1:(M-1),1:N)=zAk(2:M,1:N);

zDk(M,1:N)=zDk((M-1),1:N)-(xDk(M,1:N)-xDk((M-1),1:N)).*tan(alphak(M,1:N)+CORR*pi/180); % Est

%%Cuerda media y area de cada panel:

APENDICE A. CODIGOS DE INTERES 92

%%Segun la nomenclatura P R tenemos que

xmpk(1:M,1:N)=0.5*(xv1k(1:M,1:N)+xv2k(1:M,1:N));

xmrk(1:M,1:N)=0.5*(xv4k(1:M,1:N)+xv3k(1:M,1:N));

xCOLk(1:M,1:N)=xmpk+0.75.*(xmrk-xmpk); %Colocacion x

ympk(1:M,1:N)=0.5*(yv1k(1:M,1:N)+yv2k(1:M,1:N));

ymrk(1:M,1:N)=0.5*(yv4k(1:M,1:N)+yv3k(1:M,1:N));

yCOLk(1:M,1:N)=ympk+0.75.*(ymrk-ympk); %Colocacion y

zmpk(1:M,1:N)=0.5*(zv1k(1:M,1:N)+zv2k(1:M,1:N));

zmrk(1:M,1:N)=0.5*(zv4k(1:M,1:N)+zv3k(1:M,1:N));

zCOLk(1:M,1:N)=zmpk+0.75.*(zmrk-zmpk); %Colocacion z

%%%Centro de torbellinos

xgk(1:M,1:N)=0.5*(xAk+xBk); ygk(1:M,1:N)=0.5*(yAk+yBk); zgk(1:M,1:N)=0.5*(zAk+zBk);

%%% h es la distancia de P a R en cada panel

hk(1:M,1:N)=sqrt((xmpk(1:M,1:N)-xmrk(1:M,1:N)).^2+(ympk(1:M,1:N)-ymrk(1:M,1:N)).^2+...

(zmpk(1:M,1:N)-zmrk(1:M,1:N)).^2);

%%% Calculamos la superficie de cada panel con el producto vectorial

for i=1:M,

for j=1:N,

Spk(i,j)=norm(cross([ xv4k(i,j)-xv1k(i,j), yv4k(i,j)-yv1k(i,j), zv4k(i,j)-zv1k(i,j) ],...

[ xv2k(i,j)-xv1k(i,j), yv2k(i,j)-yv1k(i,j), zv2k(i,j)-zv1k(i,j)]));

end

end

S(k)=sum(sum(Spk));

%% %% Calculamos la normal en el punto de colocacion 1COL cross 2COL

% % % % % COL1(1:M,1:N)=[ (xCOL-xv1) , (yCOL-yv1) , (zCOL-zv1) ];

% % % % % COL2(1:M,1:N)=[ (xCOL-xv2) , (yCOL-yv2) , (zCOL-zv2) ];

% % % % % normalv(1:M,1:N)=cross(COL1,COL2);

normalv_xk(1:M,1:N)=-((yCOLk-yv1k).*(zCOLk-zv2k)-(yCOLk-yv2k).*(zCOLk-zv1k));

normalv_yk(1:M,1:N)=-((xCOLk-xv2k).*(zCOLk-zv1k)-(xCOLk-xv1k).*(zCOLk-zv2k));

normalv_zk(1:M,1:N)=-((xCOLk-xv1k).*(yCOLk-yv2k)-(xCOLk-xv2k).*(yCOLk-yv1k));

mod_normal_vk(1:M,1:N)=sqrt(normalv_xk(1:M,1:N).^2+normalv_yk(1:M,1:N).^2....

+normalv_zk(1:M,1:N).^2);

%%%Esto hay que normalizarlo

nxk(1:M,1:N)=normalv_xk(1:M,1:N)./mod_normal_vk;

nyk(1:M,1:N)=normalv_yk(1:M,1:N)./mod_normal_vk;

nzk(1:M,1:N)=normalv_zk(1:M,1:N)./mod_normal_vk;

end

%% INTERFAZ DE SALIDA

%

% MATRIZ DEL SISTEMA COMPLETO ENCADENANDO LAS MATRICES POR FILAS

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

% % La idea es reordenar las matrices por filas, una tras otra para ası

% % generar un vector fila global donde podamos encadenar todas las

% % superficies aerodinamicas una detras de otra para tenerlas a todas en

% % cuenta en el sistema de ecuaciones.

% %

% % Hacemos lo mismo con todas las variables implicadas en la generacion del

% % sistema de ecuaciones. BiotSavart3D devuelve el mismo formato de salida

% % que de entrada ası que ya tendremos las velocidades inducidas en el

% % punto de colocacion I ordenadas segun un vector fila que enbloga una

% % sucesion de todos los paneles de todas las superficies.

% %

% % Una vez obtenida la solucion, volvemos a pasar a formato matricial cada

APENDICE A. CODIGOS DE INTERES 93

% % una de las porciones del vector columna correspondientes a cada

% % superficie. Esto se hara en el apartado de POSTPROCESADO.

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

MxN= zeros(n_alas,1);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

output.geom.M= M_w; % vector 1:n_alas

output.geom.N= N_w; % vector 1:n_alas

output.geom.h_w= h; % Cuerda panel [ Celdak=1:n_alas(1:M_w(k),1:N_w(k)) ]

output.geom.S_w= S; % Superficie total ( vector componente k -> alak )

output.geom.Sp= Sp; % Superficie de cada panel [ Celdak=1:n_alas(1:M_w(k),1:N_w(k)) ]

output.geom.b_tot= b_tot; % Envergadura de cada ala, (vectorial)

output.geom.cr= cr; % cuerdas raız vector

output.geom.st_vert= st_vert; % vector

output.geom.pos_ref_x=pos_ref_x; % vector

output.geom.pos_ref_z=pos_ref_z; % vector

output.geom.ind_0 = ind_0; % vector

output.geom.ind = ind; % celda

output.geom.ind_neg = ind_neg; % celda

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FORMACION DE VECTORES, agrupacion por filas

MxN(1)=M_w(1)*N_w(1);

output.vectores.xA_v(1:MxN(1))=reshape(xA1’,1,MxN(1));

output.vectores.xB_v(1:MxN(1))=reshape(xB1’,1,MxN(1));

output.vectores.xC_v(1:MxN(1))=reshape(xC1’,1,MxN(1));

output.vectores.xD_v(1:MxN(1))=reshape(xD1’,1,MxN(1));

output.vectores.yA_v(1:MxN(1))=reshape(yA1’,1,MxN(1));

output.vectores.yB_v(1:MxN(1))=reshape(yB1’,1,MxN(1));

output.vectores.yC_v(1:MxN(1))=reshape(yC1’,1,MxN(1));

output.vectores.yD_v(1:MxN(1))=reshape(yD1’,1,MxN(1));

output.vectores.zA_v(1:MxN(1))=reshape(zA1’,1,MxN(1));

output.vectores.zB_v(1:MxN(1))=reshape(zB1’,1,MxN(1));

output.vectores.zC_v(1:MxN(1))=reshape(zC1’,1,MxN(1));

output.vectores.zD_v(1:MxN(1))=reshape(zD1’,1,MxN(1));

output.vectores.xCOL_v(1:MxN(1))=reshape(xCOL1’,1,MxN(1));

output.vectores.yCOL_v(1:MxN(1))=reshape(yCOL1’,1,MxN(1));

output.vectores.zCOL_v(1:MxN(1))=reshape(zCOL1’,1,MxN(1));

output.vectores.nx_v(1:MxN(1))=reshape(nx1’,1,MxN(1));

output.vectores.ny_v(1:MxN(1))=reshape(ny1’,1,MxN(1));

output.vectores.nz_v(1:MxN(1))=reshape(nz1’,1,MxN(1));

for k=2:n_alas

MxN(k)=M_w(k)*N_w(k);

output.vectores.xA_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(xAk’,1,MxN(k));

output.vectores.xB_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(xBk’,1,MxN(k));

output.vectores.xC_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(xCk’,1,MxN(k));

output.vectores.xD_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(xDk’,1,MxN(k));

output.vectores.yA_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(yAk’,1,MxN(k));

output.vectores.yB_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(yBk’,1,MxN(k));

output.vectores.yC_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(yCk’,1,MxN(k));

output.vectores.yD_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(yDk’,1,MxN(k));

output.vectores.zA_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(zAk’,1,MxN(k));

output.vectores.zB_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(zBk’,1,MxN(k));

output.vectores.zC_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(zCk’,1,MxN(k));

output.vectores.zD_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(zDk’,1,MxN(k));

APENDICE A. CODIGOS DE INTERES 94

output.vectores.xCOL_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(xCOLk’,1,MxN(k));

output.vectores.yCOL_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(yCOLk’,1,MxN(k));

output.vectores.zCOL_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(zCOLk’,1,MxN(k));

output.vectores.nx_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(nxk’,1,MxN(k));

output.vectores.ny_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(nyk’,1,MxN(k));

output.vectores.nz_v((1:MxN(k))+sum(MxN(1:(k-1))))=reshape(nzk’,1,MxN(k));

end

%%% Tambien interesa sacar los puntos de colocacion y centrado

%%% de torbellinos en forma matricial, su formato seran celdas de la forma

%%% celdak=1:n_alas(1:M_w(k),1:N_w(k))

output.matrices.xv=xv;

output.matrices.yv=yv;

output.matrices.zv=zv;

output.matrices.xCOL=xCOL; %Puntos de colocacion en forma matricial

output.matrices.yCOL=yCOL; %(cada componente k de la celda es la matriz

output.matrices.zCOL=zCOL; % correspondiente al ala k)

output.matrices.xg=xg; %Puntos de centrado de torbellinos en forma matricial

output.matrices.yg=yg; %(cada componente k de la celda es la matriz

output.matrices.zg=zg; % correspondiente al ala k)

output.matrices.nx=nx; %Vectores normalizados en forma matricial

output.matrices.ny=ny; %(cada componente k de la celda es la matriz

output.matrices.nz=nz; % correspondiente al ala k)

output.MxN=MxN;

output.ala= ala;

output.n_alas=n_alas;

end

APENDICE A. CODIGOS DE INTERES 95

A.6. flight cond rot.m

function [Uinf_tot, T, P, rho, a, M, g, gamma, R]=flight_cond_rot(h,Uinf,alfa,beta,p,q,r,xCOL,yCOL,zCOL)

[T,P,rho,a,g,gamma,R]=atmosfera_isa(h);

M=Uinf/a;

% alfa y beta vienen dados en deg con lo cual hacemos la conversion a radianes

alfa=alfa*pi/180;

beta=beta*pi/180;

Uinf_lin_x= Uinf.*cos(alfa).*cos(beta); % Componente x de la velocidad aerodinamica

Uinf_lin_y= -Uinf.*cos(alfa).*sin(beta); % Componente y de la velocidad aerodinamica

Uinf_lin_z= Uinf.*sin(alfa); % Componente z de la velocidad aerodinamica

Uinf_rot_x=q.*zCOL-r.*yCOL;

Uinf_rot_y=r.*xCOL-p.*zCOL;

Uinf_rot_z=p.*yCOL-q.*xCOL;

Uinf_tot(1,:)=Uinf_lin_x+Uinf_rot_x’;

Uinf_tot(2,:)=Uinf_lin_y+Uinf_rot_y’;

Uinf_tot(3,:)=Uinf_lin_z+Uinf_rot_z’;

end

A.7. atmosfera isa.m

function [T,P,rho,a,g,gamma,R]=atmosfera_isa(h) % Altitud [m]

if h>25000

error(’atmosfera_isa solo valida para altitudes de hasta 25000 m’)

end

%% Parametros:

g=9.8066; % Aceleracion de la gravedad [m/s^2]

R=287.05287; % Constante del aire [m^2/(s^2*K)]

gamma=1.4; % Coeficiente de dilatacion adiabatica [-]

lambda=-0.0065; % Gradiente termico [K/m]

T0=288.1500; % Temperatura a a nivel del mar [K]

P0=101325; % Presion a nivel del mar [Pa]

rho0=1.2252; % Densidad a nivel del mar [kg/m^3]

P11000=22552; % Presion a 11000m [Pa]

rho11000=0.3629; % Densidad a 11000m [kg/m^3]

%% Calculos:

if h<11000

T=T0+lambda*h;

P=P0*((T0+lambda*h)/T0)^(-g/R/lambda);

rho=rho0*((T0+lambda*h)/T0)^(-g/R/lambda-1);

else

T=216.65;

P=P11000*exp(-g*(h-11000)/R/T);

rho=rho11000*exp(-g*(h-11000)/R/T);

end

a=sqrt(gamma*R*T);

%% Resultados:

%disp([’La temperatura es de ’ num2str(T) ’K’]);

%disp([’La presion es de ’ num2str(P) ’Pa’]);

%disp([’La densidad es de ’ num2str(rho) ’kg/m^3’]);

%disp([’La velocidad del sonido es de ’ num2str(a) ’m/s’]);

end

APENDICE A. CODIGOS DE INTERES 96

A.8. eOswald.m

function e=eOswald(b,Circu,N,ymed)

%Interfaz de entrada

% b=sol.geom.b_tot;

% Circu=sol.Circu;

% N=sol.geom.N;

% ymed=sol.geom.ymed;

Nfou=100;

yterp(1)=-b/2; yterp(N+2)=b/2; %definimos los extremos ya que ymed no llega a estos

yterp(2:(N+1))=ymed(1:N);

%Circulacion en yterp

Cterp(1)=0; Cterp(N+2)=0; %La circulacion es 0 en los extremos (puntas del ala)

Cterp(2:(N+1))=Circu(1:N); %adjudicamos las circulaciones calculadas al span yterp

%Creamos el span de thethas

Ntheta=500; theta=linspace(0,pi,Ntheta);

ytheta(1:Ntheta)=-b/2.*cos(theta); %el cambio de variables

Ctheta(1:Ntheta)=interp1(yterp,Cterp,ytheta); %interpolamos en ytheta

%Ahora pasamos a calcular los coeficientes de fourier ya

a=zeros(1,Nfou);

for n=1:Nfou,

a(n)=2/pi*Ctheta*sin(n*theta)’*(pi/(Ntheta-1));

end

% % % Este modulo devuelve la aproximacion de la circulacion con armonicos para

% % discutir si Nfou es suficiente.

%Circufou=zeros(1,Ntheta);

% for k=1:Ntheta

% Circufou(k)=a*sin((1:Nfou)*theta(k))’;

% end

%Eficiencia Oswald

sumaOs=0;

for kos=2:Nfou

sumaOs=sumaOs+(kos*(a(kos)/a(1))^2);

end

e=1/(1+sumaOs);

end

APENDICE A. CODIGOS DE INTERES 97

A.9. justsolve all.m

function output=justsolve_all(lattice,ALT,Uinf,alfa,beta,p,q,r)

%

% [output,tiemps]=justsolve_wing(lattice,h,Uinf,alfa,beta)

%

% lattice -> estructura que contiene los puntos 1,2,3,4 y A,B,C,D de cada

% panel ası como su cuerda, superficie y vector normal. Tambien los puntos

% de colocacion (xyz)COL y de centrado de torbellinos (xyz)g necesarios

% para generar el sistema de ecuaciones en el solver.El formato de entrada

% ya es vectorial ordenado por filas para ası resolver el sistema con un

% unico for

%

% h -> es la altitud de vuelo, entrara como parametro a la funcion

% flight_cond, que lleva una atmosfera ISA de manera que conocemos

% [T, P, rho, a, M, g, gamma, R] a esa altitud

%

% Uinf -> modulo de la velocidad aerodinamica aguas arriba

%

% alfa -> angulo de ataque del fuselaje (el del ala vendra dado por la

% suma con la incidencia de cada perfil segun la ley de torsion que haya)

%

% beta -> angulo de resbalamiento (AUN EN CONSTRUCCION)

%

%% Entradas

ala= lattice.ala;

n_alas= lattice.n_alas; % Numero de alas

M_w= lattice.geom. M; % Vector

N_w= lattice.geom. N; % Vector

h= lattice.geom. h_w; % Cuerda panel [ Celdak=1:n_alas(1:M_w(k),1:N_w(k)) ]

S= lattice.geom. S_w; % Superficie total

Sp= lattice.geom. Sp; % Superficie de cada panel

b_tot= lattice.geom. b_tot; % Envergadura vectorial

cr= lattice.geom. cr; % Cuerda raiz vectorial

st_vert= lattice.geom. st_vert;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

xA_v= lattice.vectores.xA_v;

xB_v= lattice.vectores.xB_v;

xC_v= lattice.vectores.xC_v;

xD_v= lattice.vectores.xD_v;

%

yA_v= lattice.vectores.yA_v;

yB_v= lattice.vectores.yB_v;

yC_v= lattice.vectores.yC_v;

yD_v= lattice.vectores.yD_v;

%

zA_v= lattice.vectores.zA_v;

zB_v= lattice.vectores.zB_v;

zC_v= lattice.vectores.zC_v;

zD_v= lattice.vectores.zD_v;

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

xCOL_v = lattice.vectores.xCOL_v; % Puntos de colocacion (vectorial)

yCOL_v = lattice.vectores.yCOL_v;

zCOL_v = lattice.vectores.zCOL_v;

%

xv = lattice.matrices.xv;

yv = lattice.matrices.yv;

zv = lattice.matrices.zv;

%

APENDICE A. CODIGOS DE INTERES 98

xCOL= lattice.matrices.xCOL; % Puntos de colocacion (matricial por celdas)

yCOL= lattice.matrices.yCOL;

zCOL= lattice.matrices.zCOL;

xg= lattice.matrices.xg; % Puntos de centrado de torbellinoes( mat por celdas)

yg= lattice.matrices.yg;

zg= lattice.matrices.zg;

nx_v= lattice.vectores.nx_v;

ny_v= lattice.vectores.ny_v;

nz_v= lattice.vectores.nz_v;

nx= lattice.matrices.nx;

ny= lattice.matrices.ny;

nz= lattice.matrices.nz;

MxN= lattice.MxN;

MxN_tot=sum(MxN); %-->MxN_tot=length( []_v ) tama~no vectores fila globales.

%% Declaramos los vectores, matrices y celdas vacıos

%

L = zeros(n_alas,1);

D = zeros(n_alas,1);

Cl = zeros(n_alas,1);

Cdi = zeros(n_alas,1);

AR = zeros(n_alas,1);

Eff = zeros(n_alas,1); % Eficiencia aerodinamica

M_roll = zeros(n_alas,1);

M_pitch = zeros(n_alas,1);

cly=cell(n_alas,1); % Distribucion de coeficientes de sustentacion en la envergadura

%

%Clalpha=zeros(n_alas,1);

%b_tot =zeros(n_alas,1);

%

Cm_roll=zeros(n_alas,1);

Cm_pitch=zeros(n_alas,1);

%Cmx_delta_a=zeros(n_alas,1);

%

%gamma_w= cell(n_alas,1);

Gamma= cell(n_alas,1);

gamma= cell(n_alas,1);

%

incL = cell(n_alas,1); % Incremento de sustentacion por panel

incV = cell(n_alas,1); % Incremento de fuerza vertical por panel

incD = cell(n_alas,1); % Incremento de resistencia ind por panel

%

incM_roll=cell(n_alas,1); % Incremento de momento de alabeo por panel

incM_pitch=cell(n_alas,1); % Incremento de momento de cabeceo por panel

%

cy=cell(n_alas,1); % Distribucion de cuerdas a lo largo de la envergadura

Circu=cell(n_alas,1); % Distribucion de circulacion en la envergadura

ymed=cell(n_alas,1); % Puntos de resolucion a lo largo de la envergadura

e=zeros(n_alas,1); % Eficiecia de Oswald

%

%

%% Condicion de vuelo

[Uinf_tot, T, P, rhoinf, a, M, g, gam, R]=flight_cond_rot(ALT,Uinf,alfa,beta,p,q,r,xCOL_v,yCOL_v,zCOL_v);

%Pasamos alfa y beta a radianes

alfa=alfa*pi/180;

%beta=beta*pi/180;

% Declaramos vectores y matrices vacıos

APENDICE A. CODIGOS DE INTERES 99

%gamma_w=zeros(M,N);

A=zeros(MxN_tot,MxN_tot);

bv=zeros(MxN_tot,1);

%% Formacion de la matriz del sistema:

for I=1:(MxN_tot),

xc1=xCOL_v(I); yc1=yCOL_v(I); zc1=zCOL_v(I);

[VAB_v,WAB_v]=BiotSavart3D_v2(xc1,yc1,zc1,xA_v,yA_v,zA_v,xB_v,yB_v,zB_v);

[VBC_v,WBC_v]=BiotSavart3D_v2(xc1,yc1,zc1,xB_v,yB_v,zB_v,xC_v,yC_v,zC_v);

[VCD_v,WCD_v]=BiotSavart3D_v2(xc1,yc1,zc1,xC_v,yC_v,zC_v,xD_v,yD_v,zD_v);

[VDA_v,WDA_v]=BiotSavart3D_v2(xc1,yc1,zc1,xD_v,yD_v,zD_v,xA_v,yA_v,zA_v);

VABCD_v=VAB_v+VBC_v+VCD_v+VDA_v;

WABCD_v=WAB_v+WBC_v+WCD_v+WDA_v;

V_eq_v=(WABCD_v).*nz_v(I)+(VABCD_v).*ny_v(I);

A(I,1:(MxN_tot))=V_eq_v; % Matriz de coeficientes de influencia

bv(I,1)=-(Uinf_tot(1,I)*(nx_v(I))+Uinf_tot(2,I)*(ny_v(I))+Uinf_tot(3,I)*(nz_v(I))); % RHS segun Katz

end

%%%%%%%%%%%%%%%%%%%%%%%% SOLVER

Gammasol(1:(MxN_tot),1)=A\bv;

%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%% POSTPROCESO %%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

suma=zeros(n_alas,1);

for k=2:n_alas,

suma(k)=sum(MxN(1:(k-1)));

end

for k=1:n_alas,

Gammak=zeros(M_w(k),N_w(k));

% Volvemos a pasar a formato matricial

for kin=1:M_w(k),

for l=1:N_w(k),

K=(kin-1)*N_w(k)+l+suma(k);

Gammak(kin,l)=Gammasol(K,1);

end

end

%%%%%%%%%%%%%%% DENSIDADES DE CIRCULACION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% No es mas que un cociente incremental a lo largo de i para todo N

gammak(1,1:N_w(k))=Gammak(1,1:N_w(k))./hk(1,1:N_w(k)); % El primer punto hay que tratarlo con cari~no

gammak(2:M_w(k),1:N_w(k))=(Gammak(2:M_w(k),1:N_w(k))-Gammak((2:M_w(k))-1,1:N_w(k)))...

./hk(2:M_w(k),1:N_w(k)); %de manera compacta en j<=>(1:N)

if st_vert(k)==0; % Si NO es estabilizador vertical

APENDICE A. CODIGOS DE INTERES 100

%%%%%%% Puntos ymed para evaluar las distribuciones en y

cyk(1:N_w(k))=0.5*(xvk(end,2:(N_w(k)+1))+xvk(end,1:N_w(k))-xvk(1,(2:(N_w(k)+1)))-xvk(1,1:N_w(k)));

ymedk(1:N_w(k))=0.5*(yvk(1,2:(N_w(k)+1))+yvk(1,1:N_w(k))); %en estos puntos es donde tenemos definida la circulacion

for j=1:N_w(k),

Circuk(j)=gammak(1:M_w(k),j)’*hk(1:M_w(k),j);

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sustentacion

incLk(1:M_w(k),1:N_w(k))=rhoinf*Uinf*(gammak.*Spk);

L(k)=sum(sum(incLk));

Cl(k)=L(k)/(0.5*rhoinf*Uinf^2*S(k));

clyk=2*Circuk./(Uinf.*cyk);

%%% Resistencia inducida por sustentacion %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

AR(k)=b_tot(k)^2/S(k);

e(k)=eOswald(b_tot(k),Circuk,N_w(k),ymedk); % Eficiencia de Oswald (por comodidad llamamos a otra funcion)

Cdi(k)=Cl(k)^2/(AR(k)*pi*e(k));

Cd0=0.015; % Esto es una estimacion habrıa que afinar (que el usuario lo introduzca o incluir modelos con viscosidad)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Eficiencia aerodinamica

Eff(k)=Cl(k)/(Cd0+Cdi(k));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MOMENTO ROLL

aileroned = ala(k).vectores.aileroned;

deflex = ala(k).vectores.deflex;

aleron= any(aileroned) & deflex(aileroned==1)~=0; % Si hay aleron,

% para devolver algun 1 y que entre a calcular momentos la deflexion

% tiene que ser distinta de cero.

if any([aleron beta p q r]) % El ala es perfectamente simetrica, luego

% si aparecen componentes asimetricas es porque alguna asimetrıa en las

% condiciones de vuelo es distinta de cero: alerones, resbalamiento,

% rotaciones. Hay que verificar que haya aleron, y que de haberlo, su

% deflexion es distinta de cero.

incM_rollk(1:M_w(k),1:N_w(k))=incLk(1:M_w(k),1:N_w(k)).*yCOLk(1:M_w(k),1:N_w(k));

M_roll(k)=-sum(sum(incM_rollk));

Cm_roll(k)=M_roll(k)/(0.5*rhoinf*Uinf^2*S(k)*b_tot(k));

else % Si no hay ninguna condicion de vuelo asimetrica imponemos el 0 para

% no computar las ligeras diferencias en terminos de circulacion entre

% las dos partes simetricas. Las diferencias son del orden de 1e-6, con

% lo cual son despreciables pero a la hora de computar la integral, en

% conjunto sı ejercen un momento de roll no despreciable.

Cm_roll(k)=0;

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MOMENTO PITCH en la lınea c/4

incM_pitchk(1:M_w(k),1:N_w(k))=incLk(1:M_w(k),1:N_w(k)).*(xCOLk(1:M_w(k),1:N_w(k)));

M_pitch(k)=-sum(sum(incM_pitchk));

Cm_pitch(k)=M_pitch(k)/(0.5*rhoinf*Uinf^2*S(k)*b_tot(k));

APENDICE A. CODIGOS DE INTERES 101

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

else % Si es estabilizador vertical...%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

b_tot(k)=0.5*b_tot(k); % La envergadura realmente es la mitad

%%%%%%% Puntos zmed para evaluar las distribuciones en z

cyk(1:N_w(k))=0.5*(xvk(end,2:(N_w(k)+1))+xvk(end,1:N_w(k))-xvk(1,(2:(N_w(k)+1)))-xvk(1,1:N_w(k)));

%Estos puntos en realidad son zmed

ymedk(1:N_w(k))=0.5*(zvk(1,2:(N_w(k)+1))+zvk(1,1:N_w(k))); %en estos puntos es donde tenemos definida la circulacion

for j=1:N_w(k),

Circuk(j)=gammak(1:M_w(k),j)’*hk(1:M_w(k),j);

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sustentacion

incLk(1:M_w(k),1:N_w(k))=rhoinf*Uinf*(gammak.*Spk);

L(k)=sum(sum(incLk));

Cl(k)=L(k)/(0.5*rhoinf*Uinf^2*S(k));

clyk=2*Circuk./(Uinf.*cyk);

%%% Resistencia inducida por sustentacion %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

AR(k)=b_tot(k)^2/S(k);

e(k)=eOswald(b_tot(k),Circuk,N_w(k),ymedk-b_tot(k)/2); % Eficiencia de Oswald (por comodidad llamamos a otra funcion)

Cdi(k)=Cl(k)^2/(AR(k)*pi*e(k));

Cd0=0.015; % Esto es una estimacion habrıa que afinar (que el usuario lo introduzca o incluir modelos con viscosidad)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Eficiencia aerodinamica

Eff(k)=Cl(k)/(Cd0+Cdi(k));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MOMENTO ROLL

aileroned = ala(k).vectores.aileroned;

deflex = ala(k).vectores.deflex;

aleron= any(aileroned) & deflex(aileroned==1)~=0; % Si hay aleron,

% para devolver algun 1 y que entre a calcular momentos la deflexion

% tiene que ser distinta de cero.

if any([aleron beta p q r]) % El ala es perfectamente simetrica, luego

% si aparecen componentes asimetricas es porque alguna asimetrıa en las

% condiciones de vuelo es distinta de cero: alerones, resbalamiento,

% rotaciones. Hay que verificar que haya aleron, y que de haberlo, su

% deflexion es distinta de cero.

incM_rollk(1:M_w(k),1:N_w(k))=incLk(1:M_w(k),1:N_w(k)).*zCOLk(1:M_w(k),1:N_w(k));

M_roll(k)=-sum(sum(incM_rollk));

Cm_roll(k)=M_roll(k)/(0.5*rhoinf*Uinf^2*S(k)*b_tot(k));

else % Si no hay ninguna condicion de vuelo asimetrica imponemos el 0 para

% no computar las ligeras diferencias en terminos de circulacion entre

% las dos partes simetricas. Las diferencias son del orden de 1e-6, con

% lo cual son despreciables pero a la hora de computar la integral, en

% conjunto sı ejercen un momento de roll no despreciable.

Cm_roll(k)=0;

end

APENDICE A. CODIGOS DE INTERES 102

%Cmx_delta_a(k)=Cmx(k)/(deflex_lat+0.0000000001);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MOMENTO PITCH en la lınea c/4

incM_pitchk(1:M_w(k),1:N_w(k))=incLk(1:M_w(k),1:N_w(k)).*(xCOLk(1:M_w(k),1:N_w(k)));

M_pitch(k)=-sum(sum(incM_pitchk));

Cm_pitch(k)=M_pitch(k)/(0.5*rhoinf*Uinf^2*S(k)*b_tot(k));

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PLOTS

%%%if k==1,

%%% hijos=get(0,’Children’);

%%% if any(hijos==3)

%%% close(3)

%%% elseif any(hijos==2)

%%% close(2)

%%% end

%%%end

%%%

%%%

%%%if (lattice.geom.st_vert(k)==1 && checkbox_plot==1), %Si es un st_vert pintame las cosas en y

%%%

%%% hsol_vert=figure(2); hold on, surf(xgk,zgk,gammak/2/Uinf), grid on,

%%%set(hsol_vert,’NumberTitle’,’off’,’Name’,’Previsualizacion de la solucion para estabilizador vertical’)

%%%title([’C_L,w=’,num2str(Cl(1)),’ C_mroll,w=’,num2str(Cm_roll(1)),’ e=’,num2str(e(1))])

%%%

%%%elseif (lattice.geom.st_vert(k)==0 && checkbox_plot==1),

%%%

%%% hsol=figure(3); hold on, surf(xgk,ygk,gammak/2/Uinf), grid on,

%%%set(hsol,’NumberTitle’,’off’,’Name’,’Previsualizacion de la solucion para ala/estabilizador horizontal’)

%%%title([’C_L,w=’,num2str(Cl(1)),’ C_mroll,w=’,num2str(Cm_roll(1))])

%%%end

end

% %%%%%%%%%%%%% Salidas de la funcion

%

output=struct([]);

for k=1:n_alas

output(k).ala = ala(k);

output(k).flight_cond.Uinf = Uinf;

output(k).flight_cond.Uinfv = Uinf_tot;

output(k).flight_cond.alfa = alfa;

output(k).flight_cond.beta = beta;

output(k).flight_cond. p = p;

output(k).flight_cond. q = q;

output(k).flight_cond. r = r;

output(k).flight_cond. ALT = ALT;

output(k).flight_cond.rhoinf = rhoinf;

output(k).flight_cond.Mach = M;

output(k).flight_cond.Temp = T;

output(k).puntos.xCOL= xCOLk;

output(k).puntos.yCOL= yCOLk;

output(k).puntos.zCOL= zCOLk;

output(k).puntos.xg= xgk;

output(k).puntos.yg= ygk;

output(k).puntos.zg= zgk;

output(k).geom.M= M_w(k);

APENDICE A. CODIGOS DE INTERES 103

output(k).geom.N= N_w(k);

output(k).geom.h = hk;

output(k).geom.sup_tot = S(k);

output(k).geom.sup_ij = Spk;

output(k).geom.b_tot = b_tot(k);

output(k).geom.AR = AR(k);

output(k).geom.cr = cr(k);

output(k).geom.cy = cyk;

output(k).geom.ymed = ymedk;

output(k).geom.nx= nxk;

output(k).geom.ny= nyk;

output(k).geom.nz= nzk;

output(k).geom.pos_ref_x=lattice.geom.pos_ref_x(k);

output(k).geom.pos_ref_z=lattice.geom.pos_ref_z(k);

output(k).geom.ind_0 = lattice.geom. ind_0(k);

output(k).geom. ind = lattice.geom. indk;

output(k).geom.ind_neg = lattice.geom. ind_negk;

output(k).geometria_cajones = lattice.param_geom(k);

output(k).gamma= gammak;

output(k).Circu= Circuk;

output(k).L= L(k);

output(k).Cl= Cl(k);

output(k).cly= clyk;

%output(k).D_ind= D(k);

output(k).CD_ind= Cdi(k);

output(k).CD_0= Cd0;

output(k).Cm_roll= Cm_roll(k);

output(k).Cm_pitch= Cm_pitch(k);

output(k).e_Oswald= e(k);

output(k).eficiencia_aero= Eff(k);

end

end

APENDICE A. CODIGOS DE INTERES 104

A.10. postproceso.m

function [x_ac, cm_ac, MAC, cl0, clalpha, yce_adim]=postproceso_v2(sol,lim_inf,lim_sup,TOL)

% Interfaz de entrada

ala=sol(1).ala;

cr = sol(1).geom. cr;

cy = sol(1).geom. cy;

ymed = sol(1).geom. ymed;

ind_0 = sol(1).geom. ind_0;

pos_ref_x = sol(1).geom. pos_ref_x;

%b_tot = sol(1).geom. b_tot;

S = sol(1).geom. sup_tot;

%Circu = sol(1). Circu;

xCOL = sol(1).puntos. xCOL;

rhoinf = sol(1).flight_cond. rhoinf;

Uinf = sol(1).flight_cond. Uinf;

lattice=lattice_all(ala);

alfa=[0 10];

%%%% Calculo de la MAC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

MAC=2/S*trapz(ymed(ind_0:end),cy(ind_0:end).^2);

%%%%% Modulo de biseccion para el calculo del centro aerodinamico %%%%%%%%%%%%%

incL1 = ezsolve_v2(lattice,Uinf,alfa(1));

incL2 = ezsolve_v2(lattice,Uinf,alfa(2));

a=pos_ref_x+lim_inf/100*cr;

b=pos_ref_x+lim_sup/100*cr;

k=0;

err=100;

while err>TOL;

k=k+1; % Contador de iteraciones

c=0.5*(a+b);

fa = look4_ac(a,xCOL,incL);

[fc, Mx0] = look4_ac(c,xCOL,incL);

if fa*fc<0,

b=c;

else

a=c;

end

err=abs(fc);

end

%%%%%%%%%%%%%%%%%%%

x_ac=(c-pos_ref_x)/cr; % posicion centro aerodinamico

cm_ac=Mx0/(0.5*rhoinf*Uinf^2*S*MAC); % momento en el centro aerodinamico

%%%%%%%%%%%%%%%%%%%

cl0 = sum(sum(incL1))/(0.5*rhoinf*Uinf^2*S); %

cl_10 = sum(sum(incL2))/(0.5*rhoinf*Uinf^2*S); %

APENDICE A. CODIGOS DE INTERES 105

clalpha=(cl_10-cl0)/(10*pi/180); % pendiente de sustentacion en radianes

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

%%%%%%%% Centro de presiones en el semiala %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Ahora calcularemos el centro de momentos del semiala, para ello

%barremos de -b/2 a b/2 tomando la mitad del valor de las integrales, para

%la integral de momento tomaremos el valor absoluto de y para que no

%cancelen los terminos negativos. Para las integraciones utilizaremos trapz

int1=trapz(ymed,abs(ymed).*Circu);

int2=trapz(ymed,Circu);

yce_adim=2*int1/b_tot/int2;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

end

function [f, Mx0]=look4_ac(x0,xCOL,incL)

incM_pitch_1=incL1.*(xCOL-x0);

M_pitch_1=-sum(sum(incM_pitch_1)); % Cambiamos el signo para tener momentos de encabritado positivos

incM_pitch_2=incL2.*(xCOL-x0);

M_pitch_2=-sum(sum(incM_pitch_2)); % Cambiamos el signo para tener momentos de encabritado positivos

f=M_pitch_2-M_pitch_1;

Mx0=0.5*(M_pitch_1+M_pitch_2);

end

106

Bibliografıa

[1] Stephen J. Chapman. Essentials of MATLAB Programming, 2e. Cengage Learning, 200 FirstStamford Place, Suite 400, Stamford, CT 06902 USA, 2009.

[2] M. Vicente Donadon, Frascino Muller de Almeida Sergio, and Lorenzo Iannucci. A vortex lat-tice program for steady state aerodynamic analysis of flapped and twisted uav wing planforms.Brazilian Symposium on Aerospace Eng. & Applications 2009.

[3] J.C. Garcıa & S. Esteban. XFLR5: Manual de Iniciacion. Dep. Ing. Aeroespacial y Mec. deFluıdos ETSI Universidad de Sevilla, 2013.

[4] Jose Manuel Gordillo Arias de Saavedra and Guillaume Riboux Acher. Introduccion a la aero-dinamica potencial. Paraninfo, Madrid, 2012.

[5] Francisco Gavilan Jimenez. Estimacion de parametros aerodinamicos mediante Digital Datcom.Dep. Ing. Aeroespacial y Mec. de Fluıdos ETSI Universidad de Sevilla, 2013.

[6] Katz Joseph and Plotkin Allen. Low-speed aerodynamics. Cambridge University Press, Cambridge,UK, 2, 2001.

[7] Krishnamurty Karamcheti. Principles of Ideal-Fluid Aerodynamics. Standford University, Stan-ford University, September 1980.

[8] Missouri McDonnell Douglas Astronautics Company, St. Louis Division. THE USAF STABILITYAND CONTROL DATCOM Volume I, Users Manual. Public Domain Aeronautical SoftwareSanta Cruz CA 95061, 1999.

[9] Tomas Melin. A vortex lattice matlab implementation for linear aerodynamic wing applications.,2000.

[10] Tomas Melin. User’s guide and reference manual for tornado., 2000-12.

[11] Scott T. Smith. MATLAB Advanced GUI Development. Dog Ear Publishing, 4010 W.86th Street,Ste H, Indianapolis, IN 46268, 2006.