package Interfaces "Connectors and partial ASM1 model for Wastewater Treatment Modelling" extends Modelica.Icons.Library; connector WWFlowAsm1in "Inflow connector of ASM1 components" package WWU = WasteWater.WasteWaterUnits; flow WWU.VolumeFlowRate Q; WWU.MassConcentration Si; WWU.MassConcentration Ss; WWU.MassConcentration Xi; WWU.MassConcentration Xs; WWU.MassConcentration Xbh; WWU.MassConcentration Xba; WWU.MassConcentration Xp; WWU.MassConcentration So; WWU.MassConcentration Sno; WWU.MassConcentration Snh; WWU.MassConcentration Snd; WWU.MassConcentration Xnd; WWU.Alkalinity Salk; annotation ( Coordsys( extent=[-100, -100; 100, 100], grid=[2, 2], component=[20, 20]), Window( x=0.45, y=0.01, width=0.35, height=0.49), Icon(Rectangle(extent=[-100, 100; 100, -100], style(fillColor=74)), Text( extent=[-88, 92; 88, -94], string="%name", style(color=7, fillColor=0))), Documentation(info="Connectors WWFlowAsm1in and WWFlowAsm1out are nearly identical. The difference is in the icons to more easily identify the inflow and outflow side of a component. The connector consists of one flow variable and 13 potential variables (ASM1 concentrations). ")); end WWFlowAsm1in; connector WWFlowAsm1out "Outflow connector of ASM1 components" package WWU = WasteWater.WasteWaterUnits; flow WWU.VolumeFlowRate Q; WWU.MassConcentration Si; WWU.MassConcentration Ss; WWU.MassConcentration Xi; WWU.MassConcentration Xs; WWU.MassConcentration Xbh; WWU.MassConcentration Xba; WWU.MassConcentration Xp; WWU.MassConcentration So; WWU.MassConcentration Sno; WWU.MassConcentration Snh; WWU.MassConcentration Snd; WWU.MassConcentration Xnd; WWU.Alkalinity Salk; annotation ( Coordsys( extent=[-100, -100; 100, 100], grid=[2, 2], component=[20, 20]), Window( x=0.45, y=0.01, width=0.35, height=0.49), Icon(Rectangle(extent=[-100, 100; 100, -100]), Text(extent=[-88, 92; 94, -92], string="%name")), Documentation(info="Connectors WWFlowAsm1in and WWFlowAsm1out are nearly identical. The difference is in the icons to more easily identify the inflow and outflow side of a component. The connector consists of one flow variable and 13 potential variables (ASM1 concentrations). ")); end WWFlowAsm1out; connector AirFlow "Airflow connector" package WWU = WasteWater.WasteWaterUnits; flow WWU.VolumeFlowRate Q_air; annotation ( Coordsys( extent=[-100, -100; 100, 100], grid=[2, 2], component=[20, 20]), Documentation(info="The Airflow connector consits of a flow variable describing the exchange of air between blower and nitrification tank."), Window( x=0.4, y=0.35, width=0.6, height=0.6)); end AirFlow; partial model stoichiometry "ASM1 stoichiometric coefficients" // Stoichiometric parameters based on the original ASM1 publication// parameter Real Y_h=0.67 "Autotrophic yield [g Xba COD formed/(g N utilised)]"; parameter Real Y_a=0.24 "Heterotrophic Yield [g Xbh COD formed/(g COD utilised)]"; parameter Real f_p=0.08 "Fraction of biomass to particulate products [-]"; parameter Real i_xb=0.086 "Fraction nitrogen in biomass [g N/(g COD)]"; parameter Real i_xp=0.06 "Fraction nitrogen in particulate products [g N/(g COD)]"; annotation ( Coordsys( extent=[-100, -100; 100, 100], grid=[2, 2], component=[20, 20]), Window( x=0.45, y=0.01, width=0.35, height=0.49), Documentation(info= "This is a partial model providing the stoichiometric coefficients of the ASM1 model." )); end stoichiometry; partial model ASM1base "Base class of WWTP modelling by ASM1" extends Interfaces.stoichiometry; package WWU = WasteWater.WasteWaterUnits; // parameters based on the original ASM1 publication based on 15 deg C Real mu_h "Maximum heterotrophic growth rate f(T) [day^-1]"; Real b_h "Heterotrophic decay rate f(T) [day^-1]"; Real mu_a "Maximum autotrophic growth rate f(T) [day^-1]"; //Real K_nh "Half-saturation (auto. growth) f(T) [g NH-N/m3]"; Real b_a "Autotrophic decay rate f(T) [day^-1]"; Real k_a "Ammonification rate f(T) [m3/(g COD day)]"; Real k_h "Maximum specific hydrolysis rate f(T) [g Xs/(g Xbh COD day)]"; Real K_x "Half-saturation (hydrolysis) f(T) [g Xs/(g Xbh COD)]"; parameter Real mu_h_T=4.0 "Maximum heterotrophic growth rate at T=15 deg C [day^-1]"; parameter Real b_h_T=0.28 "Heterotrophic decay rate at T=15 deg C [day^-1]" ; parameter Real mu_a_T=0.5 "Maximum autotrophic growth rate at T=15 deg C[day^-1]"; parameter Real b_a_T=0.1 "Autotrophic decay rate at T=15 deg C [day^-1]"; parameter Real k_a_T=0.06 "Ammonification rate at T=15 deg C [m3/(g COD day)]"; parameter Real k_h_T=1.75 "Maximum specific hydrolysis rate at T=15 deg C [g Xs/(g Xbh COD day)]"; parameter Real K_x_T=0.0175 "Half-saturation (hydrolysis) at T=15 deg C [g Xs/(g Xbh COD)]"; parameter Real K_nh=1.0 "Half-saturation (auto. growth) [g NH-N/m3]"; parameter Real K_s=20.0 "Half-saturation (hetero. growth) [g COD/m3]"; parameter Real K_oh=0.2 "Half-saturation (hetero. oxygen) [g O/m3]"; parameter Real K_no=0.5 "Half-saturation (nitrate) [g NO-N/m3]"; parameter Real K_oa=0.4 "Half-saturation (auto. oxygen) [g O/m3]"; parameter Real ny_g=0.8 "Anoxic growth rate correction factor [-]"; parameter Real ny_h=0.4 "Anoxic hydrolysis rate correction factor [-]"; WWU.MassConcentration Si "Soluble inert organic matter"; WWU.MassConcentration Ss "Readily biodegradable substrate"; WWU.MassConcentration Xi "Particulate inert organic matter"; WWU.MassConcentration Xs "Slowly biodegradable substrate"; WWU.MassConcentration Xbh "Active heterotrophic biomass"; WWU.MassConcentration Xba "Active autotrophic biomass"; WWU.MassConcentration Xp "Particulate products from biomass decay"; WWU.MassConcentration So "Dissolved oxygen"; WWU.MassConcentration Sno "Nitrate and nitrite nitrogen"; WWU.MassConcentration Snh "Ammonium nitrogen"; WWU.MassConcentration Snd "Soluble biodegradable organic nitrogen"; WWU.MassConcentration Xnd "Particulate biodegradable organic nitrogen"; WWU.Alkalinity Salk "Alkalinity"; Real p1; Real p2; Real p3; Real p4; Real p5; Real p6; Real p7; Real p8; Real r1; Real r2; Real r3; Real r4; Real r5; Real r6; Real r7; Real r8; Real r9; Real r10; Real r11; Real r12; Real r13; Real inputSi; Real inputSs; Real inputXi; Real inputXs; Real inputXbh; Real inputXba; Real inputXp; Real inputSo; Real inputSno; Real inputSnh; Real inputSnd; Real inputXnd; Real inputSalk; Real aeration; Interfaces.WWFlowAsm1in In annotation (extent=[-110, -10; -90, 10]); Interfaces.WWFlowAsm1out Out annotation (extent=[90, -10; 110, 10]); Interfaces.WWFlowAsm1out MeasurePort annotation (extent=[50, 40; 60, 50]); Modelica.Blocks.Interfaces.InPort T(final n=1) annotation (extent=[-110, 30 ; -90, 50]); annotation ( Coordsys( extent=[-100, -100; 100, 100], grid=[2, 2], component=[20, 20]), Window( x=0.03, y=0.03, width=0.35, height=0.49), Documentation(info="This partial model provides connectors and equations that are needed in the biological components (nitrification and denitrification tank) for ASM1 wastewater treatment plant models. Parameters are coded according the ASM1 [1,2] standard distribution. Changes to this parameters are subject to the modeller. Main Author: Gerald Reichl Technische Universitaet Ilmenau Faculty of Informatics and Automation Department Dynamics and Simulation of ecological Systems P.O. Box 10 05 65 98684 Ilmenau Germany email: gerald.reichl@tu-ilmenau.de References: [1] M. Henze and C.P.L. Grady Jr and W. Gujer and G.v.R. Marais and T. Matsuo: Activated Sludge Model No.1. IAWQ, 1987. [2] M. Henze and W.Gujer and T. Mino and. M.v. Loosdrecht: Activated Sludge Models ASM1, ASM2, ASM2d, and ASM3. IWA Task Group on Mathematical Modelling for Design and Operation of Biological Wastewater Treatment, 2000. This package is free software; it can be redistributed and/or modified under the terms of the Modelica license, see the license conditions and the accompanying disclaimer in the documentation of package Modelica in file \"Modelica/package.mo\". Copyright (C) 2000 - 2002, Gerald Reichl ")); equation // Temperature dependent Kinetic parameters based on 15 deg C // // may be adapted to 10 or 20 deg C mu_h = mu_h_T*exp(0.069*(T.signal[1] - 15)); b_h = b_h_T*exp(0.069*(T.signal[1] - 15)); mu_a = mu_a_T*exp(0.098*(T.signal[1] - 15)); //K_nh=1.0*exp(0.069*(T.signal[1]-15)); b_a = b_a_T*exp(0.08*(T.signal[1] - 15)); k_a = k_a_T*exp(0.069*(T.signal[1] - 15)); k_h = k_h_T*exp(0.11*(T.signal[1] - 15)); K_x = K_x_T*exp(0.11*(T.signal[1] - 15)); // Process Rates // p1 = mu_h*(Ss/(K_s + Ss))*(So/(K_oh + So))*Xbh; p2 = mu_h*(Ss/(K_s + Ss))*(K_oh/(K_oh + So))*(Sno/(K_no + Sno))*ny_g*Xbh; p3 = mu_a*(Snh/(K_nh + Snh))*(So/(K_oa + So))*Xba; p4 = b_h*Xbh; p5 = b_a*Xba; p6 = k_a*Snd*Xbh; p7 = k_h*((Xs/Xbh)/(K_x + (Xs/Xbh)))*((So/(K_oh + So)) + ny_h*(K_oh/(K_oh + So))*(Sno/(K_no + Sno)))*Xbh; p8 = p7*Xnd/Xs; // biochemical reactions r1 = 0; r2 = (-p1 - p2)/Y_h + p7; r3 = 0; r4 = (1 - f_p)*(p4 + p5) - p7; r5 = p1 + p2 - p4; r6 = p3 - p5; r7 = f_p*(p4 + p5); r8 = -((1 - Y_h)/Y_h)*p1 - ((4.57 - Y_a)/Y_a)*p3; r9 = -((1 - Y_h)/(2.86*Y_h))*p2 + p3/Y_a; r10 = -i_xb*(p1 + p2) - (i_xb + (1/Y_a))*p3 + p6; r11 = -p6 + p8; r12 = (i_xb - f_p*i_xp)*(p4 + p5) - p8; r13 = -i_xb/14*p1 + ((1 - Y_h)/(14*2.86*Y_h) - (i_xb/14))*p2 - ((i_xb/14) + 1/(7*Y_a))*p3 + p6/14; // derivatives der(Si) = inputSi + r1; der(Ss) = inputSs + r2; der(Xi) = inputXi + r3; der(Xs) = inputXs + r4; der(Xbh) = inputXbh + r5; der(Xba) = inputXba + r6; der(Xp) = inputXp + r7; der(So) = inputSo + r8 + aeration; der(Sno) = inputSno + r9; der(Snh) = inputSnh + r10; der(Snd) = inputSnd + r11; der(Xnd) = inputXnd + r12; der(Salk) = inputSalk + r13; // Outputs Out.Q + In.Q = 0; Out.Si = Si; Out.Ss = Ss; Out.Xi = Xi; Out.Xs = Xs; Out.Xbh = Xbh; Out.Xba = Xba; Out.Xp = Xp; Out.So = So; Out.Sno = Sno; Out.Snh = Snh; Out.Snd = Snd; Out.Xnd = Xnd; Out.Salk = Salk; MeasurePort.Si = Si; MeasurePort.Ss = Ss; MeasurePort.Xi = Xi; MeasurePort.Xs = Xs; MeasurePort.Xbh = Xbh; MeasurePort.Xba = Xba; MeasurePort.Xp = Xp; MeasurePort.So = So; MeasurePort.Sno = Sno; MeasurePort.Snh = Snh; MeasurePort.Snd = Snd; MeasurePort.Xnd = Xnd; MeasurePort.Salk = Salk; end ASM1base; annotation ( Coordsys( extent=[0, 0; 442, 386], grid=[1, 1], component=[20, 20]), Window( x=0.45, y=0.01, width=0.44, height=0.65, library=1, autolayout=1), Documentation(info="This package contains connectors and interfaces (partial models) for wastewater treatment components based on the Acticated Sludge Model No.1 (ASM1). Main Author: Gerald Reichl Technische Universitaet Ilmenau Faculty of Informatics and Automation Department Dynamics and Simulation of ecological Systems P.O. Box 10 05 65 98684 Ilmenau Germany This package is free software; it can be redistributed and/or modified under the terms of the Modelica license, see the license conditions and the accompanying disclaimer in the documentation of package Modelica in file \"Modelica/package.mo\". Copyright (C) 2000 - 2001, Gerald Reichl ")); end Interfaces;