340 likes | 544 Views
Berkeley Madonna: istruzioni per l ’ uso. Prof. Eugenio Parente SSAFAA- Università della Basilicata. In questa presentazione:. introduzione all ’ uso di Berkeley Madonna per la modellazione dinamica le finestre di Madonna la sintassi delle equazioni
E N D
Berkeley Madonna: istruzioni per l’uso Prof. Eugenio Parente SSAFAA- Università della Basilicata
In questa presentazione: • introduzione all’uso di Berkeley Madonna per la modellazione dinamica • le finestre di Madonna • la sintassi delle equazioni • convertitori o formule: built-in in Madonna • flussi: equazioni differenziali, equazioni a differenze finite, elementi discreti • vettori e matrici
un commento un’equazione differenziale e un inizializzatore convertitori (formule) Berkeley Madonna: la finestra delle equazioni
Introduzione all’uso Per apprendere i primi elementi dell’uso di Berkeley Madonna apri il modello “5 minutes tutorial” dall’aiuto e esegui gli esercizi
Sintassi delle equazioni in Madonna. 1. Tipi di equazioni Convertitori e formule Flussi e serbatoi: equazioni differenziali equazioni a differenze finite equazioni ad elementi discreti Calcolo iterativo delle soluzioni di equazioni o sistemi di equazioni (ROOTI e ROOT) Miscellanea
Sintassi delle equazioni in Madonna. 2. Convertitori o formule Esempi: A=B*C B=10 C=125 A=if B>9 then B*C else 0.001 B=10*TIME C=125 A=normal(B,C)
Sintassi delle equazioni in Madonna. 3. Equazioni differenziali ed equazioni a differenze finite Sono composte da due equazioni: un inizializzatore, che attribuisce il valore iniziale allo stock o serbatoio, e un flusso (integratore), che modifica il valore del serbatoio ad ogni passaggio di integrazione. Il metodo usato per l’integrazione, il tempo iniziale e finale, il passo di integrazione sono definiti dalle istruzioni: METHOD, STARTTIME, STOPTIME. DT (usate in Euler, RK2 e RK4) DTMIN, DTMAX e TOL (usate nei metodi con DT variabile)
Sintassi delle equazioni in Madonna. 3. Equazioni differenziali ed equazioni a differenze finite Gli inizializzatori possono avere le seguenti forme: X(STARTTIME)=... INIT X=... INIT (X)=... Il valore dell’espressione sulla destra viene inserito nell’icona del serbatoio se si usa il flowchart editor.
Sintassi delle equazioni in Madonna. 3. Equazioni differenziali ed equazioni a differenze finite Le equazioni differenziali possono avere le seguenti forme: d/dt(X)=... X’=... FLOW X=... X(t)=X(t-dt)+(...)*dt X=X+dt*(...) Il valore dell’espressione sulla destra viene inserito nell’icona del FLUSSO se si usa il flowchart editor.
Sintassi delle equazioni in Madonna. 4. elementi discreti • Berkeley Madonna 8 introduce tre tipi di elementi discreti presenti in STELLA: • nastri trasportatori (conveyor) • forni (oven) • code (queue) • Il loro funzionamento è notevolmente diverso da quello delle equazioni differenziali e dalle equazioni a differenze finite. Gli elementi discreti accumulano input, li trattengono per un ceerto periodo di tempo e poi li rilasciano. • Il loro valore viene calcolato ad ogni passaggio di integrazione moltiplicando la somma di tutti gli input per DT.
Sintassi delle equazioni in Madonna. 4. elementi discreti Nastri trasportatori (conveyors). Ad ogni passaggio del modello un input viene aggiunto sul nastro trasportatore. L’input rimane sul nastro trasportatore per la durata del tempo di transito e poi viene rilasciato. La sintassi è: name=CONVEYOR(input,tt,cap) dove input è l’espressione di input, tt il tempo di transito, cap è la capacità (opzionale). La somma degli input che escono dal conveyor è: output=OUTFLOW(name) La capacità può essere limitata definendo: input=... limited_input=MIN(input,MAXINFLOW(name)) name=CONVEYOR(limited_input,tt,cap)
Sintassi delle equazioni in Madonna. 4. elementi discreti Forni (ovens). Il forno si riempie durante il “fill time”, poi passa alla cottura per la durata del “cook time” e rilascia gli input istantaneamente nella fase di svuotamento, per poi ritornare in riposo (idle) o cominciare a riempirsi se sono disponibili input. La sintassi è: name=OVEN(input,ct,ft,cap) dove input è l’espressione di input, ct il tempo di cottura, ft il tempo di riempimento, cap è la capacità (opzionale). La somma degli input che escono dal forno nella fase di svuotamento (che dura un solo passaggio) è: output=OUTFLOW(name)
Sintassi delle equazioni in Madonna. 4. elementi discreti Forni (ovens). Lo stato del forno può essere determinato con la funzione: state=OSTATE(name) che restituisce 0 per idle, 1 per filling, 2 per cooking e 3 per emptying La capacità può essere limitata definendo: input=... limited_input=MIN(input,MAXINFLOW(name)) name=OVEN(limited_input,ct,ft,cap) Questa procedura è necessaria soprattutto se il forno è alimentato da uno stock che non deve continuare a svuotarsi a meno che il forno non si stia riempiendo. Fai girare il modello Use Ovens per comprendere il funzionamento di un forno.
Sintassi delle equazioni in Madonna. 4. elementi discreti Code (queues). Una coda accetta uno o più input il cui valore sia diverso da 0 e li rilascia nell’ordine in cui li ha accettati. L’uscita degli elementi dalla coda è controllata da una funzione. La sintassi è: name=QUEUE(input1,input2,...,inputN) ad ogni intervallo di tempo la coda controlla i suoi input e, se sono diversi da 0 li mette in coda. Per far uscire gli input dalla coda si usano le funzioni: output=QPOP(name,maxel,maxamt) output=QPOPS(name,maxel,maxamt) dove name è il nome della coda. QPOP rimuove dalla coda solo elementi interi. Vengono rimossi elementi finchè il loro numero è inferiore a maxel e la loro somma è inferiore a maxamt.
Sintassi delle equazioni in Madonna. 4. elementi discreti Code (queues). output=QPOPS(name,maxel,maxamt) A differenza di QPOP, QPOPS rimuove dalla coda anche parti di elementi. Vengono rimossi elementi finchè il loro numero è inferiore a maxel e la loro somma è inferiore a maxamt. Se solo una parte di un elemento viene sottratto da QPOPS la parte restante rimane sulla coda. A differenza dei nastri trasportatori e dei forni, gli elementi possono essere rimossi dalla coda anche nello stesso intervallo di tempo in cui sono stati aggiunti. Se una coda alimenta un forno bisogna usare la funzione MAXINFLOW del forno per impedire che elementi escano dalla coda se il forno non si sta riempiendo. Fai girare il modello Use Queues per capire il funzionamento delle code.
Vettori e matrici Vettori e matrici (fino a tre dimensioni) sono utili quando in un convertitore o in un flusso compaiono equazioni con espressioni identiche sul lato destro. Per esempio: rX[1..10]=mu[1..10]*x[1..10] può essere utilizzato per definire contemporaneamente la crescita di 10 diversi batteri, i cui valori di popolazione (x) e velocità specifica di crescita (mu) sono diversi. Gli elementi di una matrice possono essere definiti con equazioni diverse: rX[1..3]=mumax[1..3]*(1-x[1..3]/xmax[1..3])*x[1..3] rX[4..10]=mumax[4..10]*(S/(KS[4..10]+S)*x[4..10]
Vettori e matrici E’ inoltre possibile riferirsi agli elementi da assegnare utilizzando le variabili speciali i, j, k, che si riferiscono rispettivamente agli indici della prima, seconda e terza dimensione della matrice: s[1..3,1..4,5]=f[i,j]*g[j,k]. Gli elementi vengono assegnati nel seguente ordine: a[1..2,1..2]= a[1,1] a[1,2] a[2.1] a[2,2] L’ordine è estremamente importante: se un elemento usato in un assegnazione non è definito il programma restituisce un errore.
Vettori e matrici Nella definizione degli indici è possibile usare delle variabili. Ciò consente di variare la dimensione di una matrice senza ricompilare il modello: factorial[1]=1 factorial[2..n]=factorial[i-1]*i n=10 Per comprendere il funzionamento delle matrici in Madonna fai girare il modello Use Indexed Variables.
Some rights reserved Questa presentazione è stata creata da Eugenio Parente, 2007 e modificata nel 2012. Il materiale è coperto da licenza Creative Commons Public License “Attribuzione - Non commerciale - Condividi allo stesso modo” (http://creativecommons.org/licenses/by-nc-sa/3.0/it/deed.it).