Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Xfoil interaction #20

Open
wants to merge 16 commits into
base: master
Choose a base branch
from
Open

Xfoil interaction #20

wants to merge 16 commits into from

Conversation

AunSiro
Copy link
Member

@AunSiro AunSiro commented Feb 25, 2015

Bueno Colegas, me parece que este algoritmo ya está lo bastante pulido como para añadirlo al master! :D
Si podéis, probadlo un poco y comprobad que va bien, y si todo está ok, propongo unirlo ya!

...O, quizás... ¿quizás esperar un poco más y terminar de documentar todos los scripts y funciones antes de fusionar?

Añadido un notebook interactivo que explica cómo se construye el perfil
a partir del genoma.
Actualizado readme.
Incluye los módulos finales de traducción de genoma a puntos de perfil,
y comunicación de los perfiles con xfoil. Incluye 2 perfiles de ejemplo,
iguales entre sí.
No incluye bucle de optimización.
Versión primitiva del iniciador de la población añadido.
Readme actualizado.
Ahora el rango de perfiles iniciales es mucho mayor, ya que los perfiles
son analizados para evitar inconsistencias.
El algoritmo, aunque mejorable y con la documentación sin terminar, ya
se encuentra totalmente operativo.
Ambiente Personalizable: Planeta, mach/velocidad, cuerda y altura de
vuelo.
Dibujador de perfiles
guardado automático de datos permite continuar desde un punto anterior.
@AlexS12
Copy link
Member

AlexS12 commented Mar 2, 2015

¡Hola Siro!
Para mí una mejora buena sería si se pudiese ejecutar sin necesidad de meter el script en la carpeta en la que está Xfoil. Eso puede ser un poco rollo y te obliga a "mezclar instalaciones". yo creo que una forma fácil de solucionarlo podría ser que te pida el path donde está xfoil y lo busque ahí o algo así, ¿no?

Por lo demás muy chulo eh! me encanta!

return conditions


def temperatura(h, conditions, dT = 0):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Veo que estás rehaciendo la atmósfera estándar aquí :P ¿Hay algún motivo para ello? ¿En la versión actual te resulta complicado adaptar los coeficientes para Marte?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sí, rehago la atmósfera estándar! XD
La manera en la que lo estoy haciendo creo que es la que hace que sea más fácil tener distintos planetas, ya que las diferentes funciones atmosféricas no contienen datos en sí, sino que hay que alimentarlas con los que devuelve una función que contiene los datos. Así, para calcular diferentes planetas sólo cambia los datos con que alimentas las funciones atmosféricas.
No he usado la atmósfera más rápida de las vuestras porque sólo hay que calcularlo una vez, así que cogí la mía porque es la que mejor sé cómo funciona.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¿Con este tipo de código piensas que estaría más fácil?

https://github.com/AeroPython/aeropy/blob/juanlu-numba/jnumba/isa.py

No lo hemos hablado todavía pero si esta es la más rápida estando en Python (#4) tal vez habría que poner la versión con numba. Si lo ves factible, intento pulirla un poco y completarla el domingo.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puedo intentar adaptar la versión con numba para que haga lo que quiero de comerse diferentes planetas. Pero añadiría un paquete de python más a los que hace falta tener instalados para poder ejecutar esto. Es lo bastante común?
Al fin y al cabo, el tiempo que tarda en calcular una vez la atmósfera es totalmente despreciable con respecto al tiempo que tarda el xfoil en calcular un perfil...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sí, me imagino que el rendimiento no es el problema en este caso. Es un tema más filosófico que otra cosa, de esta forma intentamos reutilizar todos el código de todos, y este ha sido el primer caso donde se ha visto que haga falta 😄

¿A qué te refieres con instalar otro paquete? ¿Te refieres a numba en sí? ¿Es aumentar el número de dependencias lo que te preocupa?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sí, justo! Me imagino que vendrá con Anaconda, pero para la gente que se lo va instalando por su cuenta, será lo normal tenerlo? Le podría echar para atrás a alguien que lo necesite?
Quizás se puede detallar en la documentación luego dónde se usa cada paquete y si se puede prescindir de él comentando algunas líneas del código.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si están en Windows es muy muy raro que tengan NumPy y similares sin alguna distribución (Python(x,y), WinPython, Canopy o Anaconda). numba viene directamente instalado en Anaconda - fuera de ahí necesita un poco de trabajo, pero no más que instalar SciPy por ejemplo. En todo caso, se puede hacer que numba no sea obligatorio y meter un condicional: como solo es una línea, si hay numba estupendo y si no se queda como está.

@astrojuanlu
Copy link
Member

¡Está genial! He puesto algunos comentarios pero por lo demás está bastante bien. Me descoloca un poco la mezcla de inglés y español en las variables y nombres de funciones, eso sí.

@AunSiro
Copy link
Member Author

AunSiro commented Mar 3, 2015

Estoy corrigiendo y documentando lo de los nombres, tomo nota de todas las sugerencias!

Lo que no estoy muy seguro de si merece la pena es lo de buscar la ruta donde está Xfoil, ya que al menos en windows, se distribuye ya el exe listo, no hay que instalarlo.

Unificadas funciones y variables en inglés, código correctamente
comentado.
@AunSiro
Copy link
Member Author

AunSiro commented Mar 3, 2015

Ya he dejado el código en inglés y bien comentado!

Con respecto a lo de hacerlo multiplataforma, Los que usáis linux, me podéis decir cómo se abre el xfoil en linux? Me parece buena idea, sólo hay que cambiar un par de cosas en la manera en cómo se escriben las rutas.

Y con respecto a lo que ha dicho Álex? En Linux hay que instalarlo?

@newlawrence
Copy link
Member

Yo creo que sería mejor, para todo este tipo de programas externos, exigir
que se encuentren instalados y en el path y listo. El problema lo
tendríamos con aquellos que manejan ficheros en su propio directorio local,
que entonces tendríamos que preguntarle al SO desde dónde está ejecutando
el programa. En linux y Mac, tenemos el comando "wich" para eso; pero ahora
mismo no sé si en Windows hay algo parecido...

El 3 de marzo de 2015, 14:39, Siro notifications@github.com escribió:

Ya he dejado el código en inglés y bien comentado!

Con respecto a lo de hacerlo multiplataforma, Los que usáis linux, me
podéis decir cómo se abre el xfoil en linux? Me parece buena idea, sólo hay
que cambiar un par de cosas en la manera en cómo se escriben las rutas.

Y con respecto a lo que ha dicho Álex? En Linux hay que instalarlo?


Reply to this email directly or view it on GitHub
#20 (comment).

@astrojuanlu
Copy link
Member

En Linux en teoría se llama simplemente así:

$ xfoil

(el símbolo del dólar viene dado). ¿En Windows funciona sin el .exe? Porque en ese caso ya sería del todo portable. Luego es responsabilidad del usuario que el programa xfoil esté en el path, tanto en Windows como en Linux.

@newlawrence
Copy link
Member

Sí, en Windows funciona sin el .exe

El 3 de marzo de 2015, 18:48, Juan Luis Cano Rodríguez <
notifications@github.com> escribió:

En Linux en teoría se llama simplemente así:

$ xfoil

(el símbolo del dólar viene dado). ¿En Windows funciona sin el .exe?
Porque en ese caso ya sería del todo portable. Luego es responsabilidad del
usuario que el programa xfoil esté en el path, tanto en Windows como en
Linux.


Reply to this email directly or view it on GitHub
#20 (comment).

@AunSiro
Copy link
Member Author

AunSiro commented Mar 3, 2015

Acabo de comprobar que funciona sin el .exe, así que voy a cambiar cómo se escriben las líneas de carpetas y ya sería multiplataforma!

Compatible con Linux
@AunSiro
Copy link
Member Author

AunSiro commented Mar 3, 2015

En teoría ya debería ser multiplataforma!
Alguien con Linux se anima a probarlo? Lo que necesite del Xfoil se puede descargar de http://web.mit.edu/drela/Public/web/xfoil/

@astrojuanlu
Copy link
Member

No he instalado Xfoil aún, pero si corro el main me da un error:

$ python main.py 
Traceback (most recent call last):
  File "main.py", line 71, in <module>
    interfaz.xfoil_calculate_population(generation, ambient_data, aero_domain)
  File "/home/juanlu/Development/Python/AeroPython/aeropy/aeropy/Xfoil_Interaction/Genetic_algorithm_files/interfaz.py", line 106, in xfoil_calculate_population
    xfoil_calculate_profile(generation, profile_number, genome_matrix[profile_number-1,:], ambient_data, aero_domain)
  File "/home/juanlu/Development/Python/AeroPython/aeropy/aeropy/Xfoil_Interaction/Genetic_algorithm_files/interfaz.py", line 74, in xfoil_calculate_profile
    archivo = open(profile_root, mode = 'x')
FileNotFoundError: [Errno 2] No such file or directory: 'profiles/gen0/profile1.txt'

Corregido bug de creación de carpetas
@AunSiro
Copy link
Member Author

AunSiro commented Mar 3, 2015

Eliminé una cosa que no recordaba qué hacía. Mal hecho XD. Ya está corregido

@astrojuanlu
Copy link
Member

Lo he vuelto a probar de nuevo y no ha funcionado bien: falta un archivo xfoil.def al principio, no encuentra un perfil y a partir de ahí son todo "command not recognized".

https://gist.github.com/Juanlu001/42222736d6281982cdfe

Corregido bug que impedía la lectura de los perfiles en el Xfoil de
Linux
Añadidas opciones de final report, como imágenes y texto.
Creo que evitaré muchos bugs con una estrategia de programación
orientada a objetos
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants