Gnu-Octave

Dinámica del sistema masa-resorte-amortiguador con ODE45.

massvert.png

El siguiente ‘script’ muestra un sistema masa-resorte-amortiguador, resuelto con la función ODE45. Además, la fuerza ‘u’ externa puede ser considerada a través de la función fuerza().

function nonlinearModel()
to=0;    % start time
tf=20;   % end time
t=linspace(to,tf,100);
yo(1)=2; % initial condition
yo(2)=0;
[t,ydot] = ode45(@(t,y)nonlinear(t,y),t,yo);
plot(t,ydot)

function [ydot] = nonlinear(t,y)
% parameters
  k=1;
  b=1/2;
  m=1;
% proportional plus derivative control action
u=fuerza(t);
%u=0; % no control action
ydot=[y(2);
     - k/m*y(1) - b/m*y(2) + 1/m*u];
endfunction
function u=fuerza(t)
  u=1;
  %f=10;
  %u=sin(2*pi*f*t);
endfunction
endfunction

La figura resultante es, donde la linea azul corresponde a la posición y la linea roja corresponde a la velocidad.figura.png

Vamos a suponer que la fuerza en el resorte es cuadrática respecto el desplazamiento. Por tanto se deberá sustituir el término – k/m*y(1) por – k/m*y(1)^2 , y ejecutar nuevamente el script. ODE45 estará resolviendo el modelo no lineal.

NOTA: el cambio de variable y1’=y1-mg/k fue realizado para trasladar el punto de equilibrio del sistema de (mg/k,0) para (0,0).

OpenFOAM en Debian 10

El uso de softwares con métodos de elementos finitos es cada vez más común en los proyectos de ingeniería mecánica, eléctrica, aeroespacial, etc. Sin embargo, el alto costo de las licencias comerciales limita su uso al sector empresarial o a instituciones de investigación que tengan elevado presupuesto. OpenFOAM es una alternativa que presenta prestaciones superiores y es distribuido bajo licencia libre.

Este texto pretende dar las indicaciones necesarias para instalar y usar el software OpenFOAM en laptop con Debian 10, o también llamado de Debian Buster. Se verifica a través de un ejemplo de flujo laminar sobre un cilindro, tomado de un tutorial del 2014, disponible en youtube (enlace).

Indicaciones

  • Se recomienda actualizar los repositorios y actualizar el sistema operativo via terminal:
    $ sudo apt-get update
    $ sudo apt-get upgrade
  • Usando Synaptic, remover cualquier instalación de OpenFOAM.
  • Instalar docker de acuerdo a las indicaciones dadas en https://docs.docker.com/engine/install/debian/
  • Verificar que docker este instalado correctamente:
    $ id
    $ docker info
  • Descargar los archivos installOpenFOAMstartOpenFOAM para instalación y ejecución de de OpenFOAM, respecivamente (el comando chmod sirve para dar permiso a los archivos):
    $ chmod +x installOpenFOAM
    $ ./installOpenFOAM
    $ chmod +x startOpenFOAM
    $ ./startOpenFOAM
  • Si todo lo anterior está ok, aparecerá un shell. Crear la carpeta de trabajo  $/home/user/OpenFOAM/user-v1912/run/ usando el comando:
    bash-4.2$ mkdir -p $FOAM_RUN
    bash-4.2$ run
  • Luego,  descargar el ejemplo del cilindro (enlace), copiar la carpeta laminarVortexShedding dentro de $/home/user/OpenFOAM/user-v1912/run/ y generar la malla con el comando:
    bash-4.2$ cd laminarVortexShedding/
    bash-4.2$ blockMesh
  • Obtener la solución numérica usando:
    bash-4.2$ pisoFoam

    Advertencia: Esto toma entre 2 a 4 horas, dependiendo de la velocidad del procesador.
  • Ejecutar el programa paraView (si no está instalado, instalar vía Synaptic o desde otro terminal con $ sudo apt-get install paraview). Luego, retornar al shell y ejecutar:
    bash-4.2$ paraFoam -case $FOAM_RUN/laminarVortexShedding
  • En el software paraView, hacer los cambios que muestra la figura:

Screenshot_2020-04-21_15-22-38

  • Clicar en el boton Play para realizar la simulación. Las visualizaciones pueden demorar por causa de la cantidad de datos.
  • Una visualización más rápida se consigue desde la barra de menú View>Animation View>. Luego, clicar nuevamente en el botón Play.
  • Finalmente, obtener los coeficientes de sustentación (LIFT) y arrastro (DRAG) usando el archivo que viene con la carpeta ejemplo:
    $ python strouhal.py