[509] | 1 | |
---|
| 2 | using "WasteWaterUnits"; |
---|
| 3 | |
---|
| 4 | Model FlowConnector |
---|
| 5 | |
---|
| 6 | ATTRIBUTES |
---|
| 7 | Pallete = false; |
---|
| 8 | Brief = "Stream connector of ASM1 components"; |
---|
| 9 | Info = |
---|
| 10 | " |
---|
| 11 | The stream connector consists of one flow variable and 13 potential variables (ASM1 concentrations). |
---|
| 12 | "; |
---|
| 13 | |
---|
| 14 | VARIABLES |
---|
| 15 | |
---|
| 16 | Q as VolumeFlowRate (Brief="Volumetric Flow Rate", Symbol = "Q"); |
---|
| 17 | Si as MassConcentration (Brief="Soluble inert organic matter", Symbol = "S_i"); |
---|
| 18 | Ss as MassConcentration (Brief="Readily biodegradable substrate", Symbol = "S_s"); |
---|
| 19 | Xi as MassConcentration (Brief="Particulate inert organic matter", Symbol = "X_i"); |
---|
| 20 | Xs as MassConcentration (Brief="Slowly biodegradable substrate", Symbol = "X_s"); |
---|
| 21 | Xbh as MassConcentration (Brief="Active heterotrophic biomass", Symbol = "X_{bh}"); |
---|
| 22 | Xba as MassConcentration (Brief= "Active autotrophic biomass", Symbol = "X_{ba}"); |
---|
| 23 | Xp as MassConcentration (Brief="Particulate products from biomass decay", Symbol = "X_p"); |
---|
| 24 | So as MassConcentration (Brief="Dissolved oxygen", Symbol = "S_o"); |
---|
| 25 | Sno as MassConcentration (Brief="Nitrate and nitrite nitrogen", Symbol = "S_{no}"); |
---|
| 26 | Snh as MassConcentration (Brief="Ammonium nitrogen", Symbol = "S_{nh}"); |
---|
| 27 | Snd as MassConcentration (Brief="Soluble biodegradable organic nitrogen", Symbol = "S_{nd}"); |
---|
| 28 | Xnd as MassConcentration (Brief="Particulate biodegradable organic nitrogen", Symbol = "X_{nd}"); |
---|
| 29 | Salk as Alkalinity (Brief="Alkalinity", Symbol = "S_{alk}"); |
---|
| 30 | |
---|
| 31 | end |
---|
| 32 | |
---|
| 33 | Model AirFlow |
---|
| 34 | |
---|
| 35 | ATTRIBUTES |
---|
| 36 | Pallete = false; |
---|
| 37 | Brief = "Airflow connector."; |
---|
| 38 | Info = |
---|
| 39 | " |
---|
| 40 | The Airflow connector consists of a flow variable describing the exchange of |
---|
| 41 | air between blower and nitrification tank. |
---|
| 42 | "; |
---|
| 43 | |
---|
| 44 | VARIABLES |
---|
| 45 | |
---|
| 46 | Q_air as VolumeFlowRate (Brief="Volumetric Flow Rate of Air", Symbol = "Q_{air}"); |
---|
| 47 | |
---|
| 48 | end |
---|
| 49 | |
---|
| 50 | Model Stoichiometry |
---|
| 51 | |
---|
| 52 | ATTRIBUTES |
---|
| 53 | Pallete = false; |
---|
| 54 | Brief = "ASM1 stoichiometric coefficients"; |
---|
| 55 | Info = |
---|
| 56 | "This is a partial model providing the stoichiometric coefficients of the ASM1 model. |
---|
| 57 | "; |
---|
| 58 | |
---|
| 59 | PARAMETERS |
---|
| 60 | |
---|
| 61 | Y_h as Real (Brief = "Heterotrophic Yield [g Xbh COD formed/(g COD utilised)]", Symbol = "Y_h"); |
---|
| 62 | Y_a as Real (Brief = "Autotrophic Yield [g Xba COD formed/(g N utilised)]", Symbol = "Y_a"); |
---|
| 63 | f_p as Real (Brief = "Fraction of biomass to particulate products [-]", Symbol = "f_p"); |
---|
| 64 | i_xb as Real (Brief = "Fraction nitrogen in biomass [g N/(g COD)]", Symbol = "Y_{xb}"); |
---|
| 65 | i_xp as Real (Brief = "Fraction nitrogen in particulate products [g N/(g COD)]", Symbol = "Y_{xp}"); |
---|
| 66 | |
---|
| 67 | SET |
---|
| 68 | |
---|
| 69 | Y_h = 0.67 ; |
---|
| 70 | Y_a = 0.24 ; |
---|
| 71 | f_p = 0.08 ; |
---|
| 72 | i_xb = 0.086; |
---|
| 73 | i_xp = 0.06 ; |
---|
| 74 | |
---|
| 75 | end |
---|
| 76 | |
---|
| 77 | Model ASM1base as Stoichiometry |
---|
| 78 | |
---|
| 79 | ATTRIBUTES |
---|
| 80 | Pallete = false; |
---|
| 81 | Brief = "Base class of WWTP modelling by ASM1."; |
---|
| 82 | Info = |
---|
| 83 | " |
---|
| 84 | This partial model provides connectors and equations that are needed in the biological |
---|
| 85 | components (nitrification and denitrification tank) for ASM1 wastewater treatment plant models. |
---|
| 86 | Parameters are coded according the ASM1 standard distribution. |
---|
| 87 | Changes to this parameters are subject to the modeller. |
---|
| 88 | "; |
---|
| 89 | |
---|
| 90 | VARIABLES |
---|
| 91 | mu_h as decayRate (Brief = "Maximum heterotrophic growth rate f(T)", Symbol = "\mu _{h}"); |
---|
| 92 | b_h as decayRate (Brief = "Heterotrophic decay rate f(T)", Symbol = "b_h"); |
---|
| 93 | mu_a as decayRate (Brief = "Maximum autotrophic growth rate f(T)", Symbol = "\mu _a"); |
---|
| 94 | b_a as decayRate (Brief = "Autotrophic decay rate f(T)", Symbol = "b_a"); |
---|
| 95 | k_a as Real (Brief = "Ammonification rate f(T)", Symbol = "k_a", Unit = 'm^3/g/d'); |
---|
| 96 | k_h as Real (Brief = "Maximum specific hydrolysis rate f(T)", Symbol = "k_h"); |
---|
| 97 | K_x as Real (Brief = "Half-saturation (hydrolysis) f(T)", Symbol = "K_x"); |
---|
| 98 | |
---|
| 99 | PARAMETERS |
---|
| 100 | |
---|
| 101 | mu_h_T as decayRate (Brief = "Maximum heterotrophic growth rate at T=15 deg C "); |
---|
| 102 | b_h_T as decayRate (Brief = "Heterotrophic decay rate at T=15 deg C"); |
---|
| 103 | mu_a_T as decayRate (Brief = "Maximum autotrophic growth rate at T=15 deg C"); |
---|
| 104 | b_a_T as decayRate (Brief = "Autotrophic decay rate at T=15 deg C"); |
---|
| 105 | k_a_T as Real (Brief = "Ammonification rate at T=15 deg C ", Unit = 'm^3/g/d'); |
---|
| 106 | k_h_T as Real (Brief = "Maximum specific hydrolysis rate at T=15 deg C"); |
---|
| 107 | K_x_T as Real (Brief = "Half-saturation (hydrolysis) at T=15 deg C "); |
---|
| 108 | |
---|
| 109 | K_nh as MassConcentration (Brief = "Half-saturation (auto. growth)", Symbol = "K_{nh}"); |
---|
| 110 | K_s as MassConcentration (Brief = "Half-saturation (hetero. growth)", Symbol = "K_{s}"); |
---|
| 111 | K_oh as MassConcentration (Brief = "Half-saturation (hetero. oxygen)", Symbol = "K_{oh}", DisplayUnit = 'g/m^3'); |
---|
| 112 | K_no as MassConcentration (Brief = "Half-saturation (nitrate)", Symbol = "K_{no}", DisplayUnit = 'g/m^3'); |
---|
| 113 | K_oa as MassConcentration (Brief = "Half-saturation (auto. oxygen)", Symbol = "K_{oa}"); |
---|
| 114 | ny_g as Real (Brief = "Anoxic growth rate correction factor ", Symbol = "{ny}_g"); |
---|
| 115 | ny_h as Real (Brief = "Anoxic hydrolysis rate correction factor", Symbol = "{ny}_h"); |
---|
| 116 | |
---|
| 117 | SET |
---|
| 118 | |
---|
| 119 | mu_h_T = 4.00 *'1/d'; |
---|
| 120 | b_h_T = 0.28 *'1/d'; |
---|
| 121 | mu_a_T = 0.50 *'1/d'; |
---|
| 122 | b_a_T = 0.10 *'1/d'; |
---|
| 123 | k_a_T = 0.06 * 'm^3/g/d'; |
---|
| 124 | k_h_T = 1.75; |
---|
| 125 | K_x_T = 0.0175 ; |
---|
| 126 | K_nh = 1.00 * 'g/m^3'; |
---|
| 127 | K_s = 20.0 * 'g/m^3'; |
---|
| 128 | K_oh = 0.20 * 'g/m^3'; |
---|
| 129 | K_no = 0.50 * 'g/m^3'; |
---|
| 130 | K_oa = 0.40 * 'g/m^3'; |
---|
| 131 | ny_g = 0.8 ; |
---|
| 132 | ny_h = 0.4; |
---|
| 133 | |
---|
| 134 | end |
---|
| 135 | |
---|
| 136 | Model DeniTank as ASM1base |
---|
| 137 | |
---|
| 138 | ATTRIBUTES |
---|
| 139 | Pallete = true; |
---|
| 140 | Icon = "icon/deni"; |
---|
| 141 | Brief = "ASM1 denitrification tank."; |
---|
| 142 | Info = |
---|
| 143 | " |
---|
| 144 | This component models the ASM1 processes and reactions taking place in an unaerated |
---|
| 145 | (denitrification) tank of a wastewater treatment plant. |
---|
| 146 | "; |
---|
| 147 | |
---|
| 148 | PARAMETERS |
---|
| 149 | |
---|
| 150 | V as volume (Brief = "Volume of denitrification tank"); |
---|
| 151 | Tref as temperature (Brief = "Temperature dependent Kinetic parameters based on 15 deg C"); |
---|
| 152 | Tscale as temperature (Brief = "adimensional temperatura"); |
---|
| 153 | eps as MassConcentration (Brief = "adimensional temperatura"); |
---|
| 154 | |
---|
| 155 | Nrates as Integer; |
---|
| 156 | Nprocess as Integer; |
---|
| 157 | |
---|
| 158 | SET |
---|
| 159 | |
---|
| 160 | V = 1000 * 'm^3'; |
---|
| 161 | Tref = (15+273)*'K'; |
---|
| 162 | Tscale = 1*'K'; |
---|
| 163 | Nrates = 13; |
---|
| 164 | Nprocess = 8; |
---|
| 165 | eps = 1e-10*'g/l'; |
---|
| 166 | |
---|
| 167 | VARIABLES |
---|
| 168 | |
---|
| 169 | in Inlet as FlowConnector (Brief = "Tank Inlet Stream", PosX=0, PosY=0.28, Symbol = "^{in}"); |
---|
| 170 | out Outlet as FlowConnector (Brief = "Tank Outlet Stream", PosX=1, PosY=0.3, Symbol = "^{out}"); |
---|
| 171 | |
---|
| 172 | VARIABLES |
---|
| 173 | |
---|
| 174 | T as temperature; |
---|
| 175 | ProcessRates(Nprocess) as ReacRate (Brief = "Process Rates"); |
---|
| 176 | Reactions(Nrates) as ReacRate (Brief = "Reactions Rates"); |
---|
| 177 | aeration as ReacRate; |
---|
| 178 | |
---|
| 179 | EQUATIONS |
---|
| 180 | |
---|
| 181 | mu_h = mu_h_T*exp(0.069*(T- Tref)/Tscale); |
---|
| 182 | |
---|
| 183 | b_h = b_h_T*exp(0.069*(T- Tref)/Tscale); |
---|
| 184 | |
---|
| 185 | mu_a = mu_a_T*exp(0.098*(T- Tref)/Tscale); |
---|
| 186 | |
---|
| 187 | b_a = b_a_T*exp(0.08*(T- Tref)/Tscale); |
---|
| 188 | |
---|
| 189 | k_a = k_a_T*exp(0.069*(T- Tref)/Tscale); |
---|
| 190 | |
---|
| 191 | k_h = k_h_T*exp(0.11*(T- Tref)/Tscale); |
---|
| 192 | |
---|
| 193 | K_x = K_x_T*exp(0.11*(T- Tref)/Tscale); |
---|
| 194 | |
---|
| 195 | #+++++++++++++++ Process Rates ++++++++++++++++++++++++++++++++++++++ |
---|
| 196 | ProcessRates(1) = mu_h*(Outlet.Ss/(K_s + Outlet.Ss+eps))*(Outlet.So/(K_oh + Outlet.So+eps))*Outlet.Xbh; |
---|
| 197 | ProcessRates(2) = mu_h*(Outlet.Ss/(K_s + Outlet.Ss+eps))*(K_oh/(K_oh + Outlet.So+eps))*(Outlet.Sno/(K_no + Outlet.Sno+eps))*ny_g*Outlet.Xbh; |
---|
| 198 | ProcessRates(3) = mu_a*(Outlet.Snh/(K_nh + Outlet.Snh+eps))*(Outlet.So/(K_oa + Outlet.So+eps))*Outlet.Xba; |
---|
| 199 | ProcessRates(4) = b_h*Outlet.Xbh; |
---|
| 200 | ProcessRates(5) = b_a*Outlet.Xba; |
---|
| 201 | ProcessRates(6) = k_a*Outlet.Snd*Outlet.Xbh; |
---|
| 202 | ProcessRates(7) = k_h*((Outlet.Xs/(Outlet.Xbh+eps))/(K_x + (Outlet.Xs/(Outlet.Xbh+eps)))*((Outlet.So/(K_oh + Outlet.So+eps)) + ny_h*(K_oh/(K_oh + Outlet.So+eps))*(Outlet.Sno/(K_no +Outlet.Sno+eps))))*Outlet.Xbh; |
---|
| 203 | ProcessRates(8) = ProcessRates(7)*Outlet.Xnd/(Outlet.Xs+eps); |
---|
| 204 | |
---|
| 205 | # biochemical reactions |
---|
| 206 | |
---|
| 207 | Reactions(1) = 0*'kg/m^3/s'; |
---|
| 208 | |
---|
| 209 | Reactions(2) = (-ProcessRates(1) - ProcessRates(2))/Y_h + ProcessRates(7); |
---|
| 210 | |
---|
| 211 | Reactions(3) = 0 *'kg/m^3/s'; |
---|
| 212 | |
---|
| 213 | Reactions(4) = (1 - f_p)*(ProcessRates(4) + ProcessRates(5)) - ProcessRates(7); |
---|
| 214 | |
---|
| 215 | Reactions(5) = ProcessRates(1) + ProcessRates(2) - ProcessRates(4); |
---|
| 216 | |
---|
| 217 | Reactions(6) = ProcessRates(3) - ProcessRates(5); |
---|
| 218 | |
---|
| 219 | Reactions(7) = f_p*(ProcessRates(4) + ProcessRates(5)); |
---|
| 220 | |
---|
| 221 | Reactions(8) = -((1 - Y_h)/Y_h)*ProcessRates(1)- ((4.57 - Y_a)/Y_a)*ProcessRates(3 ); |
---|
| 222 | |
---|
| 223 | Reactions(9) = -((1 - Y_h)/(2.86*Y_h))*ProcessRates(2 ) + ProcessRates(3 )/Y_a; |
---|
| 224 | |
---|
| 225 | Reactions(10) = -i_xb*(ProcessRates(1 ) + ProcessRates( 2)) - (i_xb + (1/Y_a))*ProcessRates(3 ) + ProcessRates( 6); |
---|
| 226 | |
---|
| 227 | Reactions(11) = -ProcessRates( 6) +ProcessRates(8 ); |
---|
| 228 | |
---|
| 229 | Reactions(12) = (i_xb - f_p*i_xp)*(ProcessRates(4 ) + ProcessRates( 5)) - ProcessRates( 8); |
---|
| 230 | |
---|
| 231 | Reactions(13) = -i_xb/14*ProcessRates( 1) + ((1 - Y_h)/(14*2.86*Y_h) - (i_xb/14))*ProcessRates( 2) - ((i_xb/14) + 1/(7*Y_a))*ProcessRates( 3) + ProcessRates(6 )/14; |
---|
| 232 | |
---|
| 233 | " no aeration in this tank " |
---|
| 234 | aeration = 0*'kg/m^3/s'; |
---|
| 235 | |
---|
| 236 | Inlet.Q = Outlet.Q; |
---|
| 237 | |
---|
| 238 | diff(Outlet.Si) = (Inlet.Si - Outlet.Si)*Inlet.Q/V + Reactions(1); |
---|
| 239 | |
---|
| 240 | diff(Outlet.Ss) = (Inlet.Ss - Outlet.Ss)*Inlet.Q/V +Reactions(2); |
---|
| 241 | |
---|
| 242 | diff(Outlet.Xi )= (Inlet.Xi - Outlet.Xi)*Inlet.Q/V+Reactions(3); |
---|
| 243 | |
---|
| 244 | diff(Outlet.Xs) = (Inlet.Xs - Outlet.Xs)*Inlet.Q/V+Reactions(4); |
---|
| 245 | |
---|
| 246 | diff(Outlet.Xbh) = (Inlet.Xbh - Outlet.Xbh)*Inlet.Q/V+Reactions(5); |
---|
| 247 | |
---|
| 248 | diff(Outlet.Xba) = (Inlet.Xba - Outlet.Xba)*Inlet.Q/V+Reactions(6); |
---|
| 249 | |
---|
| 250 | diff(Outlet.Xp) = (Inlet.Xp - Outlet.Xp)*Inlet.Q/V+Reactions(7); |
---|
| 251 | |
---|
| 252 | diff(Outlet.So) = (Inlet.So - Outlet.So)*Inlet.Q/V+Reactions(8)+ aeration; |
---|
| 253 | |
---|
| 254 | diff(Outlet.Sno )= (Inlet.Sno - Outlet.Sno)*Inlet.Q/V+Reactions(9); |
---|
| 255 | |
---|
| 256 | diff(Outlet.Snh )= (Inlet.Snh - Outlet.Snh)*Inlet.Q/V+Reactions(10); |
---|
| 257 | |
---|
| 258 | diff(Outlet.Snd) = (Inlet.Snd - Outlet.Snd)*Inlet.Q/V+Reactions(11); |
---|
| 259 | |
---|
| 260 | diff(Outlet.Xnd) = (Inlet.Xnd - Outlet.Xnd)*Inlet.Q/V+Reactions(12); |
---|
| 261 | |
---|
| 262 | diff(Outlet.Salk) = (Inlet.Salk - Outlet.Salk)*Inlet.Q/V+Reactions(13); |
---|
| 263 | |
---|
| 264 | end |
---|
| 265 | |
---|
| 266 | Model NitriTank as ASM1base |
---|
| 267 | |
---|
| 268 | ATTRIBUTES |
---|
| 269 | Pallete = true; |
---|
| 270 | Icon = "icon/nitri"; |
---|
| 271 | Brief = "ASM1 nitrification tank."; |
---|
| 272 | Info = |
---|
| 273 | " |
---|
| 274 | This component models the ASM1 processes and reactions taking place in an aerated (nitrification) |
---|
| 275 | tank of a wastewater treatment plant. |
---|
| 276 | "; |
---|
| 277 | |
---|
| 278 | PARAMETERS |
---|
| 279 | |
---|
| 280 | # aeration system dependent parameters |
---|
| 281 | alpha as Real (Brief ="Oxygen transfer factor"); |
---|
| 282 | de as length (Brief = "depth of aeration"); |
---|
| 283 | R_air as GeneralFactor (Brief="specific oxygen feed factor [gO2/(m^3*m)]"); |
---|
| 284 | |
---|
| 285 | V as volume (Brief = "Volume of nitrification tank"); |
---|
| 286 | Tref as temperature (Brief = "Temperature dependent Kinetic parameters based on 15 deg C"); |
---|
| 287 | Tscale as temperature (Brief = "adimensional temperatura"); |
---|
| 288 | eps as MassConcentration (Brief = "adimensional temperatura"); |
---|
| 289 | Nrates as Integer; |
---|
| 290 | Nprocess as Integer; |
---|
| 291 | SET |
---|
| 292 | |
---|
| 293 | V = 1000 * 'm^3'; |
---|
| 294 | Tref = (15+273)*'K'; |
---|
| 295 | Tscale = 1*'K'; |
---|
| 296 | alpha = 0.7; |
---|
| 297 | de = 4.5 *'m'; |
---|
| 298 | R_air = 23.5 *'g/(m^3*m)'; |
---|
| 299 | eps = 1e-16*'g/l'; |
---|
| 300 | Nrates=13; |
---|
| 301 | Nprocess=8; |
---|
| 302 | |
---|
| 303 | VARIABLES |
---|
| 304 | |
---|
| 305 | in Inlet as FlowConnector (Brief = "Tank Inlet Stream", PosX=0, PosY=0.28, Symbol = "^{in}"); |
---|
| 306 | out Outlet as FlowConnector (Brief = "Tank Outlet Stream", PosX=1, PosY=0.3, Symbol = "^{out}"); |
---|
| 307 | in AirIn as AirFlow (Brief = "Inlet Air Stream", PosX=0.5, PosY=1); |
---|
| 308 | |
---|
| 309 | VARIABLES |
---|
| 310 | |
---|
| 311 | T as temperature; |
---|
| 312 | So_sat as MassConcentration (Brief="Dissolved oxygen saturation"); |
---|
| 313 | ProcessRates(Nprocess) as ReacRate (Brief = "Process Rates"); |
---|
| 314 | Reactions(Nrates) as ReacRate (Brief = "Reactions Rates"); |
---|
| 315 | aeration as ReacRate; |
---|
| 316 | |
---|
| 317 | EQUATIONS |
---|
| 318 | |
---|
| 319 | mu_h = mu_h_T*exp(0.069*(T- Tref)/Tscale); |
---|
| 320 | b_h = b_h_T*exp(0.069*(T- Tref)/Tscale); |
---|
| 321 | mu_a = mu_a_T*exp(0.098*(T- Tref)/Tscale); |
---|
| 322 | b_a = b_a_T*exp(0.08*(T- Tref)/Tscale); |
---|
| 323 | k_a = k_a_T*exp(0.069*(T- Tref)/Tscale); |
---|
| 324 | k_h = k_h_T*exp(0.11*(T- Tref)/Tscale); |
---|
| 325 | K_x = K_x_T*exp(0.11*(T- Tref)/Tscale); |
---|
| 326 | |
---|
| 327 | "Temperature dependent oxygen saturation by Simba" |
---|
| 328 | So_sat = abs(13.89 + (-0.3825 + (0.007311 - 0.00006588*T)*T)* T); |
---|
| 329 | |
---|
| 330 | " extends the Oxygen differential equation by an aeration term" |
---|
| 331 | #aeration [mgO2/l]; AirIn.Q_air needs to be in Simulationtimeunit [m3*day^-1] |
---|
| 332 | aeration = (alpha*(So_sat - Outlet.So)/(So_sat+eps)*AirIn.Q_air*R_air*de)/V; |
---|
| 333 | |
---|
| 334 | #Process Rates |
---|
| 335 | ProcessRates(1) = mu_h*(Outlet.Ss/(K_s + Outlet.Ss+eps))*(Outlet.So/(K_oh + Outlet.So+eps))*Outlet.Xbh; |
---|
| 336 | ProcessRates(2) = mu_h*(Outlet.Ss/(K_s + Outlet.Ss+eps))*(K_oh/(K_oh + Outlet.So+eps))*(Outlet.Sno/(K_no + Outlet.Sno+eps))*ny_g*Outlet.Xbh; |
---|
| 337 | ProcessRates(3) = mu_a*(Outlet.Snh/(K_nh + Outlet.Snh+eps))*(Outlet.So/(K_oa + Outlet.So+eps))*Outlet.Xba; |
---|
| 338 | ProcessRates(4) = b_h*Outlet.Xbh; |
---|
| 339 | ProcessRates(5) = b_a*Outlet.Xba; |
---|
| 340 | ProcessRates(6) = k_a*Outlet.Snd*Outlet.Xbh; |
---|
| 341 | ProcessRates(7) = k_h*((Outlet.Xs/(Outlet.Xbh+eps))/(K_x + (Outlet.Xs/(Outlet.Xbh+eps)))*((Outlet.So/(K_oh + Outlet.So+eps)) + ny_h*(K_oh/(K_oh + Outlet.So+eps))*(Outlet.Sno/(K_no +Outlet.Sno+eps))))*Outlet.Xbh; |
---|
| 342 | ProcessRates(8) = ProcessRates(7)*Outlet.Xnd/(Outlet.Xs+eps); |
---|
| 343 | |
---|
| 344 | # biochemical reactions |
---|
| 345 | |
---|
| 346 | Reactions(1) = 0*'kg/m^3/s'; |
---|
| 347 | Reactions(2) = (-ProcessRates(1) - ProcessRates(2))/Y_h + ProcessRates(7); |
---|
| 348 | Reactions(3) = 0*'kg/m^3/s'; |
---|
| 349 | Reactions(4) = (1 - f_p)*(ProcessRates(4) + ProcessRates(5)) - ProcessRates(7); |
---|
| 350 | Reactions(5) = ProcessRates(1) + ProcessRates(2) - ProcessRates(4); |
---|
| 351 | Reactions(6) = ProcessRates(3) - ProcessRates(5); |
---|
| 352 | Reactions(7) = f_p*(ProcessRates(4) + ProcessRates(5)); |
---|
| 353 | Reactions(8) = -((1 - Y_h)/Y_h)*ProcessRates(1)- ((4.57 - Y_a)/Y_a)*ProcessRates(3 ); |
---|
| 354 | Reactions(9) = -((1 - Y_h)/(2.86*Y_h))*ProcessRates(2 ) + ProcessRates(3 )/Y_a; |
---|
| 355 | Reactions(10) = -i_xb*(ProcessRates(1 ) + ProcessRates( 2)) - (i_xb + (1/Y_a))*ProcessRates(3 ) + ProcessRates( 6); |
---|
| 356 | Reactions(11) = -ProcessRates( 6) +ProcessRates(8 ); |
---|
| 357 | Reactions(12) = (i_xb - f_p*i_xp)*(ProcessRates(4 ) + ProcessRates( 5)) - ProcessRates( 8); |
---|
| 358 | Reactions(13) = -i_xb/14*ProcessRates( 1) + ((1 - Y_h)/(14*2.86*Y_h) - (i_xb/14))*ProcessRates( 2) - ((i_xb/14) + 1/(7*Y_a))*ProcessRates( 3) + ProcessRates(6 )/14; |
---|
| 359 | |
---|
| 360 | Inlet.Q = Outlet.Q; |
---|
| 361 | |
---|
| 362 | diff(Outlet.Si) = (Inlet.Si - Outlet.Si)*Inlet.Q/V + Reactions(1); |
---|
| 363 | |
---|
| 364 | diff(Outlet.Ss) = (Inlet.Ss - Outlet.Ss)*Inlet.Q/V +Reactions(2); |
---|
| 365 | |
---|
| 366 | diff(Outlet.Xi )= (Inlet.Xi - Outlet.Xi)*Inlet.Q/V+Reactions(3); |
---|
| 367 | |
---|
| 368 | diff(Outlet.Xs) = (Inlet.Xs - Outlet.Xs)*Inlet.Q/V+Reactions(4); |
---|
| 369 | |
---|
| 370 | diff(Outlet.Xbh) = (Inlet.Xbh - Outlet.Xbh)*Inlet.Q/V+Reactions(5); |
---|
| 371 | |
---|
| 372 | diff(Outlet.Xba) = (Inlet.Xba - Outlet.Xba)*Inlet.Q/V+Reactions(6); |
---|
| 373 | |
---|
| 374 | diff(Outlet.Xp) = (Inlet.Xp - Outlet.Xp)*Inlet.Q/V+Reactions(7); |
---|
| 375 | |
---|
| 376 | diff(Outlet.So) = (Inlet.So - Outlet.So)*Inlet.Q/V+Reactions(8)+ aeration; |
---|
| 377 | |
---|
| 378 | diff(Outlet.Sno )= (Inlet.Sno - Outlet.Sno)*Inlet.Q/V+Reactions(9); |
---|
| 379 | |
---|
| 380 | diff(Outlet.Snh )= (Inlet.Snh - Outlet.Snh)*Inlet.Q/V+Reactions(10); |
---|
| 381 | |
---|
| 382 | diff(Outlet.Snd) = (Inlet.Snd - Outlet.Snd)*Inlet.Q/V+Reactions(11); |
---|
| 383 | |
---|
| 384 | diff(Outlet.Xnd) = (Inlet.Xnd - Outlet.Xnd)*Inlet.Q/V+Reactions(12); |
---|
| 385 | |
---|
| 386 | diff(Outlet.Salk) = (Inlet.Salk - Outlet.Salk)*Inlet.Q/V+Reactions(13); |
---|
| 387 | |
---|
| 388 | end |
---|
| 389 | |
---|
| 390 | Model WWSource |
---|
| 391 | |
---|
| 392 | ATTRIBUTES |
---|
| 393 | Pallete = true; |
---|
| 394 | Icon = "icon/wwSource"; |
---|
| 395 | Brief = "Wastewater source."; |
---|
| 396 | Info = |
---|
| 397 | " |
---|
| 398 | This component provides all ASM1 data at the influent of a wastewater treatment plant. |
---|
| 399 | "; |
---|
| 400 | |
---|
| 401 | VARIABLES |
---|
| 402 | |
---|
| 403 | out Outlet as FlowConnector (Brief="Influent Stream", Symbol = "^{out}", PosX=1, PosY=0.96); |
---|
| 404 | |
---|
| 405 | end |
---|
| 406 | |
---|
| 407 | Model EffluentSink |
---|
| 408 | |
---|
| 409 | ATTRIBUTES |
---|
| 410 | Pallete = true; |
---|
| 411 | Icon = "icon/wwSink"; |
---|
| 412 | Brief = "Wastewater sink."; |
---|
| 413 | Info = |
---|
| 414 | " |
---|
| 415 | This component terminates an ASM1 wastewater treatment plant model e.g. the wastewater |
---|
| 416 | flow to the receiving water. |
---|
| 417 | "; |
---|
| 418 | |
---|
| 419 | VARIABLES |
---|
| 420 | |
---|
| 421 | in Inlet as FlowConnector (Brief="Effluent Stream", Symbol = "^{in}", PosX=0, PosY=0.25); |
---|
| 422 | |
---|
| 423 | end |
---|
| 424 | |
---|
| 425 | Model blower |
---|
| 426 | |
---|
| 427 | ATTRIBUTES |
---|
| 428 | Pallete = true; |
---|
| 429 | Icon = "icon/blower"; |
---|
| 430 | Brief = "Blower for the aeration of the nitrification tanks."; |
---|
| 431 | Info = |
---|
| 432 | " |
---|
| 433 | This component models a blower of a wastewater treatment plant which generates |
---|
| 434 | an airflow that is needed for the nitrification. |
---|
| 435 | |
---|
| 436 | *The blower is connected to the nitrification tank. |
---|
| 437 | |
---|
| 438 | *The airflow is controlled by a signal u (-1 <= u <= 1). |
---|
| 439 | "; |
---|
| 440 | |
---|
| 441 | #PARAMETERS |
---|
| 442 | |
---|
| 443 | #Q_max as VolumeFlowRate (Brief="Maximum blower capacity"); |
---|
| 444 | #Q_min as VolumeFlowRate (Brief="Minimum blower capacity"); |
---|
| 445 | |
---|
| 446 | VARIABLES |
---|
| 447 | |
---|
| 448 | out AirOut as AirFlow (Brief="Effluent Stream", Symbol = "Air_{out}", PosX=0.45, PosY=0); |
---|
| 449 | |
---|
| 450 | end |
---|
| 451 | |
---|
| 452 | Model mixer2 |
---|
| 453 | |
---|
| 454 | ATTRIBUTES |
---|
| 455 | Pallete = true; |
---|
| 456 | Icon = "icon/mixer2"; |
---|
| 457 | Brief = "Mixer of 2 ASM1 characterised flows."; |
---|
| 458 | Info = |
---|
| 459 | " |
---|
| 460 | This component mixes 2 flows of wastewater (ASM1) of different concentration and different amount. |
---|
| 461 | "; |
---|
| 462 | |
---|
| 463 | VARIABLES |
---|
| 464 | |
---|
| 465 | in Inlet1 as FlowConnector (Brief="First Inlet Mixer Stream",Symbol = "^{in1}", PosX=0, PosY=0.5); |
---|
| 466 | in Inlet2 as FlowConnector (Brief="Second Inlet Mixer Stream",Symbol = "^{in2}", PosX=0, PosY=0.8); |
---|
| 467 | out Outlet as FlowConnector (Brief="Outlet Mixer Stream", Symbol = "^{out}", PosX=1, PosY=0.65); |
---|
| 468 | |
---|
| 469 | EQUATIONS |
---|
| 470 | |
---|
| 471 | Inlet1.Q + Inlet2.Q = Outlet.Q; |
---|
| 472 | |
---|
| 473 | Outlet.Si = (Inlet1.Si*Inlet1.Q + Inlet2.Si*Inlet2.Q )/(Inlet1.Q + Inlet2.Q ); |
---|
| 474 | |
---|
| 475 | Outlet.Ss = (Inlet1.Ss*Inlet1.Q + Inlet2.Ss*Inlet2.Q )/(Inlet1.Q + Inlet2.Q ); |
---|
| 476 | |
---|
| 477 | Outlet.Xi = (Inlet1.Xi*Inlet1.Q + Inlet2.Xi*Inlet2.Q )/(Inlet1.Q + Inlet2.Q ); |
---|
| 478 | |
---|
| 479 | Outlet.Xs = (Inlet1.Xs*Inlet1.Q + Inlet2.Xs*Inlet2.Q )/(Inlet1.Q + Inlet2.Q); |
---|
| 480 | |
---|
| 481 | Outlet.Xbh = (Inlet1.Xbh*Inlet1.Q + Inlet2.Xbh*Inlet2.Q )/(Inlet1.Q + Inlet2.Q ); |
---|
| 482 | |
---|
| 483 | Outlet.Xba = (Inlet1.Xba*Inlet1.Q + Inlet2.Xba*Inlet2.Q )/(Inlet1.Q + Inlet2.Q); |
---|
| 484 | |
---|
| 485 | Outlet.Xp = (Inlet1.Xp*Inlet1.Q + Inlet2.Xp*Inlet2.Q )/(Inlet1.Q + Inlet2.Q); |
---|
| 486 | |
---|
| 487 | Outlet.So = (Inlet1.So*Inlet1.Q + Inlet2.So*Inlet2.Q )/(Inlet1.Q + Inlet2.Q); |
---|
| 488 | |
---|
| 489 | Outlet.Sno = (Inlet1.Sno*Inlet1.Q + Inlet2.Sno*Inlet2.Q )/(Inlet1.Q + Inlet2.Q ); |
---|
| 490 | |
---|
| 491 | Outlet.Snh = (Inlet1.Snh*Inlet1.Q + Inlet2.Snh*Inlet2.Q )/(Inlet1.Q + Inlet2.Q ); |
---|
| 492 | |
---|
| 493 | Outlet.Snd = (Inlet1.Snd*Inlet1.Q + Inlet2.Snd*Inlet2.Q )/(Inlet1.Q + Inlet2.Q); |
---|
| 494 | |
---|
| 495 | Outlet.Xnd = (Inlet1.Xnd*Inlet1.Q + Inlet2.Xnd*Inlet2.Q)/(Inlet1.Q + Inlet2.Q ); |
---|
| 496 | |
---|
| 497 | Outlet.Salk = (Inlet1.Salk*Inlet1.Q + Inlet2.Salk*Inlet2.Q )/(Inlet1.Q + Inlet2.Q ); |
---|
| 498 | |
---|
| 499 | end |
---|
| 500 | |
---|
| 501 | Model mixer3 |
---|
| 502 | |
---|
| 503 | ATTRIBUTES |
---|
| 504 | Pallete = true; |
---|
| 505 | Icon = "icon/mixer3"; |
---|
| 506 | Brief = "Mixer of 3 ASM1 characterised flows."; |
---|
| 507 | Info = |
---|
| 508 | " |
---|
| 509 | This component mixes 3 flows of wastewater (ASM1) of different concentration and different amount. |
---|
| 510 | "; |
---|
| 511 | |
---|
| 512 | VARIABLES |
---|
| 513 | |
---|
| 514 | in Inlet1 as FlowConnector (Brief="First Inlet Mixer Stream", Symbol = "^{in1}", PosX=0, PosY=0.4); |
---|
| 515 | in Inlet2 as FlowConnector (Brief="Second Inlet Mixer Stream", Symbol = "^{in2}", PosX=0, PosY=0.6); |
---|
| 516 | in Inlet3 as FlowConnector (Brief="Third Inlet Mixer Stream", Symbol = "^{in3}", PosX=0, PosY=0.8); |
---|
| 517 | out Outlet as FlowConnector (Brief="Outlet Mixer Stream", Symbol = "^{out}", PosX=1, PosY=0.6); |
---|
| 518 | |
---|
| 519 | EQUATIONS |
---|
| 520 | |
---|
| 521 | Inlet1.Q + Inlet2.Q + Inlet3.Q = Outlet.Q; |
---|
| 522 | |
---|
| 523 | Outlet.Si = (Inlet1.Si*Inlet1.Q + Inlet2.Si*Inlet2.Q + Inlet3.Si*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 524 | |
---|
| 525 | Outlet.Ss = (Inlet1.Ss*Inlet1.Q + Inlet2.Ss*Inlet2.Q + Inlet3.Ss*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 526 | |
---|
| 527 | Outlet.Xi = (Inlet1.Xi*Inlet1.Q + Inlet2.Xi*Inlet2.Q + Inlet3.Xi*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 528 | |
---|
| 529 | Outlet.Xs = (Inlet1.Xs*Inlet1.Q + Inlet2.Xs*Inlet2.Q + Inlet3.Xs*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 530 | |
---|
| 531 | Outlet.Xbh = (Inlet1.Xbh*Inlet1.Q + Inlet2.Xbh*Inlet2.Q + Inlet3.Xbh*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 532 | |
---|
| 533 | Outlet.Xba = (Inlet1.Xba*Inlet1.Q + Inlet2.Xba*Inlet2.Q + Inlet3.Xba*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 534 | |
---|
| 535 | Outlet.Xp = (Inlet1.Xp*Inlet1.Q + Inlet2.Xp*Inlet2.Q + Inlet3.Xp*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 536 | |
---|
| 537 | Outlet.So = (Inlet1.So*Inlet1.Q + Inlet2.So*Inlet2.Q + Inlet3.So*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 538 | |
---|
| 539 | Outlet.Sno = (Inlet1.Sno*Inlet1.Q + Inlet2.Sno*Inlet2.Q + Inlet3.Sno*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 540 | |
---|
| 541 | Outlet.Snh = (Inlet1.Snh*Inlet1.Q + Inlet2.Snh*Inlet2.Q + Inlet3.Snh*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 542 | |
---|
| 543 | Outlet.Snd = (Inlet1.Snd*Inlet1.Q + Inlet2.Snd*Inlet2.Q + Inlet3.Snd*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 544 | |
---|
| 545 | Outlet.Xnd = (Inlet1.Xnd*Inlet1.Q + Inlet2.Xnd*Inlet2.Q + Inlet3.Xnd*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 546 | |
---|
| 547 | Outlet.Salk = (Inlet1.Salk*Inlet1.Q + Inlet2.Salk*Inlet2.Q + Inlet3.Salk*Inlet3.Q)/(Inlet1.Q + Inlet2.Q + Inlet3.Q); |
---|
| 548 | |
---|
| 549 | end |
---|
| 550 | |
---|
| 551 | Model wwPump |
---|
| 552 | |
---|
| 553 | ATTRIBUTES |
---|
| 554 | Pallete = true; |
---|
| 555 | Icon = "icon/pump"; |
---|
| 556 | Brief = "ASM1 wastewater pump."; |
---|
| 557 | Info = |
---|
| 558 | " |
---|
| 559 | This component models an ASM1 wastewater pump. It generates a wastewater flow |
---|
| 560 | that is controlled by the signal u (-1 <= u <=1). |
---|
| 561 | "; |
---|
| 562 | |
---|
| 563 | PARAMETERS |
---|
| 564 | |
---|
| 565 | Q_min as VolumeFlowRate (Brief="minimum pump capacity", Symbol = "Q_{min}", Default = 0); |
---|
| 566 | Q_max as VolumeFlowRate (Brief="maximum pump capacity", Symbol = "Q_{max}", Default = 20000); |
---|
| 567 | |
---|
| 568 | VARIABLES |
---|
| 569 | |
---|
| 570 | in Inlet as FlowConnector (Brief="Inlet Stream", Symbol = "^{in}", PosX=0, PosY=0.75); |
---|
| 571 | out Outlet as FlowConnector (Brief="Outlet Stream", Symbol = "^{out}", PosX=1, PosY=0.4); |
---|
| 572 | |
---|
| 573 | EQUATIONS |
---|
| 574 | |
---|
| 575 | Outlet.Q = Inlet.Q; |
---|
| 576 | Outlet.Si = Inlet.Si; |
---|
| 577 | Outlet.Ss = Inlet.Ss; |
---|
| 578 | Outlet.Xi = Inlet.Xi; |
---|
| 579 | Outlet.Xs = Inlet.Xs; |
---|
| 580 | Outlet.Xbh = Inlet.Xbh; |
---|
| 581 | Outlet.Xba = Inlet.Xba; |
---|
| 582 | Outlet.Xp = Inlet.Xp; |
---|
| 583 | Outlet.So = Inlet.So; |
---|
| 584 | Outlet.Sno = Inlet.Sno; |
---|
| 585 | Outlet.Snh = Inlet.Snh; |
---|
| 586 | Outlet.Snd = Inlet.Snd; |
---|
| 587 | Outlet.Xnd = Inlet.Xnd; |
---|
| 588 | Outlet.Salk = Inlet.Salk; |
---|
| 589 | |
---|
| 590 | end |
---|
| 591 | |
---|
| 592 | Model divider2 |
---|
| 593 | |
---|
| 594 | ATTRIBUTES |
---|
| 595 | Pallete = true; |
---|
| 596 | Icon = "icon/divider2"; |
---|
| 597 | Brief = "Flow divider."; |
---|
| 598 | Info = |
---|
| 599 | " |
---|
| 600 | This component divides one ASM1 wastewater flow into two ASM1 wastewater flows. |
---|
| 601 | "; |
---|
| 602 | PARAMETERS |
---|
| 603 | |
---|
| 604 | Frac_1 as fraction; |
---|
| 605 | |
---|
| 606 | SUBMODELS |
---|
| 607 | |
---|
| 608 | in Inlet as FlowConnector (Brief="Inlet Stream", Symbol = "^{in}", PosX=0, PosY=0.65); |
---|
| 609 | out Outlet1 as FlowConnector (Brief="First Outlet Stream", Symbol = "^{out1}", PosX=1, PosY=0.45); |
---|
| 610 | out Outlet2 as FlowConnector (Brief="Second Outlet Stream", Symbol = "^{out2}", PosX=1, PosY=0.8); |
---|
| 611 | |
---|
| 612 | EQUATIONS |
---|
| 613 | |
---|
| 614 | Inlet.Q = Outlet1.Q + Outlet2.Q; |
---|
| 615 | Outlet1.Q = Inlet.Q*Frac_1; |
---|
| 616 | |
---|
| 617 | Outlet1.Si = Inlet.Si; |
---|
| 618 | Outlet1.Ss = Inlet.Ss; |
---|
| 619 | Outlet1.Xi = Inlet.Xi; |
---|
| 620 | Outlet1.Xs = Inlet.Xs; |
---|
| 621 | Outlet1.Xbh = Inlet.Xbh; |
---|
| 622 | Outlet1.Xba = Inlet.Xba; |
---|
| 623 | Outlet1.Xp = Inlet.Xp; |
---|
| 624 | Outlet1.So = Inlet.So; |
---|
| 625 | Outlet1.Sno = Inlet.Sno; |
---|
| 626 | Outlet1.Snh = Inlet.Snh; |
---|
| 627 | Outlet1.Snd = Inlet.Snd; |
---|
| 628 | Outlet1.Xnd = Inlet.Xnd; |
---|
| 629 | Outlet1.Salk = Inlet.Salk; |
---|
| 630 | |
---|
| 631 | Outlet2.Si = Inlet.Si; |
---|
| 632 | Outlet2.Ss = Inlet.Ss; |
---|
| 633 | Outlet2.Xi = Inlet.Xi; |
---|
| 634 | Outlet2.Xs = Inlet.Xs; |
---|
| 635 | Outlet2.Xbh = Inlet.Xbh; |
---|
| 636 | Outlet2.Xba = Inlet.Xba; |
---|
| 637 | Outlet2.Xp = Inlet.Xp; |
---|
| 638 | Outlet2.So = Inlet.So; |
---|
| 639 | Outlet2.Sno = Inlet.Sno; |
---|
| 640 | Outlet2.Snh = Inlet.Snh; |
---|
| 641 | Outlet2.Snd = Inlet.Snd; |
---|
| 642 | Outlet2.Xnd = Inlet.Xnd; |
---|
| 643 | Outlet2.Salk = Inlet.Salk; |
---|
| 644 | |
---|
| 645 | end |
---|
| 646 | |
---|
| 647 | Model secRatios |
---|
| 648 | |
---|
| 649 | ATTRIBUTES |
---|
| 650 | Pallete = false; |
---|
| 651 | Brief = "partial model for ratios of solid components"; |
---|
| 652 | Info = |
---|
| 653 | "partial model for ASM1 ratios of solid components. |
---|
| 654 | "; |
---|
| 655 | |
---|
| 656 | VARIABLES |
---|
| 657 | # ratios of solid components |
---|
| 658 | rXi as Real; |
---|
| 659 | rXs as Real; |
---|
| 660 | rXbh as Real; |
---|
| 661 | rXba as Real; |
---|
| 662 | rXp as Real; |
---|
| 663 | rXnd as Real; |
---|
| 664 | |
---|
| 665 | end |
---|
| 666 | |
---|
| 667 | Model secParam |
---|
| 668 | |
---|
| 669 | ATTRIBUTES |
---|
| 670 | Pallete = false; |
---|
| 671 | Brief = "partial model providing clarifier parameters."; |
---|
| 672 | Info = |
---|
| 673 | "partial model providing clarifier parameters. |
---|
| 674 | "; |
---|
| 675 | |
---|
| 676 | PARAMETERS |
---|
| 677 | |
---|
| 678 | zm as length; |
---|
| 679 | Asc as area; |
---|
| 680 | |
---|
| 681 | end |
---|
| 682 | |
---|
| 683 | Model secVar |
---|
| 684 | |
---|
| 685 | ATTRIBUTES |
---|
| 686 | Pallete = false; |
---|
| 687 | Brief = "partial models providing variables."; |
---|
| 688 | Info = |
---|
| 689 | "partial models providing ASM1 variables. |
---|
| 690 | "; |
---|
| 691 | |
---|
| 692 | VARIABLES |
---|
| 693 | |
---|
| 694 | Si as MassConcentration (Brief="Soluble inert organic matter"); |
---|
| 695 | Ss as MassConcentration (Brief="Readily biodegradable substrate"); |
---|
| 696 | So as MassConcentration (Brief="Dissolved oxygen"); |
---|
| 697 | Sno as MassConcentration (Brief="Nitrate and nitrite nitrogen"); |
---|
| 698 | Snh as MassConcentration (Brief="Ammonium nitrogen"); |
---|
| 699 | Snd as MassConcentration (Brief="Soluble biodegradable organic nitrogen"); |
---|
| 700 | Salk as Alkalinity (Brief="Alkalinity"); |
---|
| 701 | |
---|
| 702 | X as MassConcentration (Brief="total sludge concentration in m-th layer"); |
---|
| 703 | Xf as MassConcentration (Brief="total sludge concentration in clarifier feed"); |
---|
| 704 | vS as SedimentationVelocity (Brief="sink velocity in m-th layer"); |
---|
| 705 | Jsm as SedimentationFlux (Brief="sedimentation flux m-th layer"); |
---|
| 706 | |
---|
| 707 | end |
---|
| 708 | |
---|
| 709 | Model LowerLayerPin |
---|
| 710 | |
---|
| 711 | ATTRIBUTES |
---|
| 712 | Pallete = false; |
---|
| 713 | Brief = "Connector below influent layer."; |
---|
| 714 | Info = |
---|
| 715 | "Connector for ASM1 information and mass exchange between layers below the influent layer (feed_layer). |
---|
| 716 | "; |
---|
| 717 | |
---|
| 718 | VARIABLES |
---|
| 719 | |
---|
| 720 | Qr as VolumeFlowRate; |
---|
| 721 | Qw as VolumeFlowRate; |
---|
| 722 | |
---|
| 723 | SedFlux as SedimentationFlux ; |
---|
| 724 | |
---|
| 725 | # total sludge concentration in m-th layer |
---|
| 726 | X as MassConcentration; |
---|
| 727 | |
---|
| 728 | # total sludge concentration and sink velocity in(m-1)-th layer (dn=down) |
---|
| 729 | X_dn as MassConcentration; |
---|
| 730 | vS_dn as SedimentationVelocity; |
---|
| 731 | |
---|
| 732 | Si as MassConcentration (Brief="Soluble inert organic matter"); |
---|
| 733 | Ss as MassConcentration (Brief="Readily biodegradable substrate"); |
---|
| 734 | So as MassConcentration (Brief="Dissolved oxygen"); |
---|
| 735 | Sno as MassConcentration (Brief="Nitrate and nitrite nitrogen"); |
---|
| 736 | Snh as MassConcentration (Brief="Ammonium nitrogen"); |
---|
| 737 | Snd as MassConcentration (Brief="Soluble biodegradable organic nitrogen"); |
---|
| 738 | Salk as Alkalinity (Brief="Alkalinity"); |
---|
| 739 | |
---|
| 740 | end |
---|
| 741 | |
---|
| 742 | Model UpperLayerPin |
---|
| 743 | |
---|
| 744 | ATTRIBUTES |
---|
| 745 | Pallete = false; |
---|
| 746 | Brief = "Connector below influent layer."; |
---|
| 747 | Info = |
---|
| 748 | "Connector for ASM1 information and mass exchange between layers below the influent layer (feed_layer). |
---|
| 749 | "; |
---|
| 750 | |
---|
| 751 | VARIABLES |
---|
| 752 | |
---|
| 753 | Qe as VolumeFlowRate; |
---|
| 754 | |
---|
| 755 | SedFlux as SedimentationFlux ; |
---|
| 756 | |
---|
| 757 | # total sludge concentration and sink velocity in(m-1)-th layer (dn=down) |
---|
| 758 | X_dn as MassConcentration; |
---|
| 759 | vS_dn as SedimentationVelocity; |
---|
| 760 | |
---|
| 761 | Si as MassConcentration (Brief="Soluble inert organic matter"); |
---|
| 762 | Ss as MassConcentration (Brief="Readily biodegradable substrate"); |
---|
| 763 | So as MassConcentration (Brief="Dissolved oxygen"); |
---|
| 764 | Sno as MassConcentration (Brief="Nitrate and nitrite nitrogen"); |
---|
| 765 | Snh as MassConcentration (Brief="Ammonium nitrogen"); |
---|
| 766 | Snd as MassConcentration (Brief="Soluble biodegradable organic nitrogen"); |
---|
| 767 | Salk as Alkalinity (Brief="Alkalinity"); |
---|
| 768 | |
---|
| 769 | end |
---|
| 770 | |
---|
| 771 | Model clarifier |
---|
| 772 | |
---|
| 773 | ATTRIBUTES |
---|
| 774 | Pallete = true; |
---|
| 775 | Icon ="icon/clarifier"; |
---|
| 776 | Brief = "Simple ASM1 Secondary Clarifier Model"; |
---|
| 777 | Info = |
---|
| 778 | "This component models very simple the secondary clarification process by |
---|
| 779 | just using a single fully mixed tank which removes all particulate substances from the effluent |
---|
| 780 | and returns the sludge. No sedimentation and compression, etc. is considered (for ASM1). |
---|
| 781 | "; |
---|
| 782 | |
---|
| 783 | PARAMETERS |
---|
| 784 | eps as MassConcentration (Brief="eps",Default = 1e-11); |
---|
| 785 | VARIABLES |
---|
| 786 | in Feed as FlowConnector (Brief = "Feed Stream", Symbol = "^{Feed}", PosX=0, PosY=0.4); |
---|
| 787 | out Effluent as FlowConnector (Brief = "Effluent Stream", Symbol = "^{Eff}", PosX=1, PosY=0.2); |
---|
| 788 | out Return as FlowConnector (Brief = "Return Stream", Symbol = "^{Return}", PosX=0.4, PosY=1); |
---|
| 789 | out Waste as FlowConnector (Brief = "Waste Stream", Symbol = "^{Waste}", PosX=0.6, PosY=1); |
---|
| 790 | |
---|
| 791 | rXi as Real (Lower=-1e-10); |
---|
| 792 | rXs as Real(Lower=-1e-10); |
---|
| 793 | rXbh as Real(Lower=-1e-10); |
---|
| 794 | rXba as Real(Lower=-1e-10); |
---|
| 795 | rXp as Real(Lower=-1e-10); |
---|
| 796 | rXnd as Real(Lower=-1e-10); |
---|
| 797 | |
---|
| 798 | Si as MassConcentration (Brief="Soluble inert organic matter"); |
---|
| 799 | Ss as MassConcentration (Brief="Readily biodegradable substrate"); |
---|
| 800 | So as MassConcentration (Brief="Dissolved oxygen"); |
---|
| 801 | Sno as MassConcentration (Brief="Nitrate and nitrite nitrogen"); |
---|
| 802 | Snh as MassConcentration (Brief="Ammonium nitrogen"); |
---|
| 803 | Snd as MassConcentration (Brief="Soluble biodegradable organic nitrogen"); |
---|
| 804 | Salk as Alkalinity (Brief="Alkalinity"); |
---|
| 805 | X as MassConcentration (Brief="sludge concentration in clarifier"); |
---|
| 806 | Xf as MassConcentration (Brief="total sludge concentration in clarifier feed"); |
---|
| 807 | |
---|
| 808 | PARAMETERS |
---|
| 809 | hsc as length; |
---|
| 810 | Asc as area; |
---|
| 811 | FracReturn as fraction; |
---|
| 812 | FracWaste as fraction; |
---|
| 813 | SET |
---|
| 814 | |
---|
| 815 | hsc=4.0 *'m'; |
---|
| 816 | Asc=1500.0*'m^2'; |
---|
| 817 | |
---|
| 818 | EQUATIONS |
---|
| 819 | " total sludge concentration in clarifier feed" |
---|
| 820 | Xf = 0.75*(Feed.Xs + Feed.Xbh + Feed.Xba + Feed.Xp + Feed.Xi); |
---|
| 821 | |
---|
| 822 | " ratios of solid components" |
---|
| 823 | rXs*Xf = Feed.Xs; |
---|
| 824 | rXbh*Xf = Feed.Xbh; |
---|
| 825 | rXba*Xf = Feed.Xba; |
---|
| 826 | rXp*Xf = Feed.Xp; |
---|
| 827 | rXi*Xf = Feed.Xi; |
---|
| 828 | rXnd*Xf = Feed.Xnd; |
---|
| 829 | |
---|
| 830 | " ODE of sludge concentration" |
---|
| 831 | diff(X) = (Feed.Q*Xf - (-(Waste.Q + Return.Q))*X)/(Asc*hsc); |
---|
| 832 | |
---|
| 833 | " ODE of soluble components" |
---|
| 834 | diff(Si) = (Feed.Q*Feed.Si - (-Effluent.Q)*Si - (-(Waste.Q + Return.Q))*Si)/(Asc*hsc); |
---|
| 835 | diff(Ss) = (Feed.Q*Feed.Ss - (-Effluent.Q)*Ss - (-(Waste.Q + Return.Q))*Ss)/(Asc*hsc); |
---|
| 836 | diff(So) = (Feed.Q*Feed.So - (-Effluent.Q)*So - (-(Waste.Q + Return.Q))*So)/(Asc*hsc); |
---|
| 837 | diff(Sno) = (Feed.Q*Feed.Sno - (-Effluent.Q)*Sno - (-(Waste.Q + Return.Q))*Sno)/(Asc*hsc); |
---|
| 838 | diff(Snh) = (Feed.Q*Feed.Snh - (-Effluent.Q)*Snh - (-(Waste.Q + Return.Q))*Snh)/(Asc*hsc); |
---|
| 839 | diff(Snd) = (Feed.Q*Feed.Snd - (-Effluent.Q)*Snd - (-(Waste.Q + Return.Q))*Snd)/(Asc*hsc); |
---|
| 840 | diff(Salk) = (Feed.Q*Feed.Salk - (-Effluent.Q)*Salk - (-(Waste.Q + Return.Q))* Salk)/(Asc*hsc); |
---|
| 841 | |
---|
| 842 | " volume flow rates" |
---|
| 843 | Feed.Q = Effluent.Q + Return.Q + Waste.Q; |
---|
| 844 | Return.Q = Feed.Q*FracReturn; |
---|
| 845 | Waste.Q = Feed.Q*FracWaste; |
---|
| 846 | |
---|
| 847 | "effluent, solid and soluble components (ASM1)" |
---|
| 848 | Effluent.Si = Si; |
---|
| 849 | Effluent.Ss = Ss; |
---|
| 850 | Effluent.Xi = 0.0*X; |
---|
| 851 | Effluent.Xs = 0.0*X; |
---|
| 852 | Effluent.Xbh = 0.0*X; |
---|
| 853 | Effluent.Xba = 0.0*X; |
---|
| 854 | Effluent.Xp = 0.0*X; |
---|
| 855 | Effluent.So = So; |
---|
| 856 | Effluent.Sno = Sno; |
---|
| 857 | Effluent.Snh = Snh; |
---|
| 858 | Effluent.Snd = Snd; |
---|
| 859 | Effluent.Xnd = 0.0*X; |
---|
| 860 | Effluent.Salk = Salk; |
---|
| 861 | |
---|
| 862 | "return sludge flow, solid and soluble components (ASM1)" |
---|
| 863 | Return.Si = Si; |
---|
| 864 | Return.Ss = Ss; |
---|
| 865 | Return.Xi = rXi*X; |
---|
| 866 | Return.Xs = rXs*X; |
---|
| 867 | Return.Xbh = rXbh*X; |
---|
| 868 | Return.Xba = rXba*X; |
---|
| 869 | Return.Xp = rXp*X; |
---|
| 870 | Return.So = So; |
---|
| 871 | Return.Sno = Sno; |
---|
| 872 | Return.Snh = Snh; |
---|
| 873 | Return.Snd = Snd; |
---|
| 874 | Return.Xnd = rXnd*X; |
---|
| 875 | Return.Salk = Salk; |
---|
| 876 | |
---|
| 877 | " waste sludge flow, solid and soluble components (ASM1)" |
---|
| 878 | Waste.Si = Si; |
---|
| 879 | Waste.Ss = Ss; |
---|
| 880 | Waste.Xi = rXi*X; |
---|
| 881 | Waste.Xs = rXs*X; |
---|
| 882 | Waste.Xbh = rXbh*X; |
---|
| 883 | Waste.Xba = rXba*X; |
---|
| 884 | Waste.Xp = rXp*X; |
---|
| 885 | Waste.So = So; |
---|
| 886 | Waste.Sno = Sno; |
---|
| 887 | Waste.Snh = Snh; |
---|
| 888 | Waste.Snd = Snd; |
---|
| 889 | Waste.Xnd = rXnd*X; |
---|
| 890 | Waste.Salk = Salk; |
---|
| 891 | |
---|
| 892 | end |
---|
| 893 | |
---|
| 894 | Model sludge |
---|
| 895 | |
---|
| 896 | ATTRIBUTES |
---|
| 897 | Pallete = true; |
---|
| 898 | Icon = "icon/sludge"; |
---|
| 899 | Brief = "to be documented."; |
---|
| 900 | Info = |
---|
| 901 | " |
---|
| 902 | none |
---|
| 903 | "; |
---|
| 904 | |
---|
| 905 | VARIABLES |
---|
| 906 | |
---|
| 907 | in Inlet as FlowConnector (Brief="Influent Stream", Symbol = "^{in}", PosX=0, PosY=0.5); |
---|
| 908 | |
---|
| 909 | end |
---|