LSQR algorithm with PyOpenCL

As part of the FreeCAD-Ship project I created a LSQR algorithm to solve Linear systems of equations, accelerated with OpenCL using PyOpenCL.

LSQR is a great, and relatively recent, iterative method to solve linear systems which can work with unsymmetrical rectangular matrix of an arbitrary range. Fortunately this method has also the property to fit so quite well to the GPU computing paradigm.

Bug fixes in FreeCAD-Ship

Several bugs have been fixed and already integrated in the master branch:

* Bad computed main frame coefficient.
* Crash in the tank volume computation when too low filling levels are required.
* Eventually bad computed floating area coefficient.
* Disabled the simulations framework (in development)

Since has been already integrated, I hope that in several days will be included in the Windows installers and in the Linux packages.

Control de eventos en los procesos largos de FreeCAD-Ship

Uno de los problemas de FreeCAD-Ship es prepararlo para los usuarios de Windows, las razones de esto todos las conocemos.

Pues bien, recientemente he recibido quejas relacionadas con algo que se encuentra documentado en los tutoriales, pero que efectivamente se puede volver una situación difícil de manejar, y es cuando los cálculos son muy largos. Si el número de geometrías es muy grande o estas son muy complejas el cálculo de las hidrostáticas y de la curva de brazos adrizantes GZ pueden llevar minutos, o incluso horas, algo que en Linux no era complicado de seguir, y en su caso detener, pues se lanzaba FreeCAD desde la terminal y listos, allí aparecía la evolución del proceso, y se podía detener con nuestro amado Ctrl+C.

Pero en Windows… Dichosos los usuarios de Windows… ¿Quién querría usar la terminal de Windows para lanzar FreeCAD? Y si no hay terminal, no hay seguimiento del proceso, y se puede volver un tanto frustrante. Por ello he añadido un control mejorado de los eventos en el cálculo de hidrostáticas y curva de GZ, de tal forma que ahora el programa se actualiza al final del cálculo de cada punto, mostrando la evolución en la vista de informe, y permitiendo detener el cálculo presionando el botón Cancelar del cuadro de diálogo.

La respuesta estaba en realidad en los foros de FreeCAD, pero he tenido que adaptarla a mis necesidades, lo que no era del todo trivial. De regalo además ahora la herramienta será capaz de guardar y graficar los resultados obtenidos hasta el momento del corte.

La integración es en un principio sencilla, así que espero que se encuentre disponible en la mayoría de los canales lo antes posible.

Módulo de graficado en FreeCAD (matplotlib)

Desde que se integró oficialmente FreeCAD-Ship uno de los problemas graves de mi módulo de FreeCAD era que en Windows no se podían graficar las curvas de una forma sencilla puesto que se empleaba pyxplot.

Para solucionarlo he creado un módulo de graficado basado en matplotlib.

Multiaxes example

El módulo ofrece, a traves de la consola o los macros de FreeCAD, toda la potencia de matplotlib, y una capa sobre el mismo que permite un control sencillo. Además se ofrecen algunas herramientas en la interfaz gráfica de usuario para controlarlo. Podeís encontrar ejemplos de como usarlo aquí y aquí.

Además FreeCAD-Ship ya ha sido adaptado para emplear el nuevo módulo con matplotlib, permitiendo curvas como estas:

Curvas hidrostáticas de los principales coeficientes de formas

Lamentablemente numpy y matplotlib no serán incluidos en el instalador de FreeCAD por el momento, así que hay que instalarlos manualmente si se quiere disponer de las nuevas herramientas (que ya usan otros módulos de FreeCAD).

Respecto del instalador de FreeCAD para Windows, podeís obtener la última versión (que aunque sea unstable es mucho más estable que la 0.12, paradojas de la vida) aquí.

Los usuarios de distribuciones derivadas de Debian (incluidas Mint, Ubuntu, etc.) podeís usar las daily builds.

El resto ojear esta página.

¡FreeCAD-Ship ya está en los paquetes autoinstalables!

FreeCAD-Ship fue oficialmente integrado en FreeCAD hace algunos meses, tal y como anunciaba en este otro post, pero ahora está presente en los paquetes autoinstalables.

FreeCAD-Ship lleva funcionando algunas semanas en la paquetería de Linux, y más concretamente en el daily build, donde podeís encontrar los repositorios y las instrucciones para instalar FreeCAD-Ship en distribuciones Linux derivadas de Debian.

La novedad es que desde hace unas horas los paquetes autoinstalables Windows ¡también traen FreeCAD-Ship!

Podeis encontrar los instaladores aquí (por supuesto instalar el más reciente).

Lamentablemente, y como cabría esperar, FreeCAD-Ship tiene dos problemas:

  • El paquete autoinstalable emplaza los iconos en una carpeta con nombre equivocado, y por tanto hay que renombrarla manualmente.
  • FreeCAD-Ship requiere, para pintar los gráficos, de pyxplot, que en la actualidad no dispone de paquetes para Windows.

Ambos problemas son culpa mía, y ambos serán solucionados lo antes posible. Pero hasta entonces he actualizado los tutoriales (1 y 2) añadiendo comentarios sobre como se puede evadir el problema.

¡A disfrutarlo!