Categorías
MATLAB Octave tutorial

Curso de introducción a Octave-MATLAB para ingenieros químicos (2ª ed.)

Volvemos este año con la segunda edición del curso gratuito de Octave / MATLAB para ingeniería química. De nuevo, la motivación de este curso es mostrar a los estudiantes una alternativa, libre, gratuita y factible a MATLAB que puedan utilizar una vez comience su vida profesional. Para ello se resolverán diversos problemas, con especial atención al diseño de reactores químicos, un área de conocimiento que requiere del uso de métodos numéricos para su simulación, sin olvidar otros campos de interés.

Horarios y aulas:

  • Lunes 27 de octubre de 15:30 a 18:00 h en el laboratorio L18 (Ed. Poli. I)
  • Martes 28 de octubre de 15:30 a 18:00 h en el aula A3/INF2 del Aulario III
  • Miércoles 29 de octubre de 15:30 a 18:00 h en el laboratorio L17  (Ed. Poli. I)
  • Jueves 30 de octubre de 15:30 a 18:00 h en el laboratorio L17 (Ed. Poli. I)

¿Por qué GNU Otave y no MATLAB?

  • Es altamente compatible y similar a MATLAB, siendo esta última la opción con la que se imparten los cursos de programación a los estudiantes de grado pero que tiene un coste de 69 € para estudiantes y de ~15000 €si lo quieren utilizar en su vida profesional
  • Es software libre y 100% gratuito, disponible para Windows y Linux
  • Octave UPM, por ejemplo, es una adaptación de GNU Octave que se emplea para la docencia de Informática en la Escuela de Ingenieros de Caminos, Canales y Puertos de la UPM y ha sido desarrollado por el Dr. Israel Herraiz
Entorno de programación (similar a MATLAB)
Entorno de programación de Octave UPM (similar a MATLAB)

Actualización: La nueva versión de GNU Octave ya incorpora interfaz gráfica (descargar para Windows)

El curso es gratuito y de acceso libre, todo el material utilizado durante el mismo será también publicado para aquellos que no puedan asistir. No obstante, recomendamos este curso ya que su intención es más práctica que teórica y además estaremos a vuestra disposición para ayudaros a encontrar fallos en vuestros scripts así como resolver dudas puntuales que tengáis. Recomendamos que vengáis con vuestro portátil para poder trabajar siempre que queráis con Octave UPM en vuestro ordenador.

¿Por dónde empezar?

Los requisitos del curso serán tener conocimientos básicos de programación y de reactores químicos. Para el que quiera ir repasando:

Temario:

El temario del curso se dividirá en 4 sesiones de 2,5 horas cada una y se adaptará con la respuesta de los asistentes:

  • Sesión I (2,5 h):
    • Introducción a Octave UPM
      • Buenas prácticas de programación
      • Repaso: Operaciones y comandos básicos de Matlab-Octave
      • Resolución de ecuaciones diferenciales ordinarias

      • Sesión II (2,5 h):
        • Modelado y simulación de RDTAs mediante ejemplos ordenados de menor a mayor grado de dificultad:
          • Llenado de un tanque.
          • Llenado de un tanque con aporte de calor
          • RDTA y reacciones en serie (isotermo)
          • Modelado de un RDTA no isotermo

    • Sesión III (2,5 h):
      • Modelado y simulación de RFPs mediante ejemplos de complejidad progresiva
      • Reacción en fase gas sobre catalizador de óxido de aluminio
      • Craqueo de acetona
      • Craqueo térmico de hidrocarburos (incluyendo balances de materia, energía y cantidad de movimiento).

  • Sesión IV (2,5 h):
    • Introducción a aplicaciones de Octave/Matlab en Ingeniería Biomédica: modelo epidemiológico, tratamiento de imágenes médicas, ayuda al diagnóstico médico, modelización y simulación de sistemas fisiológicos.
    • Resolución de un problema con sucesión de varios reactores RFP en serie
    • Modelado y simulación de la puesta en marcha de un RCTA (comportamiento dinámico)

¿Cómo podrían afectar los recortes a la propagación del virus del Ébola?

ebola-simulacion-CAChemE

 

function main
% Modelo simple SEIR epidemiológico
% del virus del Ébola
% Oct. 2014 - CAChemE.org


% Condiciones iniciales

N = 100; % Población total

y0 = [N, 1, 0, 0, 0]; % [S, E, I, R, D]

% Discretización de la variable independiente

tiempo_simulacion = 350; % días
t  = [0, tiempo_simulacion];

% Llamamos al ode para resolver las eq. diferenciales   
[t,y] = ode45(@DiffEqs, t, y0);


function dydt =  DiffEqs(t,y)
  %Modelo simple epidemiológico para la
  % propagación del virus del Ébola

  % Recuperamos las variables dependientes de entrada
  S = y(1);
  E = y(2);
  I = y(3);
  R = y(4);
  D = y(5);

  Nn = S + E + I + R; % Total de personas vivas

  
  %---------------------------------------------------------------
  % Constantes del modelo
  %---------------------------------------------------------------

  sigma = 1./9; %  Velocidad de convertirse en contagioso una vez expuesto
  gamma_factor = 1./8.5; % Velocidad de recuperación o fallecimiento
  f = 0.4; % Fracción de gente que no supera la enfermedad (40%)

  % A mayor nº de recortes, mayor nº de personas contagiadas por infectado
  recortes_sanidad = 1.4;

  R_0 = recortes_sanidad;

  beta_factor = R_0*gamma_factor; % Velocidad con la que se propaga la infec.

  % Definimos las ecuaciones diferenciales
  dSdt = -beta_factor*(S/Nn)*I;
  dEdt = +beta_factor*(S/Nn)*I - sigma*E;
  dIdt = sigma*E - gamma_factor*I;
  dRdt = (1.0-f)*gamma_factor*I;
  dDdt = f*gamma_factor*I;
  dydt =  [dSdt, dEdt, dIdt, dRdt, dDdt]';

end


% Obtenemos y nombramos las variables dependientes de salida del ode45
S = y(:,1); %  S es el nº de personas sin infectar
E = y(:,2); %  E es el nº de portadores del virus no contagiosos (aún)
I = y(:,3); %  I es el nº de personas sintomáticas e infecciosas
R = y(:,4); %  R es el nº de personas recuperadas
Ds = y(:,5); %  D es el nº de personas fallecidas

% Creamos la figura para representar los resultados
figure(1)

% Representamos las curvas de evolución con respecto al tiempo
plot(t, [(E + I), I, R, Ds, S])


% Añadimos leyenda a los datos
legend('% infectados', ...
      '% infectados contagiosos', ...
      '% recuperados', ...
      '% fallecidos', ...
      '% población sana ')

title('Variación de la velocidad de propagación del virus del ebola.')
xlabel('tiempo / días')
ylabel('porcentaje de población')

end

 

 

Instructor: Sergio Quesada


El curso será impartido por Sergio Quesada Dorigné, Ingeniero Químico por la Universidad de Alicante e Ingeniero Biomédico por la Universidad Politécnica de Valencia y la Universidad de Valencia.

 

 

¿A quién va orientado este curso?

Si bien el curso está orientado a alumnos de grado de 3º de Ingeniería Química (de ahí el horario de tarde que se ha seleccionado), en el curso se hará una introducción a la programación con Octave / MATLAB por ordenador. Si eres estudiante de otro año y no tienes problemas con las clases ¡eres más que bienvenido/a!. Si, por el contrario, te hubiera gustado asistir pero el horario del curso es incompatible con el tuyo, háznoslo saber con un comentario.

CAChemE entregará certificados de asistencia a quienes lo soliciten y cumplan con los requisitos (asistencia mínima al 80 % de horas). No obstante, este curso no es convalidable por créditos de libre configuración.

¿Por qué es gratuito?

Este curso es posible gracias a la financiación del la Escuela Politécnica Superior de la Universidad de Alicante. Si te interesan este tipo de cursos de formación de ingeniería química por ordenador, házselo saber al delegado de tu curso para presentar una solicitud por la vía correspondiente.

Aprende más sobre Ingeniería de Procesos Químicos por ordenador

Suscríbete a nuestro canal de YouTube o síguenos en Facebook o Twitter.

 

Categorías
MATLAB Octave

Curso básico de modelado de reactores químicos en MATLAB-Octave UPM

Aquí recogemos el material del curso gratuito que tuvo lugar durante la primera y segunda semana de diciembre de 2013 para alumnos de grado de Ingeniería Química. Octave UPM que es la alternativa a MATLAB más interesante para los que busquen máxima compatibilidad.

[box]Accede a los contenidos actualizados de la segunda edición de este curso

Horario y aulas 

Horario de 16 a 18 h para los siguientes días de diciembre, y en las aulas de informática de la EPS:

  • martes 3 (L25);
  • miercoles 4 (L18);
  • jueves 5 (L13);
  • martes 10 (L25);
  • miercoles 11 (L25);
  • jueves 12 (L13);

¡Aquellos alumnos que asistan a un 80% del curso, recibirán un certificado de asistencia!
¿Por qué Octave UPM y no MATLAB?

  • Octave UPM es una adaptación de GNU Octave que se emplea para la docencia de Informática en la Escuela de Ingenieros de Caminos, Canales y Puertos de la UPM y ha sido desarrollado por Israel Herraiz (@herraiz)
  • Es altamente compatible con MATLAB.
  • Es software libre y gratuito, disponible para Windows y Linux
Entorno de programación (similar a MATLAB)
Entorno de programación de Octave UPM (similar a MATLAB)

Actualización: La nueva versión de GNU Octave ya incorpora interfaz gráfica (descargar para Windows)

El curso es gratuito y de acceso libre, todo el material utilizado durante el mismo será también públicado para aquellos que no puedan asistir. No obstante, recomendamos este curso ya que su intención es más práctica que teórica y además estaremos a vuestra disposición para ayudaros a encontrar fallos en vuestros scripts así como resolver dudas puntuales que tengáis. Recomendamos que vengáis con vuestro portátil para poder trabajar siempre que queráis con Octave UPM en vuestro ordenador.

¿Por dónde empezar?

Los requisitos del curso serán tener conocimientos básicos de programación y de reactores químicos. Para el que quiera ir repasando:

Día 1:

Iniciacion al modelado de reactores quimicos com MATLAB – Octave (intro) por CAChemE

Día 2 y 3:

Simulación de reactores químicos con octave por CAChemE

Días 4 y 5:

Reactor flujo piston en MATLAB – Octave UPM – Craqueo térmico por CAChemE

Día 6:

Reactor de flujo piston con MATLAB Octave from CAChemE
Archivo principal:
pkg load odepkg

close all
clear all
clc

global k0 Ea R Seccion Qv1 alfa U Tw Tref d DCp DHref Cp Qv2

%Sacarosa(A) medioacido(B) glocosa(C) fructosa(D) indes(E)

%DATOS TERMODINAMICOS Y CINETICOS
%        A  B C D E 
alfa = [-1 -1 1 1 0
        -1 -1 0 0 2];

Cp = [62.0 75.2 80.0 80.0 80.0]; % kJ/kmol.K
PM = [342 18 180 180 180]; % Kg/Kmol

DHref = [-11000 -12000]; % kJ/kmol
Ea = 125300; % J/mol
R = 8.314; % kJ/kmol.K o J/mol.K
k0 = 0.0193/(exp(-Ea/R/(273+50)));
DCp = Cp*alfa'; % Equivalente a sum(Cp.*alfa)
Tref = 25+273; % K

% DATOS DE LOS REACTORES Y REFRIGERACION
Seccion = 0.1; % m2
d = (Seccion*4/pi)^0.5; % m
U = 1.0; % kJ/s·m2·K
Tw = 30+273; % K

% DATOS ALIMENTO
Talim = 50+273; % K
Qv0 = 0.4/60; % m3/s
Qv1 = 0.2/60; % m3/s
Qv2 = 0.3/60; % m3/s
Qv3 = 0.1/60; % m3/s

% EJECUTO PRIMER REACTOR Y TANTEANDO VOY A VER QUE LONGITUD DE REACTOR
% NECESITO PARA LLEGAR A LA SALIDA A C(3)=1.5M

C0 = [2 16.6 0.1 0 0]; % kmol/m3
L1 = 1; % no conocemos este valor, se pone 1 para empezar

y0 = [C0 Talim]; % Condiciones iniciales
[x1,Y1] = ode45(@fdif_rfp1,[0 L1],y0);

% REPRESENTACIÓN DE RESULTADOS
L_r1 = x1; % variable independiente
C_r1 = Y1(:,1:5);
T_r1 = Y1(:,6);
C_salida_r1 = Y1(end,1:5); % variable dependiente (C)
T_salida_r1 = Y1(end,6); % variable dependiente (Tª)

figure(1)
plot(L_r1,C_r1)

xlabel('L / m')
ylabel('C_j / kmol/m^3')
title('Variación de concentraciones en el RFP_1')
legend('Sacarosa', 'Agua acidulada', 'glucosa', 'Fructosa', 'indesada')

figure(2)
plot(L_r1,T_r1)
xlabel('L / m')
ylabel('T / K')
title('Variación de temperatura en el RFP_1')

Archivo de función:

function z=fdif_rfp1(x,y)

global k0 Ea R Seccion Qv1 alfa U Tw Tref d DCp DHref Cp

% Se asginan de nuevo las variables del vector de
% condiciones iniciales "y"

%Sacarosa(A) medioacido(B) glocosa(C) fructosa(D) indes(E)

C=y(1:5);
T=y(6);

n = C*Qv1; % Flujo molar;

% BALANCE DE MATERIA

k1 = k0*exp(-Ea/R/T);
k2 = exp(-5.64-220/T);

k = [k1 k2];

r(1) = k(1)*C(1);
r(2) = k(2)*C(1);

dndL(1) = Seccion*r*alfa(:,1);
dndL(2) = Seccion*r*alfa(:,2);
dndL(3) = Seccion*r*alfa(:,3);
dndL(4) = Seccion*r*alfa(:,4);
dndL(5) = Seccion*r*alfa(:,5);

dCdL = dndL/Qv1;

% % Equivalente pero mediante bucle:
%  for i=1:5;
%    z(i)=(Seccion/Qv1)*r*alfa(:,i);
%  end

% BALANCE DE ENERGIA 
for i=1:2;
    DH(i)=DHref(i)+DCp(i)*(T-Tref);
end

Q = U*pi*d*(Tw-T);

dTdL = (Q - Seccion*sum(r.*DH))/ sum(n'.*Cp);

z = [dCdL, dTdL]';

end

 

Categorías
MATLAB Octave podcast

¿MATLAB? Yo uso Octave UPM – Podcast #2

¿Buscas una alternativa a MATLAB libre y que sea compatible con tu trabajo ya hecho? ¿tienes problemas de licencias o te gustaría reducir el coste de las mismas?

En esta ocasión entrevistamos al desarrollador principal de Octave UPM, una de las alternativas más atractivas a MATLAB. Israel Herraiz (@herraiz) nos responde a todas las preguntas sobre este proyecto basado en GNU Octave que busca la máxima compatibilidad con MATLAB y le añade una entorno gráfico también similar.

Disclaimer: Después de este podcast no te quedarán casi excusas para no probar software libre «tipo MATLAB».

Secciones de la entrevista con links para obtener más información:

  • ¿Por qué Octave? [EN] GNU Octave, a great time saver.
  • [EN] Problemas de licencia con MATLAB y sus toolboxes diseñados para pasar por caja (ej. el toollbox de estadística necesario para funcionesciones triviales como random entre a y b).
  • GNU Octave (Wikipedia) – ¡Originalmente creado con la finalidad de calcular reactores para procesos Químicos!
  • ¿Por qué voy a querer una alternativa a MATLAB si funciona tan bien y es tan solicitado?
  • ¿Por qué Octave si es tan similar no se usa? Compatibilidad entre MATLAB y Octave (+1) y falta de una interfaz gráfica y entorno de programación,
  • Octave UPM: origen, motivación y objetivos.
  • Resultados y aceptación por alumnos de la UPM.
  • Octave está trabajando en una GUI también ¿se sabe algo?
  • Continuidad de Octave UPM y diferencias con GNU Octave.
  • Material libre para aprender a programar: MiriadaX (Wiki) y materiales de Guillem Borrell.

Actualización: La nueva versión de GNU Octave ya incorpora interfaz gráfica (descargar para Windows)

Y como siempre, si hay algo que te hubiera gustado añadir puedes comentárnoslo justo aquí abajo.

Música:

Agradecimientos a la EPS de Alicante, a los ing. técnicos de sonido y a Marisa por sus mensajes de error 😉

¿MATLAB? Yo uso Octave UPM de Israel Herraiz
Categorías
MATLAB Octave SciLab Simulink XCOS

Alternativas a MATLAB: Scilab

Scilab (http://es.wikipedia.org/wiki/Scilab) es un software gratuito de código abierto para programación numérica que proporciona un entorno para aplicaciones de ingeniería y científicas muy similar a MATLAB.

Reuniendo necesidades industriales y avances científicos, Scilab cubre una amplia gama de áreas, como la aeroespacial, industria energética, química, biología, medicina, finanzas, etc…

Es un lenguaje de programación matemática de alto nivel con acceso a cientos de funciones, estructuras de datos avanzadas y funciones gráficas en 2D y 3D.

Puedes descargar Scilab a través del siguiente enlace:

http://www.scilab.org/products/scilab/download

Además Scilab contiene Xcos, un editor gráfico para el diseño de modelos de sistemas dinámicos híbridos, e incluso funcionalidades GUI, desde donde crear interfaces gráficas para el usuario.

La nueva interfaz de Scilab 5.4.0 es muy similar a MATLAB

Si bien muchas funcionalidades siguen aún en desarrollo, la comunidad (open source) consigue acercarse poco a poco las posibilidades que ofrecen los diversos toolboxes de MATLAB. Scilab debe de considerarse como una alternativa libre y gratuita que complementa a MATLAB no que compite contra ella.

Por otro lado, GNU Octave (http://www.gnu.org/software/octave/)es otro programa para cálculo numérico que se presenta como alternativa comercial. La principal ventaja de Octave frente a Scilab es que el primero busca ser lo más compatible al lenguaje de MATLAB original por lo que los scripts suelen ser prácticamente compatibles.