Home » OpenFOAM

Category Archives: OpenFOAM

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

Primera sesión con linux y openfoam

Este tutorial supone que tenemos una distrubución xubuntu 16.04LTS con OpenFOAM4.1 instalado (en realidad, vale para cualquier variante de ubuntu y cualquier versión de OpenFOAM que no sean muy antiguos).

Se puede obtener una imagen iso que yo he creado en este enlace. En una entrada anterior he descrito cómo crear la imagen y cómo "quemarla" en un USB, de modo que podamos hacer todo esto sin necesidad de instalar linux permanentemente en un ordenador.

Lo primero, abrimos "File manager" del menú xubuntu (ratoncito azul arriba a la izquierda). Y luego, "Terminal emulator". En el segundo,

ls

Vemos que nos da una lista de directorios que coincide con File manager. Probar también

ls -l

ls -a

ls -al

El directorio que contiene OpenFOAM es /opt :

ls /opt/

"/" significa "raíz del disco. Probar "ls /".

OpenFOAM no está "instalado" de serie, para acceder a todo hay que correr un fichero cada vez que se entra en linux:

. /opt/openfoam4/etc/bashrc

Más adelante veremos que esto puede automatizarse con un fichero de arranque. ". " significa "ejecutar, correr". ¡Ojo al espacio! También puede correrse "source /opt/openfoam4/etc/bashrc", es lo mismo.

Ah, es hora de practicar la autocompleción con el tabulador. Es mejor teclear ". /o", dar al tabulador y se completa como ". /opt/", ya que es la única opción. En cambio, ", /" no completa nada cuando se pulsa tabulador una sola vez. Una segunda vez nos muestra las opciones posibles. Muy muy útil.

Ahora aparen comandos que antes no teníamos. Por ejemplo "block" + [tab] dos veces nos da "blockdev   blockMesh". El primer comando ya estaba antes, pero el segundo es una utilidad de OpenFOAM. Si preguntamos dónde está

which blockMesh

queda claro:

/opt/openfoam4/platforms/linux64GccDPInt32Opt/bin/blockMesh

 

echo $FOAM_RUN

mkdir -p $FOAM_RUN/

cd $FOAM_RUN/

ls

cd

cd –

ls

pwd

cd ..

ls

cp -r $FOAM_TUTORIALS/ .

cd tutorials/incompressible/icoFoam/cavity/cavity
ls

blockMesh 
paraFoam 
icoFoam 

 

Time = 0.055

Courant Number mean: 0.21382 max: 0.847682
smoothSolver:  Solving for Ux, Initial residual = 0.0023784, Final residual = 6.13546e-06, No Iterations 11
smoothSolver:  Solving for Uy, Initial residual = 0.00526521, Final residual = 7.98841e-06, No Iterations 12
DICPCG:  Solving for p, Initial residual = 0.00564918, Final residual = 0.000273181, No Iterations 8
time step continuity errors : sum local = 2.32443e-06, global = 1.00259e-19, cumulative = -1.05705e-18
DICPCG:  Solving for p, Initial residual = 0.00433468, Final residual = 9.31993e-07, No Iterations 27
time step continuity errors : sum local = 7.64137e-09, global = -6.73325e-19, cumulative = -1.73037e-18
ExecutionTime = 0.03 s  ClockTime = 0 s

 

icoFoam  > log &


 

 

Share