Astronáutica y Aeronaves Diversas (Helicópteros) Ingenieros Aeronáuticos Práctica 1 Nº DNI Ecuela Superior de Ingenieros 1er Apellido Universidad de Sevilla Nombre 2o Apellido En la presente práctica se realiza la aplicación numérica de ciertas teorías (TCM, TCMEP y TCMEP con pérdidas de punta de pala) correspondientes a la aerodinámica de alas rotatorias en vuelo axial que, debido a su complejidad de cálculo, no se emplean en los problemas propuestos en clase. De esta forma, se aanzan los conocimientos adquiridos en las clases teóricas. 1. Deniciones Se denen los siguientes conceptos [1]: Subfunción Tradicionalmente, MATLAB obligaba a crear un chero *.m diferente por cada función. El nombre de la función debía coincidir con el nombre del chero. A partir de la versión 5.0 se introdujeron las subfunciones, que son funciones adicionales denidas en un mismo chero *.m, con nombres diferentes del nombre del chero (y del nombre de la función principal). Las subfunciones sólo pueden ser llamadas por las funciones contenidas en ese chero, resultando invisibles para otras funciones externas. A continuación se muestra un ejemplo contenido en un chero llamado function y=mi_fun(a,b) y=subfun1(a,b); mi_fun.m: function x=subfun1(y,z) x=subfun2(y,z); function x=subfun2(y,z) x=y+z+2; Las funciones y subfunciones denidas en el mismo chero tienen espacios de trabajo diferentes. Como consecuencia, las variables denidas en una función son variables locales que no pueden ser vistas por otras funciones o subfunciones. Función anónima Las funciones anónimas constituyen una forma muy exible de crear funciones sobre la marcha, bien en la línea de comandos, bien en una línea cualquiera de una función o de un chero *.m. La forma general de las funciones anónimas es la siguiente: fhandle = @(argumentos) expresión; Por ejemplo, la siguiente función anónima calcula el valor del seno del ángulo doble: senoAngDoble = @(ang) 2*sin(ang).*cos(ang); que se puede invocar de la siguiente forma: >>senoAngDoble(pi/4) ans = 1 Las funciones anónimas acceden a las variables del espacio de trabajo en el que son denidas y crean en ese momento una copia de las variables que utilizan. El valor de dichas variables ya no se actualiza; sólo los argumentos pueden cambiar de valor. Matriz de celdas Una matriz de celdas (cell array) es una matriz en la que cada uno de sus elementos es una variable de cualquier tipo. En una matriz ordinaria todos sus elementos son números o cadenas de caracteres. Sin embargo, en un cell array, el primer elemento puede ser un número; el segundo una matriz; el tercero una cadena de caracteres; el cuarto una función anónima, etc. 1 Obsérvese por ejemplo cómo se crea, utilizando llaves {}, el siguiente cell array de dimensiones 1x3: >>vb{1}=[1 2 3] vb = [1x3 double] >> vb{2}='mi nombre' vb = [1x3 double] 'mi nombre' >> vb{3}=rand(3,3) vb = [1x3 double] 'mi nombre' [3x3 double] También es posible crear la matriz de celdas en una sola operación en la forma: >>vcc = {[1 2 3], 'mi nombre', rand(3,3)} vcc = [1x3 double] 'mi nombre' [3x3 double] Matriz de estructuras Una estructura (structure) es una agrupación de datos de tipo diferente bajo un mismo nombre. Estos datos se llaman campos (elds). Por ejemplo, una estructura denominada contener los campos nombre (una cadena de caracteres) y En MATLAB la estructura carnet alumno puede (un número). alumno se puede crear generando un campo de dicha estructura. A diferencia de otros lenguajes de programación, no hace falta denir previamente el modelo o patrón de la estructura. Una posible forma de hacerlo es crear uno a uno los distintos campos, como en el ejemplo siguiente: >> alumno.nombre='Miguel' alumno = nombre: 'Miguel' >> alumno.carnet=31415 alumno = nombre: 'Miguel' carnet: 31415 Se accede a los campos de una estructura por medio del operador punto (.), que une el nombre de la estructura y el nombre del campo (por ejemplo, alumno.nombre). MATLAB permite añadir nuevos campos a una estructura en cualquier momento. Una matriz de estructuras (structure array) es una matriz en la que cada uno de sus elementos es una estructura. Por tanto, la estructura anterior se puede expandir añadiendo índices tras el nombre de la estructura. Todos los elementos de la matriz tendrán los mismos campos pero con distinta información (pueden contener incluso distintos tipos de variables). Por ejemplo >> alumno(2).nombre='Pedro'; >> alumno(2).carnet=27183; >> alumno alumno = 1x2 struct array with fields: nombre carnet MATLAB permite denir estructuras anidadas, es decir estructuras con campos que sean otras estructuras. Para acceder a los campos de la estructura más interna se utiliza dos veces el operador punto (.). Ejemplo: >> clase.alumno = alumno clase = alumno: [1x2 struct] >> clase.alumno(:).nombre ans = Miguel ans = Pedro Para más información se recomienda visitar la documentación de Matlab y/o el grupo de Matlab en Google comp.soft-sys.matlab (más de 247000 temás de discusión a fecha 21/11/2011). 2 2. Ejercicio 1. Genere una función en la que poder trabajar. En ésta, genere una estructura denominada contenga las siguientes características del rotor: Parámetro Nombre campo Valor T Tracción (T ) Nº de palas (b) Radio del rotor (R) Velocidad de giro (Ω) Cuerda de las palas (c) Torsión de las palas (θ1 ) Coef. de sustentación del perl (Clα ) cifra DNI) b R Omega c theta_1 C_l_alpha que Unidades 40000 + (última Rotor N · 1000 4 8 26 0,31 −10 5,73 m rad/s m deg - 2. Dentro de la función generada anteriormente, genere una subfunción que devuelva el ángulo de paso colectivo (θ0 , valor numérico) y la distribución de velocidad inducida (vi a punto jo a la altitud jada por la densidad [theta_0,v_i] = VPF(Rotor,rho) rho: (r), función anónima) para vuelo Dicha función deberá utilizar la Teoría de Cantidad de Movimiento (método TCM). 3. Modicar la función anterior para que, mediante un nuevo argumento de entrada (metodo que puede tomar los valores 'TCM', 'TCMEP' o 'TCMEP_P'), sea capaz de devolver los mismos argumentos anteriores pero calculados también con la teoría combinada de cantidad de movimiento y elemento de pala (método TCMEP) y la teoría combinada de cantidad de movimiento y elemento de pala considerando el modelo local de pérdidas de punta de pala de Prandtl (método TCMEP_P): [theta_0,v_i] = VPF(Rotor,rho,metodo) 3. Resultados Obtener el valor del ángulo de paso colectivo para los tres métodos comentados anteriormente: Método TCM TCMEP TCMEP_P θ0 [deg] Representar la distribución de velocidad inducida vi en función del radio R en el rango [0,5, 8] m. 16 14 12 vi [m] 10 8 6 4 2 0 0 1 2 3 4 R [m] 5 6 7 8 Referencias [1] García de Jalón J., Rodríguez J. I., Vidal J. Aprenda Matlab 7.0 como si estuviera en primero. Escuela Técnica Superior de Ingenieros Industriales. Universidad Politécnica de Madrid. 3