Esercitazione 2 - Soluzioni

Documenti analoghi
Prof. Davide Manca Politecnico di Milano. Dinamica e Controllo dei Processi Chimici. Soluzione Esercitazione #1. Dinamica di sistemi

Esercitazione 11. Corso di Strumentazione e Controllo di impianti chimici. Prof. Davide Manca. Tutor: Adriana Savoca

Esercitazione 2 Esercizi con Equazioni Differenziali

Dinamica e Controllo dei Processi Energetici. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Esercitazione 2 Esercizi con Equazioni Differenziali

Tutorial. Introduzione a Matlab

Esercizi scalari. 10*10^6 + 3; (Usare la notazione esponenziale) coseno(30 ) - seno(pi greco/2) + pi greco /6 (0.3896)

Esercitazione 00 Introduzione a Matlab

Esercitazione 1 Sistemi e Equazioni Differenziali

Soluzione Ese 07 Gravity-flow tank

Esercitazione #0. Introduzione a MatLab

Progettazione del sistema di controllo

Esercitazioni di Analisi e Simulazione dei Processi Chimici

Metodi Numerici con Laboratorio di Informatica - A.A Esercizi Laboratorio n 4 - Metodo di Newton e Metodi di punto fisso

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Introduzione a Matlab

ESERCITAZIONE Implementare i metodi di Eulero, di Heun e di Runge-Kutta del quarto ordine per integrare il problema di Cauchy:

Principi di Programmazione Prova del 10/6/2008 (ore 10.30)

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Fondamenti di Dinamica di Processo. Davide Manca Strumentazione e Controllo di Impianti Chimici Politecnico di Milano

Elementi di Calcolo Scientifico per l Ingegneria A.A

Equazioni differenziali. Gabriella Puppo

8 Introduzione MATLAB

Traccia Esercitazione 2. Progettazione del reattore di un impianto HDA

Metodi numerici per la risoluzione di equazioni. Equazioni differenziali ordinarie

Metodi numerici con elementi di Programmazione A.A

8 Introduzione MATLAB

Identificazione di modello

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 12 - Sistemi di equazioni differenziali ordinarie

ESERCITAZIONE MATLAB

Lezione n.1 - Soluzioni

Prove d esame Esercizi con Matlab

1 LABORATORIO DI SEGNALI E SISTEMI: INTRODUZIONE A MATLAB. Tagliavini Alessia 30/04/2014

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

1 Integrazione numerica

Laboratorio di Sperimentazioni di Fisica I MOD A. 14 ottobre 2009

A. Introduzione a Matlab

Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici

Il metodo della "regula falsi" per l'azzeramento di equazioni non lineari prevede l'applicazione di una formula ricorsiva del tipo: ( )

Soluzione di equazioni differenziali ordinarie

MATLAB Elementi di grafica Costrutti di programmazione

Codifica-Decodifica DTMF

Esercitazione 1: Introduzione a MATLAB

Calcolo Numerico. Esercitazioni (A.A ) Lezione n. 16 Approssimazione

Equazioni differenziali con valori al bordo

Laboratorio di Matlab

METODO DI EULERO ESPLICITO

Sommario. Parte I: ODEs e functions del MATLAB. Parte II: PDEs e applicazione in un problema alle differenze finite

Tutorial di Matlab. Corso di Strumentazione e Controllo di impianti chimici. Prof. Davide Manca. PSE-Lab

Introduzione a Matlab Costruzione di Macchine 2 Prof. Sergio Baragetti

Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions

Analisi della Dinamica

Soluzione di Equazioni non lineari

Introduzione all ambiente MATLAB. Richiami II. Analisi Numerica - A.A. 2007/08

Metodi per l Analisi dei Dati : Progetto n 1

Soluzione Ese 12 Dimensionamento controllori con Cohen-Coon

Programmare con MATLAB c Parte 5 Cicli: for e while

Segnali e Sistemi Matlab. Laurea in Ingegneria dell Informazione Anno II, secondo semestre, A.A. 16/17

exp RT Scritto n. 6-02/05/2016 Esercizio 1 Reattore CSTR non isotermo Si consideri il sistema di reazione in serie/parallelo riportato di seguito.

Segnali e Sistemi Laboratorio Matlab

MATLAB - Programmazione - 2. Antonino Polimeno

Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici

Calcolo Numerico (A.A ) Lab n. 12 Approssimazione

Trasmissione del calore con applicazioni numeriche: informatica applicata a.a. 15/16

Cristian Secchi Pag. 1

MATLAB: soluzione di equazioni differenziali e fitting non lineare

Corso di Calcolo Numerico

8 Introduzione MATLAB

CONTROLLI AUTOMATICI INTRODUZIONE A MATLAB

Corso di Laurea in Ingegneria Energetica POLINOMI IN MATLAB. Bologna, 13 marzo Fondamenti di Informatica L a.a

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione

Disegnare nell intervallo [0, 1] con precisione 0.01 il grafico delle seguenti quattro funzioni

HOW TO ACQUIRE RESISTANCE VALUES OF THE PT100

Laboratorio di Calcolo Numerico Laboratorio 4: Functions. Soluzione di Equazioni non lineari

1. Calcolo dell indice di condizionamento di una matrice

Università degli Studi di Ferrara Corso di Laurea in Chimica - A.A

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

CONTROLLI AUTOMATICI INTRODUZIONE A MATLAB

MatLab - Testo pagina 1 di 5 101

ESERCIZI VI TARATURA DI SISTEMI INERZIALI

Introduzione a Matlab Parte 1

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot

Esercitazione 03 Risoluzione numerica di ODE

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

Informatica Applicata al Suono Tutorial Matlab

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Transcript:

Esercitazione 2 - Soluzioni Corso di Strumentazione e Controllo di impianti chimici Prof. Davide Manca Tutor: Adriana Savoca

2.1 Ese 2.1 Crescita della biomassa Un processo biologico condotto in un reattore batch è caratterizzato dalla crescita della biomassa (B) a scapito del substrato (S). I bilanci materiali per le due specie sono: db dt = k 1BS k 2 + S ds dt = k 3k 1 BS k 2 + S k 1 = 0.5 h 1 k 2 = 10 7 kmol/m 3 k 1 = 0.6 Ordine di grandezza molto diverso: potrebbe essere un problema stiff. Determinare la dinamica delle concentrazioni di B ed S. Azione suggerita: Usa un risolutore stiff, i.e. ode23s, ode15s [t,s] = ode23s(@sisdiff,tspan,c0); Risultato: La concentrazione diventa negativa. PSE- Corso di SECDIC Tutorial di Matlab

Integration error control Impostare dei valori troppo alti di tolleranza sull errore di integrazione può portare a risultati numerici non corretti. Per evitare che ciò accada è possibile settare valori diversi da quelli di default ( 10 3 per RelTol e 10 6 per AbsTol ). optionsode = odeset('reltol',1e-10,'abstol',1e-12); [t,s] = ode23s(@sisdiff,tspan,c0,optionsode); Valori di default: Nuovi valori settati con options:

Script function Biomassa % E 2.1 Questa function contiene il comando di risoluzione delle ODEs,i dati di input, e le istruzioni per il grafico clc % cancello quello che c è scritto sulla Command Window clear all % cancello le variabili salvate nel Workspace close all % Chiudo le figure aperte global k1 k2 k3 % Passo i valori da questa function a quella che contiene il sistema ODE % Dati input k1 = 0.5; %[h^-1] k2 = 1e-7;% [kmol/m3] k3 = 0.6; % [-] c0 = [1 1]; % [kmol/m3] Valori iniziali per la biomassa e il substrato tspan = [0 15]; %[h] intervallo di integrazione % Comando optionsode = odeset('reltol',1e-10,'abstol',1e-14); [t,s] = ode23s(@sisdiff,tspan,c0,optionsode); B = s(:,1); % Concentrazione biomassa, prima colonna di s S = s(:,2); % Concentrazione substrato, seconda colonna di s % Grafico figure(1) hold on % Voglio rappresentare più grafici nella stessa figura plot(t,b,'b','linewidth',1.3) % grafico profilo di concentrazione di B plot(t,s,'r','linewidth',1.3) % grafico profilo di concentrazione di S xlabel('time [h]','fontsize',16) % Rinomino l'asse x ylabel('concentration [kmol/m3]','fontsize',16) % Rinomino l'asse y title('biomass vs Substrate evolution','fontsize',16) % Dò un titolo alla figura legend('biomass','substrate') % Definisco la legenda end % Chiudo la function PSE- Corso di SECDIC Tutorial di Matlab

Script Output = Valore della derivata function ds = SisDiff(t,y) % Contiene il sistema di equazioni differenziali global k1 k2 k3 % Passo il valore delle costanti dalla function principale % Ridefinisco i nomi delle incognite (per comodità) B = y(1); S = y(2); ds(1,:) = (k1*b*s)/(k2 + S); % bilancio Biomassa ds(2,:) = - k3* (k1*b*s)/(k2+s); % bilancio Substrato end % Chiudo la function La ODE è funzione del tempo t e dell incognita y NB. La function Biomassa e la function SisDiff fanno parte dello stesso script. È possibile scriverle in due script separati a patto che questi si trovino nella stessa cartella e i nomi delle function corrispondano ai nomi con cui sono salvati i file. PSE- Corso di SECDIC Tutorial di Matlab

2.2 Ese 2.2 Variazione della temperatura in un serbatoio Si consideri un serbatoio di accumulo intermedio perfettamente miscelato (CST) e riscaldato. Valutare la dinamica della temperatura in uscita qualora si abbia un disturbo a gradino (supponiamo a t = 150 s) di 30 C sulla temperatura in ingresso. ሶ Q = 1 MW F in = F out = 8 kmol/s m = 1000 kmol dm dt = F in F out = 0 dh dt = ሶ H in ሶ H out + ሶ Q T in = 300 K c p = 2.5 kj kmol K dm dt = F in F out = 0 mdh dt + hdm dt = ሶ H in ሶ H out + ሶ Q Il bilancio entalpico finale ci permette di valutare la dinamica della temperatura in uscita: m c p dt dt = F in c p T in F out c P T + ሶ Q PSE- Corso di SECDIC Tutorial di Matlab

HOW TO Ese 2.2 Variazione della temperatura in un serbatoio Si consideri un serbatoio di accumulo intermedio perfettamente miscelato (CST) e riscaldato. Valutare la dinamica della temperatura in uscita qualora si abbia un disturbo a gradino (supponiamo a t = 150 s) di 30 C sulla temperatura in ingresso. ሶ Q = 1 MW F in = F out = 8 kmol/s m = 1000 kmol T in = 300 K c p = 2.5 kj kmol K Il bilancio entalpico finale ci permette di valutare la dinamica della temperatura in uscita: m c p dt dt = F in c p T in F out c P T + ሶ Q Azione suggerita: Usa il ciclo if per implementare il disturbo a gradino. PSE- Corso di SECDIC Tutorial di Matlab

Script function dt = dinamicat(t,t) % Contiene l equazione ODE global Q Fin Fout n cp T0 % Passo il valore dalla funciton principale if t < 150 Tin = 300; % La temperatura vale 300 fino al momento in cui ho il disturbo a gradino elseif t >= 150 Tin = T0 + 30; % La temperatura vale 330 dal momento in cui ho il disturbo End % Chiudo il ciclo if dt(1,:) = (Fin*cp*Tin - Fout*cp*T + Q)/(n*cp); Implemento un ciclo if end % Chiudo la function PSE- Corso di SECDIC Tutorial di Matlab

Script function SerbatoioRiscaldato % E 2.2 % function Main: contiene i dati di input, il comando per la risoluzione della ODE e le istruzioni per i grafici clc clear all close all global Q Fin Fout n cp T0 % Passo i valori da una function all'altra % Dati input Q = 1e3; % kw Fin = 8; % kmol/s; Fout = Fin; n = 100; % kmol cp = 2.5; % kj/kmol K T0 = 300; % K % Comando optionsode = odeset ('RelTol',1e-8,'AbsTol',1e-10); [t,tout] = ode15s(@dinamicat,[0 300],T0,optionsODE); % continua nella prossima diapositiva PSE- Corso di SECDIC Tutorial di Matlab

Script % Grafico 1 : dinamica della T in uscita figure(1) subplot(2,1,1) % vedi diapositiva 11 plot(t,tout,'b','linewidth',1.3) % grafico profilo della T in uscita xlabel('time [s]','fontsize',18) % Rinomino l'asse x ylabel('tout [K]','FontSize',18) % Rinomino l'asse y title('temperature dynamics in a vessel','fontsize',18) % Dò un titolo alla figura ylim([300 390]) % Limiti asse y % Costruisco il vettore T in ingresso per graficarlo index = find(t >= 150); % La funzione find permette di trovare gli indici che corrispondono al vettore tempo dal momento in cui ho il disturbo a gradino. % Grafico 2 : dinamica della T in ingresso subplot(2,1,2) for i = 1:length(t) % Il ciclo for mi permette di creare un vettore T_feed della stessa lunghezza di t if i < index(1) % La Tin vale 300 fino al momento in cui ho il disturbo a gradino (150 s) T_feed(i) = 300; else % La Tin vale 330 dal momento in cui ho il disturbo a gradino (150 s) T_feed(i) = 330; end % chiudo il ciclo if end % chiudo il ciclo for plot(t,t_feed,'r','linewidth',1.3) title('inlet temperature profile','fontsize',18) xlabel('time [s]','fontsize',18) ylabel('tin [K]','FontSize',18) end % chiudo la function SerbatoioRiscaldato PSE- Corso di SECDIC Tutorial di Matlab

Soluzione subplot(n,m,p) n righe m colonne p posizione Questo comando mi permette di incolonnare o mettere nella stessa riga più grafici nella stessa figura, come si vede sotto. Colonna 1 Riga 1 Posizione 1 Riga 2 Posizione 2 PSE- Corso di SECDIC Tutorial di Matlab

2.3 Ese 2.3 Miscelazione di due correnti Si consideri la miscelazione di due correnti a differente concentrazione dello stesso composto. Si determini la dinamica della concentrazione in uscita. F 1 t = 0 = 2 kmol/m 3 F 2 = 10 kmol/m 3 V = 0,5 m 3 F 1 t = 2 + 0.04t kmol/m 3 F 1,max = 20kmol/m 3 Per risolvere scriviamo il seguente bilancio, che descrive la dinamica della concentrazione in uscita: VdC 3 dt = F 1 (t)c 1 + F 2 C 2 F 3 C 3 C 30 = (F 1 t = 0 C 1 + F 2 C 2 ) F 3 Azione suggerita: Usa l operatore min per limitare la portata di F1. PSE- Corso di SECDIC Tutorial di Matlab

Script function dc = DynamicConc(t,C3) % Contiene l equazione ODE global F2 C1 C2 V F1 = 2 + 0.04*t; % La portata F1 varia con il tempo F1_max = 20; % Definisco il valore massimo F1 = min(f1,f1_max); % F1 ha il valore più piccolo tra 20 e il risultato dell espressione dipendente dal tempo F3 = F1 + F2; dc(1,:) = (F1*C1+F2*C2-F3*C3)/V; end PSE- Corso di SECDIC Tutorial di Matlab

Script function Mixing % ESE 2.3 Contiene il commando di risoluzione dell equazione ODE, I dati di input e le istruzioni per i grafici clc clear all close all global F2 C1 C2 V % Dati input F10 = 2; %m3/h F2 = 10; %m3/h C1 = 0.5; % kmol/m3 C2 = 6; %kmol/m3 V = 0.5; %m3 F3 = F10 + F2; tspan = [0 600]; % intervallo di integrazione c30 = (F10*C1 + F2* C2)/F3; % condizione iniziale % Comando optionsode = odeset ('RelTol',1e-8,'AbsTol',1e-12); [t,c3] = ode23s(@dynamicconc,tspan,c30,optionsode); % continua nella prossima diapositiva PSE- Corso di SECDIC Tutorial di Matlab

Script figure(1) subplot(2,1,1) % Grafico della dinamica della concentrazione alla posizione 1 plot(t,c3,'b','linewidth',1.3) title('dynamics of the concentration','fontsize',12) xlabel('time [h]','fontsize',12) ylabel('concentration [kmol/m3]','fontsize',12) F1dyn_max = 20; F1dyn = 2 + 0.04*t; % noto t, posso costruire il vettore F1 F1dyn = min(f1dyn,f1dyn_max); % limito F1 subplot(2,1,2) plot(t,f1dyn,'r','linewidth',1.3) % Grafico della dinamica della portata in ingresso alla posizione 2 title('dynamics of the inlet flow','fontsize',12) xlabel('time [h]','fontsize',12) ylabel('f1 [kmol/h]','fontsize',12) end PSE- Corso di SECDIC Tutorial di Matlab

Soluzione Limite portata massima su F1 PSE- Corso di SECDIC Tutorial di Matlab

2.4 Ese 2.4 Sensitività di reazione in un serbatoio di stoccaggio In un serbatoio di stoccaggio avviene una reazione indesiderata. La variazione di conversione (z ) e la temperatura (θ) possono essere descritte mediante le seguenti correlazioni: dz dt = Ψ B 1 z n h(θ) dθ dt = Ψ 1 z n h θ θ C. I. z 0 = 0 C. I. θ 0 = 1 h θ = exp θ 1 + εθ In tali relazioni, B rappresenta il calore di reazione; n l ordine di reazione; il rapporto tra il calore di reazione e il calore asportato per scambio termico; rappresenta l energia di attivazione della reazione; h il termine esponenziale della cinetica di reazione. Tutte le variabili sono opportunamente adimensionalizzate. Si valuti la dinamica di temperatura al variare del parametro tra 0.35 e 0.65. n = 1 β = 20 ε = 0,05 PSE- Corso di SECDIC Tutorial di Matlab

2.4 Ese 2.4 Sensitività di reazione in un serbatoio di stoccaggio In un serbatoio di stoccaggio avviene una reazione indesiderata. La variazione di conversione (z ) e la temperatura (θ) possono essere descritte mediante le seguenti correlazioni: dz dt = Ψ B 1 z n h(θ) dθ dt = Ψ 1 z n h θ θ C. I. z 0 = 0 C. I. θ 0 = 1 h θ = exp θ 1 + εθ Azione suggerita: Usa un ciclo for per valutare la dinamica di temperatura e concentrazione a diversi valori di Ψ compresi tra 0.35 e 0.65. PSE- Corso di SECDIC Tutorial di Matlab

Script function ReazioneInSerbatoio % E 2.4 Contiene I dati di input, il comando delle ODEs e le istruzioni per I grafici clc clear all close all global Psi n B epsi % Dati input n = 1; B = 20; epsi = 0.05; c0 =[0 1]; tspan = [0 100]; Il comando ode e i grafici si trovano all interno del ciclo for % Comando for Psi = 0.35:0.05:0.65 optionsode = odeset ('RelTol',1e-8,'AbsTol',1e-12); [t,z] = ode23s(@sistemadiff,tspan,c0,optionsode); % continua nella diapositiva successiva PSE- Corso di SECDIC Tutorial di Matlab

Script % Istruzioni grafici figure (1) % Grafico dell andamento della conversione hold on plot (t,z(:,1),'linewidth',1.3); title ('andamento conversione','fontsize',18) xlabel ('Time','Fontsize',18) ylabel ('Conversion','Fontsize',18) xlim([0 30]) % Limiti asse x figure (2) % Grafico dell andamento della temperatura hold on plot (t,z(:,2),'linewidth',1.3); title ('andamento Temperatura','Fontsize',18) xlabel ('Time','Fontsize',18) ylabel ('Temperature','Fontsize',18) xlim([0 30]) end % Chiudo il ciclo for end % Chiudo la function PSE- Corso di SECDIC Tutorial di Matlab

Script function dz = SistemaDiff(t,z) % Contiene il Sistema ODE global Psi n B epsi X = z(1); % conversione T = z(2); % temperatura h = exp(t/(1+(epsi*t))); dz(1,:) = Psi/B*((1-X)^n)*h; dz(2,:) = Psi*((1-X)^n)*h - T; end % Chiudo la function PSE- Corso di SECDIC Tutorial di Matlab

Soluzione NB. La freccia indica il verso dell aumento di Ψ. La reazione indesiderata è infatti favorita dall aumento di temperatura PSE- Corso di SECDIC Tutorial di Matlab