[77] | 1 | #*------------------------------------------------------------------- |
---|
| 2 | * EMSO Model Library (EML) Copyright (C) 2004 - 2007 ALSOC. |
---|
[1] | 3 | * |
---|
[77] | 4 | * This LIBRARY is free software; you can distribute it and/or modify |
---|
| 5 | * it under the therms of the ALSOC FREE LICENSE as available at |
---|
| 6 | * http://www.enq.ufrgs.br/alsoc. |
---|
| 7 | * |
---|
| 8 | * EMSO Copyright (C) 2004 - 2007 ALSOC, original code |
---|
| 9 | * from http://www.rps.eng.br Copyright (C) 2002-2004. |
---|
| 10 | * All rights reserved. |
---|
| 11 | * |
---|
| 12 | * EMSO is distributed under the therms of the ALSOC LICENSE as |
---|
| 13 | * available at http://www.enq.ufrgs.br/alsoc. |
---|
| 14 | * |
---|
| 15 | *-------------------------------------------------------------------- |
---|
| 16 | * Model of cstr reactor |
---|
| 17 | *-------------------------------------------------------------------- |
---|
[1] | 18 | * Author: Paula B. Staudt |
---|
| 19 | * $Id: cstr.mso 378 2007-10-02 14:09:18Z bicca $ |
---|
| 20 | *--------------------------------------------------------------------*# |
---|
| 21 | |
---|
| 22 | using "streams"; |
---|
| 23 | |
---|
| 24 | Model cstr_basic |
---|
| 25 | |
---|
[169] | 26 | ATTRIBUTES |
---|
[276] | 27 | ATTRIBUTES |
---|
[169] | 28 | Pallete = false; |
---|
[276] | 29 | Brief = "Basic model for a CSTR reactor"; |
---|
[169] | 30 | |
---|
| 31 | PARAMETERS |
---|
[1] | 32 | |
---|
[169] | 33 | outer NComp as Integer (Brief = "Number Of Components"); |
---|
| 34 | NReac as Integer (Brief = "Number Of Reactions"); |
---|
| 35 | stoic(NComp, NReac) as Real (Brief = "Stoichiometric Matrix"); |
---|
| 36 | |
---|
| 37 | VARIABLES |
---|
| 38 | |
---|
[352] | 39 | in Inlet as stream (Brief="Inlet Stream", PosX=0, PosY=0, Symbol="_{in}"); |
---|
| 40 | out Outlet as streamPH (Brief="Outlet Stream", PosX=1, PosY=1, Symbol="_{out}"); |
---|
[169] | 41 | |
---|
| 42 | q as heat_rate (Brief="Heat"); |
---|
| 43 | Vr as volume (Brief="Reacting Volume"); |
---|
| 44 | M as mol (Brief = "Molar total amount"); |
---|
| 45 | C(NComp) as conc_mol (Brief="Components concentration"); |
---|
| 46 | |
---|
| 47 | EQUATIONS |
---|
| 48 | |
---|
[208] | 49 | "Molar Concentration" |
---|
[1] | 50 | Outlet.z * M = C * Vr; |
---|
[169] | 51 | |
---|
[208] | 52 | "Molar fraction" |
---|
| 53 | sum(Outlet.z) = 1; |
---|
[1] | 54 | end |
---|
| 55 | |
---|
| 56 | Model cstr_yield as cstr_basic |
---|
[169] | 57 | |
---|
| 58 | ATTRIBUTES |
---|
[276] | 59 | ATTRIBUTES |
---|
[169] | 60 | Pallete = true; |
---|
[302] | 61 | Icon = "icon/cstr"; |
---|
[276] | 62 | Brief = "Model of a CSTR with given yield"; |
---|
[1] | 63 | |
---|
[169] | 64 | PARAMETERS |
---|
| 65 | |
---|
| 66 | yield(NReac) as fraction (Brief="Yield"); |
---|
| 67 | |
---|
| 68 | EQUATIONS |
---|
| 69 | |
---|
[1] | 70 | Outlet.z*Outlet.F = Inlet.z*Inlet.F * sumt(stoic*(1-yield)); |
---|
[169] | 71 | |
---|
| 72 | "Reactor Energy Balance" |
---|
[1] | 73 | diff(M*Outlet.h) = Inlet.F*Inlet.h - Outlet.F*Outlet.h - q; |
---|
[169] | 74 | |
---|
[1] | 75 | end |
---|
| 76 | |
---|
| 77 | |
---|
| 78 | Model cstr as cstr_basic |
---|
| 79 | |
---|
[169] | 80 | ATTRIBUTES |
---|
[276] | 81 | ATTRIBUTES |
---|
[169] | 82 | Pallete = true; |
---|
[302] | 83 | Icon = "icon/cstr"; |
---|
[276] | 84 | Brief = "Model of a generic CSTR"; |
---|
| 85 | Info = " |
---|
[378] | 86 | Requires the information of: |
---|
| 87 | * Reaction values |
---|
| 88 | * Heat of reaction |
---|
| 89 | "; |
---|
[208] | 90 | |
---|
[169] | 91 | VARIABLES |
---|
| 92 | |
---|
| 93 | r(NReac) as reaction_mol (Brief="Molar Reaction Rate"); |
---|
| 94 | Hr(NReac) as heat_reaction (Brief="Heat Reaction"); |
---|
| 95 | |
---|
| 96 | EQUATIONS |
---|
| 97 | |
---|
| 98 | "Component Molar Balance" |
---|
[1] | 99 | diff(Outlet.z*M) = (Inlet.F*Inlet.z - Outlet.F*Outlet.z) + sumt(stoic*r)*Vr; |
---|
| 100 | |
---|
[169] | 101 | "Reactor Energy Balance" |
---|
[208] | 102 | diff(M*Outlet.h) = Inlet.F*Inlet.h - Outlet.F*Outlet.h +sum(Hr*sum(stoic*r))*Vr - q; #FIXME sum(sum()) |
---|
[169] | 103 | |
---|
[1] | 104 | end |
---|