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

Author Archives: daniel.duque@upm.es

Diagramas de Voronoi… ¿en todas partes?

Es inevitable: cuando se aprende algo atractivo, uno comienza a verlo en todas partes. El efecto tiene un nombre: Fenómeno Baader-Meinhof, y creo que es más famoso ya el fenómeno que la organización terrorista a la que se refiere.

Las ciencias no son una excepción en este sentido, sobre todo si hablamos de patrones espaciales. Uno de ellos es el diagrama de Voronoi que, para una colección de puntos (“generadores”), asocia a cada uno la zona más cercana.

El asunto con este diagrama es que es fácil construirlo si a uno le dan los puntos generadores:

De Balu Ertl – Trabajo propio, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=38534275

Lo curioso es que, si a uno ya le dan el diagrama (o algo que se le parece), no es tan fácil encontrar los puntos generadores.

Aquí, un diagrama visto en la piel de una jirafa. Parece de Voronoi, pero ¿lo es? ¿Podemos cuantificar cuánto se desvía? ¿Dónde están los puntos?

https://engineering.lehigh.edu/news/article/voronoi-tessellations-seen-childs-play

Las tres preguntas están relacionadas, por supuesto. Un procedimiento descrito por Hisao Honda en 1978 nos ayuda a encontrar los puntos generadores. Si las semi-rectas descritas se cruzan todas en un punto, el diagrama es de Voronoi. Si no, no lo es, pero aun así él propuso una medida de la desviación de los cruces para cuantificar cómo de “lejos” estaría esta celda en particular de ser parte de un diagrama de Voronoi (en esto no vamos a entrar).

Hisao Honda (1978). Description of cellular patterns by Dirichlet domains: The two-dimensional case. , 72(3), 523–543. doi:10.1016/0022-5193(78)90315-6 

Para este tipo de cálculos, está genial geogebra, un programa gratuito de geometría (que, además, permite importar imágenes y dibujar sobre ellas). Si probamos la construcción anterior, comenzando con la intersección D y luego con la C…

Bueno, el dibujo tiene muchos detalles, pero la idea siempre es tomar un segmento como el DE, ver qué ángulo hace su continuación con el segmento que se va “fuera” de la celda (el DI). En este caso, es de 51.83º. Luego, trazamos una recta desde D que forme este mismo ángulo con el segmento DC. Y así. Al trazar la tercera línea nos damos cuenta de que el diagrama no es NADA de Voronoi!! Si lo fuera, todas las rectas se cortarían en un punto, que es el generador. Por supuesto, esto no va a pasar nunca (aunque sólo sea por errores de perspectiva, de fotografía…), pero sí hay diagramas reales donde el resultado es mucho mejor.

Territorios marcados por el pez Tilapia Mossambica (líneas continuas) y su aproximación con un diagrama de Voronoi (a trazos). Del artículo original de Hisao Honda.

Para el futuro: desmitificar los frecuentes anuncios de hallazgos de diagramas de Voronoi hasta en la sopa (¡literalmente!)

Share

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