Home » Articles posted by daniel.duque@upm.es

Author Archives: daniel.duque@upm.es

STAR-CCM+ messes up python3 – linux

Just a quick note in case somebody looks this up. Siemens’ Simcenter STAR-CCM+, a fine CFD program, has a funny way of installing itself on linux. It will modify /etc/profile this way

What it does, it changes your PATH so that “python3” now means “/opt/Siemens/15.04.010/STAR-CCM+15.04.010/star/bin/python3” (run which python3 to check this). (The actual version number may change on your system, of course.)

Also, notice /opt/Siemens/15.04.010/STAR-CCM+15.04.010/star/bin/python3 gets added TWICE to the PATH variable. That’s because I installed two times… it may appear many times, I guess. That would mean that “uninstall” does not work as well.

So, I would suggest eliminating those sections, even if uninstall may complain in the future, and creating a new small script with them, that should be run when STAR-CCM+ is needed. All that, as admin, of course.

Otherwise, many python3 applications may not work (it happened with me with calibre, for example).

Or, just comment out those block, and remember to uncomment them when you need to run STAR-CCM+. That’s dirty, but ok as long as you don’t use it too often.

Share

Coriolis force, the “easy” way

Just these notes I wrote after reading Susskind’s book.

Share

The Maxwell and common tangent constructions

In some theories, the energy is predicted to have this funny shape. The concave region is not allowed, so the simplest idea is just to fill the region with a segment (to form a “convex hull”). This is called the common tangent construction, and it is related to very classic Maxwell construction. Originally, JC Maxwell used this construction when analyzing results from the van der Waals equation of state for fluids.

The wikipedia article on Maxwell construction is fine, but the related common tangent construction does not exist! (you can create it if you feel like it). I have therefore written down these notes with information about this construction. Very simple, really, but my thermodynamics was very rusty!

Share

The Gresho vortex

Notes on the Gresho vortex, chiefly the pressure field.

Share

Oferta de contrato FPI

Oferta de contrato FPI

Se convoca un contrato FPI asociado al proyecto de investigación RTI2018-096791-B-C21, Hidrodinámica de elementos de amortiguamiento del movimiento de aerogeneradores flotantes, para realizar una tesis doctoral en el Grupo de Investigación CEHINAV de la ETS I Navales de la Universidad Politécnica de Madrid.

Las características del contrato son:

  • Plazo de solicitud: 17/10/2019 al 07/11/2019 (a las 14:00)
  • Dotación: 22 300 € / año + 6 250 para estancias y matrículas.
  • Formación requerida: Grado y máster en Ingeniería, Física, o similares.
  • Los interesados pueden contactar con Daniel Duque (daniel.duque@upm.es).
  • Más información sobre la convocatoria en la página oficial

Las principales líneas de investigación del Grupo son:

  • HPC para uso en Mecánica, Mecánica de Fluidos, Biomécanica, Estructuras, etc.
  • Aplicaciones del software de CFD OpenFOAM, de código abierto
  • Desarrollo de métodos CFD sin malla (“meshless”), como SPH.
  • Análisis de métodos numéricos
  • Aplicación de métodos de dinámica de fluidos computacional (CFD) a la hidrodinámica de buques
  • Análisis y optimización de formas de buques mediante estudios numéricos o experimentales
  • Estudios numéricos o experimentales de la hidrodinámica en artefactos y plataformas marinas
  • Investigación computacional o experimental del fenómeno de movimiento de fluidos confinados (“sloshing”)
Share

Tenure track position, Ramón y Cajal programme

 

Position for a tenure track researcher position at our group CEHINAV.

Applicants should apply to Ramón y Cajal programme. This is an initiative to stabilize researchers similat to a tenure track system. After five years, the researcher may apply for a permanent position.

 

Please contact

daniel [dot] duque [at] upm [dot] es

 

Candidate requirements:

  • Experiencie with the CFD open source software OpenFOAM
  • HPC applications in Mechanics, CFD, biomechanics, structures …
  • Development of meshless CFD methods
  • Numerical methods analysis
  • Application of CFD to ship hydrodynamics
  • Analysis and optimization of ship hulls by numerical or experimental techniques
  • Numerical or experimental study of hydrodynamics in marine artifacts and platforms
  • Computational or experimental research of confined liquid sloshing

More information on the programme at dedicated UPM  web page.

Share

Puesto para investigador Ramón y Cajal

Se ofrece un puesto de investigador dentro del la convocatoria del Programa Ramón y Cajal.

El investigador se integraría dentro del grupo de investigación CEHINAV.

Los interesados se pueden poner en contacto con

daniel [punto] duque [arroba] upm [punto] es

Las líneas son las siguientes:

  • Experiencia con el software de CFD OpenFOAM, de código abierto
  • HPC para uso en Mecánica, Mecánica de Fluidos, Biomécanica, Estructuras, etc.
  • Desarrollo de métodos CFD sin malla ("meshless")
  • Análisis de métodos numéricos
  • Aplicación de métodos de dinámica de fluidos computacional (CFD) a la hidrodinámica de buques
  • Análisis y optimización de formas de buques mediante estudios numéricos o experimentales
  • Estudios numéricos o experimentales de la hidrodinámica en artefactos y plataformas marinas
  • Investigación computacional o experimental del fenómeno de movimiento de fluidos confinados ("sloshing")

Más información sobre el programa en la página de la UPM dedicada al mismo.

 

Share

Análisis de estabilidad de von Neumann

Este método es muy conocido para analizar los parámetros en una discretización que garantizan la estabilidad del método numérico. Ver, por ejemplo, el análisis de la ecuación de difusión en wikipedia (que yo, ejem, acabo de modificar). Pero, en mi opinión, la discusión se mete en funciones trigonométricas que despistan bastante. Sobre todo, porque acaban evaluadas en "la peor situación", que se ve venir de antemano. Aquí propongo anticipar esa situación desde el principio.

 

Por cierto: es "fon no i man"

 

(más…)

Share

Presentaciones rápidas y fáciles con reveal.js

A menudo es necesario generar una presentación para un congreso o curso en poco tiempo, pero que cumpla estas características

  • Que sea visualmente atractiva
  • Que incluya matemáticas facilmente (en LaTeX, a ser posible)
  • Que esté "en la nube"
  • Que pueda incluir películas

Aquí cuento una opción muy sencilla, que utiliza:

El resultado puede verse en las transparencias para el curso Métodos Numéricos en Mecánica de fluidos o la presentación sobre el artículo … phase separation kinetics for … two-dimensional membranes


 

reveal.js

Este entorno fue creado por el sueco Hakim El Hattab para generar presentaciones que pueden verse con un navegador. Se puede usar de forma local, abriendo las páginas, que están en nuestro ordenador, con un navegador, o subir las páginas a algún host (como explico más abajo).

Lo más sencillo es "clonar" reveal.js a nuestro disco local y modificar los ficheros index.html o demo.html que vienen con la distribución

markdown

Cuando editamos estos ficheros nos encontramos con html bastante fácil de entender:

                <section>
                    <h2>Touch Optimized</h2>
                    <p>
                        Presentations look great on touch devices, like mobile phones and tablets. Simply swipe through your slides.
                    </p>
                </section>

Por ejemplo, cada transparencia está delimitada por "<section>". Podemos entonces introducir texto html directamente, pero para los impacientes como yo es muy interesante usar markdown:


                        <section data-markdown>
                          ## Markdown support

                          Write content using inline or external Markdown.
                          Instructions and more info available in the [readme](https://github.com/hakimel/reveal.js#markdown).
                        </section>

La transparencia empieza con "<section data-markdown> <script type="text/template">  " , y lo que contiene es texto en formato markdown. Sin entrar en detalles, es una manera facilísima de maquetar texto para las tareas habituales (listas, encabecamientos, enlaces url, LaTeX). Por ejemplo:

 

                <section data-markdown>
                  <script type="text/template">
                    ####  Discretization : steady 1D diffusion
        
                    To illustrate how the conservation equations used in CFD can be discretized, we will look the diffusion of a chemical species
                    (constant density, incompressible flow), given by: 

                    $$
                    \frac{d}{{dx}}\left( {D\frac{{dc}}{{dx}}} \right) + S = 0
                    $$

       
                    Here $c$ is the concentration of the chemical species, $D$ is the diffusion coefficient, and $S$ is a source term
                  </script>
                </section>

Markdown es tambiénmuy conocido porque se usa para generar los ficheros de ayuda README.md en github y otros sitios. En todo caso, mucho más fácil que html. El único pero es que algunas ecuaciones LaTeX no se compilan bien; para ello hay que escribir “ antes de la ecuación. Por ejemplo:

 

                <section data-markdown>
                  <script type="text/template">
                    ####  Discretization : steady 1D diffusion
                    <img src="FVM_1D_cells.png"  style="background:white" width="40%">
                    “$$
                    \left( DA\frac{dc}{dx} \right)_e  \doteq D_e A_e \frac{c_E  – c_P }{\delta x_{PE}}
                    $$“

                    
                    $
                    D_e  \doteq \frac{{D_E  + D_P }}{2}
                    $        
                    $
                    \overline S \Delta V: = S_u + S_P c_P 
                    $
                  </script>
                </section>

 

(también se incluye una imagen, mediante html)

 

github 

 

Ojo: Este proceso es para un sistema linux y con un github ya configurado para subidas y bajadas automáticas (por ssh). Eso es otra historia, pero no es difícil y está bien explicado en muchos sitios, p.e. en la página oficial (en inglés, eso sí).

 

 

Ya hemos mencionado el servicio github porque reveal.js está albergado en él. Se trata de un servicio extremadamente interesante para proyectos colaborativos. Es muy conocido para programación, pero se puede usar perfectamente para transparencias, documentos, etc. Además no es necesario que los proyectos sean colaborativos, incluso para un solo usuario es interesante al ser un servicio de nube gratuito y muy optimizado. Eso sí, sólo para proyectos abiertos, si no hay que pagar, o se puede usar otro servicio, como bitbucket.

Lo interesante es que github ofrece un servicio web hosting gratuito y muy sencillo. Si nuestro usuario se llama ddcampayo, e inicia un repositorio llamado ddcampayo.github.io, el dominio https://ddcampayo.github.io/ automáticamente muestra los contenidos del repositorio. Esto es enormemente cómodo. El proceso típico sería así:

  • En nuestro ordenador tenemos un directorio llamado igual que el proyecto, p.e. ddcampayo.github.io. En él editamos los ficheros que queramos (ficheros html para reveal.js, por ejemplo) y colocamos gráficos, gifs animados, películas, pdfs…
  • Vamos visualizando los cambios con un navegador que abre los ficheros locales ("file://" en el campo url, en vez de "http://")
  • Cuando nos guste, subimos los cambios con git commit -m 'descripcion de mis cambios'  seguido de git push
  • Ya está, al cabo de unos segundos los archivos aparecen en la página web, por ejemplo, https://ddcampayo.github.io, y todo el mundo puede verlos

También podemos usar otro ordenador para hacer cambios, o la interfaz web de github, pero hay que acordarse de hacer "git pull" en los ordenadores que no están actualizados a la última versión.
 

Share

OpenFOAM en Virtualbox

VirtualBox_xubutu+OF_17_02_2017_16_16_26Aquí explico cómo correr una máquina virtual linux ("huesped") en un entorno ("anfitrión") windows para tener OpenFOAM.

Primero, instalamos virtualbox. Lo abrimos, damos a "nueva", "modo guiado" (el experto tampoco es mucho más difícil), Luego, escogemos un sistema linux, ubuntu 64 bits (salvo que nuestro PC sea de 32, claro). Puede que no aparezca la opción de 64 bits la primera vez que corremos virtualbox. Si lo cerramos y abrimos de nuevo, ahí estará (???). Asignamos una buena cantidad de memoria a la máquina virtual, 4Gb mínimo. En realidad, lo normal es ver cuánta memoria se usa en el entorno anfitrión haciendo lo habitual (al menos, estará windows y seguramente un navegador con algunas pestañas abiertas).

Luego, hay que crear un disco duro virtual. Usar VDI, la opción sugerida. El disco duro es mejor que sea "dinámico"; el anfitrión lo ve como un fichero que va creciendo o menguando según haga falta. Luego, el tamaño, lo mínimo en nuestro caso sería 8Gb (¡el sistema y OpenFOAM se "expanden" hasta los 5Gb al instalarse!), pero entonces NO hay que crear partición de swap en linux (ver más abajo). Si no, lo mínimo son 8+(tamaño de RAM). En realidad, como el disco es dinámico se puede escoger un tamaño muy grande (p.e. 128Gb) y tener cuidado con no llenarlo (las simulaciones, de hecho, pueden llenar un disco duro en minutos).

Una vez configurado el disco duro, hay que configurar el sistema (todas estas opciones se pueden cambiar después, pero es buena idea dejarlas listas ahora). Pulsar en "configurar".

En "General", "avanzado", es útil "compartir portapapeles". Yo lo pongo en "bidireccional", para cortar y pegar texto entre el sistema anfitrión y el virtual (no he probado nunca a cortar y pegar ficheros y cosas así…). En "sistema" se puede cambiar la memoria base, y asignar más procesadores de los que tengamos a la máquina virtual (pestaña "procesador").

En "Pantalla", subir los ridículos 16Mb asignados a la tarjeta de vídeo al máximo (128Mb, que tampoco es tanto). Asegurarse de que NO está seleccionada la aceleración 3D, de momento paraview no funciona con esta opción (es decir, ni a mí ni a muchos nos funciona, pero se puede probar a ver).

En "Almacenamiento", añadir un CD IDE (icono de CD con un signo "+"), "Seleccionar disco", y navegar hasta la imagen ISO. Virtualbox montará esta imagen como un disco virtual adicional desde el cual podemos arrancar el sistema. Se puede usar la imagen ISO que yo he creado, que ya tiene OpenFOAM instalado. Pero la máquina virtual accede a internet a través del anfitrión, así que se puede también usar una imagen cualquiera de cualquier variante de ubuntu y luego instalar OpenFOAM como se explica en la documentación oficial.

También es muy interesante "Carpetas compartidas". Seleccionamos "+", una carpeta a la que tengamos acceso (puede ser nuestra carpeta raíz, pero quizá sea un poco arriesgado, mejor crear un directorio de intercambio ad hoc; otra opción tentadora es compartir la carpeta de dropbox o owncloud). Quitar "solo lectura" y poner "automontar". Poner un nombre sencillo, p.e. "share". Más adelante, desde ubuntu, hay que correr lo siguiente:

sudo mount -t vboxsf -o uid=$UID,gid=$(id -g) share ~/host

Donde "share" es el nombre de la carpeta compartida y ~/host es el directorio donde queremos que aparezca ("~" significa "directorio raíz de usuario"). Es un comando un poco feo, así que se puede usar un alias

Por fin, encendemos la máquina virtual ("Iniciar"). Debería arrancar directamente del iso. Se trata de una instalación ubuntu estándar, muy rápida y sencilla. Lo único, cuando llegue el momento de particionar el disco duro, debemos seleccionar la opción manual si no queremos swap. Luego, crear una sola partición con el tamaño máximo (creo que no hace falta en estos casos meterse con particiones de sistema y usuario, etc), y aceptar el mensaje relativo a no crear swap. Por lo que he leído, últimamente no es necesario gracias a la gran cantidad de RAM que tienen los equipos (al revés, paginar en disco tanta swap acaba ocupando una parte no despreciable del disco que quizá no se use nunca).

Cuando termine de instalarse el sistema, hay que reiniciar. Puede que la primera vez salga una pantalla horrorosa. No hay problema, con  ctrl alt F1, ctrl alt F7 salimos a modo texto y volvemos a modo gráfico correctamente. Se supone que esto pasa sólo la primera vez, al menos si hacemos lo siguiente…

Que es instalar las "guest additions". Se trata de (otro) disco virtual tipo CD que contiene utilidades muy interesantes para Virtualbox. Como es habitual en ubuntu, aparecerá un icono con forma de CD en el escritorio. Podemos abrirlo con doble click, luego botón derecho sobre la zona blanca (no sobre un fichero o directorio), y correr

sudo ./VBoxLinuxAdditions.run

Este es un buen momento para usar [tab]: teclear “sudo ./” e ir probando qué pasa si vamos dando a [tab] una vez o dos …

Cuando se haya instalado, hay que reiniciar la máquina virtual.

Creo (no estoy seguro) que también conviene ir al menú del ratoncito (en xubuntu), arriba a la izquierda, y teclar "drivers" o "controladores". Seleccionar "controladores adicionales" y seleccionar el controlador gráfico VirtualBox (de Inno TeK GmbH).

El resto, como ya he explicado antes: ahora toca familiarizarse con el entorno. Si todo va bien, acaremos con un sistema capaz de correr OpenFOAM y de visualizar los resultados con paraview, como en la captura de pantalla que he puesto al principio.

Aunque la máquina es virtual, pulsando host + F pasamos a pantalla completa, y es habitual olvidarse de que el sistema es en realidad virtual. La tecla "host", por cierto, está asignada al ctrl derecho, aunque puede cambiarse. Para volver al modo de ventana, puede pulsarse host + F de nuevo, o ir con el ratón abajo y al centro, con lo que aparece un menú oculto de Virtualbox.

 

Share