Skip to content. Skip to navigation

Modeling of Complex Physical Systems

Sections
Personal tools
You are here: Home Events Modelica'2003 WasteWater ASM2d Interfaces.mo
Document Actions

Interfaces.mo

by Administrator last modified 2006-10-17 05:34 PM

Click here to get the file

Size 26.4 kB - File type text/html

File contents

package Interfaces 
  "Connectors and partial ASM2d model for Waste Water Treatment Modelling" 
  
  extends Modelica.Icons.Library;
  
  connector WWFlowAsm2din "Inflow connector of ASM2d components" 
    
    package WWU = WasteWater.WasteWaterUnits;
    flow WWU.VolumeFlowRate Q;
    WWU.MassConcentration So;
    WWU.MassConcentration Sf;
    WWU.MassConcentration Sa;
    WWU.MassConcentration Snh;
    WWU.MassConcentration Sno;
    WWU.MassConcentration Spo;
    WWU.MassConcentration Si;
    WWU.Alkalinity Salk;
    WWU.MassConcentration Sn2;
    WWU.MassConcentration Xi;
    WWU.MassConcentration Xs;
    WWU.MassConcentration Xh;
    WWU.MassConcentration Xpao;
    WWU.MassConcentration Xpp;
    WWU.MassConcentration Xpha;
    WWU.MassConcentration Xa;
    WWU.MassConcentration Xtss;
    WWU.MassConcentration Xmeoh;
    WWU.MassConcentration Xmep;
    
    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 WWFlowAsm2din and WWFlowAsm2dout 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 19 potential variables (ASM2d concentrations).
"));
    
  end WWFlowAsm2din;
  connector WWFlowAsm2dout "Outflow connector of ASM2d components" 
    
    package WWU = WasteWater.WasteWaterUnits;
    
    flow WWU.VolumeFlowRate Q;
    WWU.MassConcentration So;
    WWU.MassConcentration Sf;
    WWU.MassConcentration Sa;
    WWU.MassConcentration Snh;
    WWU.MassConcentration Sno;
    WWU.MassConcentration Spo;
    WWU.MassConcentration Si;
    WWU.Alkalinity Salk;
    WWU.MassConcentration Sn2;
    WWU.MassConcentration Xi;
    WWU.MassConcentration Xs;
    WWU.MassConcentration Xh;
    WWU.MassConcentration Xpao;
    WWU.MassConcentration Xpp;
    WWU.MassConcentration Xpha;
    WWU.MassConcentration Xa;
    WWU.MassConcentration Xtss;
    WWU.MassConcentration Xmeoh;
    WWU.MassConcentration Xmep;
    
    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 WWFlowAsm2din and WWFlowAsm2dout 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 19 potential variables (ASM2d concentrations).
"));
    
  end WWFlowAsm2dout;
  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]), 
      Window(
        x=0.45, 
        y=0.01, 
        width=0.35, 
        height=0.49), 
      Documentation(info="The Airflow connector consits of a flow variable describing the exchange of
air between blower and nitrification tank."));
    
  end AirFlow;
  partial model conversion_factors "ASM2d conversion factors" 
    
    // Typical conversion factors for conservation equation //
    parameter Real i_N_Si=0.01 "N content of inert soluble COD Si [gN/gCOD]";
    parameter Real i_N_Sf=0.03 
      "N content of fermentable substrates Sf [gN/gCOD]";
    parameter Real i_N_Xi=0.02 
      "N content of inert particulate COD Xi [gN/gCOD]";
    parameter Real i_N_Xs=0.04 
      "N content of slowly biodegradable substrate Xs [gN/gCOD]";
    parameter Real i_N_BM=0.07 "N content of biomass, Xh, Xpao, Xa [gN/gCOD]";
    parameter Real i_P_Si=0.0 "P content of inert soluble COD Si [gP/gCOD]";
    parameter Real i_P_Sf=0.01 
      "P content of fermentable substrates Sf [gP/gCOD]";
    parameter Real i_P_Xi=0.01 
      "P content of inert particulate COD Xi [gP/gCOD]";
    parameter Real i_P_Xs=0.01 
      "P content of slowly biodegradable substrate Xs [gP/gCOD]";
    parameter Real i_P_BM=0.02 "P content of biomass, Xh, Xpao, Xa [gP/gCOD]";
    parameter Real i_TSS_Xi=0.75 "TSS to COD ratio for Xi [gTSS/gCOD]";
    parameter Real i_TSS_Xs=0.75 "TSS to COD ratio for Xs [gTSS/gCOD]";
    parameter Real i_TSS_BM=0.9 
      "TSS to COD ratio for biomass, Xh, Xpao, Xa [gTSS/gCOD]";
    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 conversion factors of the ASM2d model."
        ));
    
  end conversion_factors;
  partial model ASM2dbase "Base class of WWTP modelling by ASM2d" 
    
    package WWU = WasteWater.WasteWaterUnits;
    
    extends Interfaces.conversion_factors;
    
    // Typical stoichiometric parameters //
    
    parameter Real f_Si=0.0 "Production of Si in hydrolysis [gCOD/gCOD]";
    parameter Real Y_H=0.625 "Yield coefficient [gCOD/gCOD]";
    parameter Real f_Xih=0.1 
      "Fraction of inert COD generated in biomass lysis [gCOD/gCOD]";
    parameter Real Y_PAO=0.625 "Yield coefficient (biomass/PHA) [gCOD/gCOD]";
    parameter Real Y_PO=0.4 
      "PP requirement (PO4 release) per PHA stored [gP/gCOD]";
    parameter Real Y_PHA=0.2 "PHA requirement for PP storage [gCOD/gP]";
    parameter Real f_Xip=0.1 
      "Fraction of inert COD generated in biomass lysis [gCOD/gCOD]";
    parameter Real Y_A=0.24 "Yield of autotrophic biomass per NO3-N [gCOD/gN]";
    parameter Real f_Xia=0.1 
      "Fraction of inert COD generated in biomass lysis [gCOD/gCOD]";
    
    // Stochiometric coefficients for Snh4, Spo4, Salk and Xtss //
    parameter Real v_1_NH=i_N_Xs - (1 - f_Si)*i_N_Sf - f_Si*i_N_Si;
    parameter Real v_2_NH=i_N_Xs - (1 - f_Si)*i_N_Sf - f_Si*i_N_Si;
    parameter Real v_3_NH=i_N_Xs - (1 - f_Si)*i_N_Sf - f_Si*i_N_Si;
    parameter Real v_4_NH=i_N_Sf/Y_H - i_N_BM;
    parameter Real v_5_NH=-i_N_BM;
    parameter Real v_6_NH=i_N_Sf/Y_H - i_N_BM;
    parameter Real v_7_NH=-i_N_BM;
    parameter Real v_8_NH=i_N_Sf;
    parameter Real v_9_NH=i_N_BM - f_Xih*i_N_Xi - (1 - f_Xih)*i_N_Xs;
    //parameter Real v_10_NH =0;
    //parameter Real v_11_NH =0;
    //parameter Real v_12_NH =0;
    parameter Real v_13_NH=-i_N_BM;
    parameter Real v_14_NH=-i_N_BM;
    parameter Real v_15_NH=i_N_BM - f_Xip*i_N_Xi - (1 - f_Xip)*i_N_Xs;
    //parameter Real v_16_NH =0;
    //parameter Real v_17_NH =0;
    parameter Real v_18_NH=-1/Y_A - i_N_BM;
    parameter Real v_19_NH=i_N_BM - f_Xia*i_N_Xi - (1 - f_Xia)*i_N_Xs;
    
    parameter Real v_1_PO=i_P_Xs - (1 - f_Si)*i_P_Sf - f_Si*i_P_Si;
    parameter Real v_2_PO=i_P_Xs - (1 - f_Si)*i_P_Sf - f_Si*i_P_Si;
    parameter Real v_3_PO=i_P_Xs - (1 - f_Si)*i_P_Sf - f_Si*i_P_Si;
    parameter Real v_4_PO=i_P_Sf/Y_H - i_P_BM;
    parameter Real v_5_PO=-i_P_BM;
    parameter Real v_6_PO=i_P_Sf/Y_H - i_P_BM;
    parameter Real v_7_PO=-i_P_BM;
    parameter Real v_8_PO=i_P_Sf;
    parameter Real v_9_PO=i_P_BM - f_Xih*i_P_Xi - (1 - f_Xih)*i_P_Xs;
    parameter Real v_15_PO=i_P_BM - f_Xip*i_P_Xi - (1 - f_Xip)*i_P_Xs;
    parameter Real v_19_PO=i_P_BM - f_Xia*i_P_Xi - (1 - f_Xia)*i_P_Xs;
    
    parameter Real v_12_NO=-Y_PHA/2.86;
    parameter Real v_14_NO=-(1 - Y_PAO)/(2.86*Y_PAO);
    parameter Real v_12_N2=-v_12_NO;
    parameter Real v_14_N2=-v_14_NO;
    
    parameter Real v_1_ALK=v_1_NH/14 + v_1_PO*(-1.5/31);
    parameter Real v_2_ALK=v_2_NH/14 + v_2_PO*(-1.5/31);
    parameter Real v_3_ALK=v_3_NH/14 + v_3_PO*(-1.5/31);
    parameter Real v_4_ALK=v_4_NH/14 + v_4_PO*(-1.5/31);
    parameter Real v_5_ALK=1/(Y_H*64) + v_5_NH/14 + v_5_PO*(-1.5/31);
    parameter Real v_6_ALK=v_6_NH/14 + (1 - Y_H)/(2.86*Y_H*14) + v_6_PO*(-1.5/
        31);
    parameter Real v_7_ALK=1/(Y_H*64) + v_7_NH/14 + (1 - Y_H)/(2.86*Y_H*14) + 
        v_7_PO*(-1.5/31);
    parameter Real v_8_ALK=v_8_NH/14 + v_8_PO*(-1.5/31) - 1/64;
    parameter Real v_9_ALK=v_9_NH/14 + v_9_PO*(-1.5/31);
    parameter Real v_10_ALK=1/64 + Y_PO*(-1.5/31) - Y_PO*(-1/31);
    parameter Real v_11_ALK=(1.5 - 1)/31;
    parameter Real v_12_ALK=v_12_NO*(-1/14) + (1.5 - 1)/31;
    parameter Real v_13_ALK=v_13_NH/14 - i_P_BM*(-1.5/31);
    parameter Real v_14_ALK=v_14_NH/14 - v_14_NO/14 - i_P_BM*(-1.5/31);
    parameter Real v_15_ALK=v_15_NH/14 + v_15_PO*(-1.5/31);
    parameter Real v_16_ALK=(1 - 1.5)/31;
    parameter Real v_17_ALK=-1/64;
    parameter Real v_18_ALK=v_18_NH/14 - 1/(Y_A*14) - i_P_BM*(-1.5/31);
    parameter Real v_19_ALK=v_19_NH/14 + v_19_PO*(-1.5/31);
    parameter Real v_20_ALK=1.5/31;
    parameter Real v_21_ALK=-1.5/31;
    
    parameter Real v_1_TSS=-i_TSS_Xs;
    parameter Real v_2_TSS=-i_TSS_Xs;
    parameter Real v_3_TSS=-i_TSS_Xs;
    parameter Real v_4_TSS=i_TSS_BM;
    parameter Real v_5_TSS=i_TSS_BM;
    parameter Real v_6_TSS=i_TSS_BM;
    parameter Real v_7_TSS=i_TSS_BM;
    //parameter Real v_8_TSS =0;
    parameter Real v_9_TSS=f_Xih*i_TSS_Xi + (1 - f_Xih)*i_TSS_Xs - i_TSS_BM;
    parameter Real v_10_TSS=-Y_PO*3.23 + 0.6;
    parameter Real v_11_TSS=3.23 - Y_PHA*0.6;
    parameter Real v_12_TSS=3.23 - Y_PHA*0.6;
    parameter Real v_13_TSS=i_TSS_BM - 0.6/Y_PAO;
    parameter Real v_14_TSS=i_TSS_BM - 0.6/Y_PAO;
    parameter Real v_15_TSS=f_Xip*i_TSS_Xi + (1 - f_Xip)*i_TSS_Xs - i_TSS_BM;
    parameter Real v_16_TSS=-3.23;
    parameter Real v_17_TSS=-0.6;
    parameter Real v_18_TSS=i_TSS_BM;
    parameter Real v_19_TSS=f_Xia*i_TSS_Xi + (1 - f_Xia)*i_TSS_Xs - i_TSS_BM;
    
    parameter Real v_13_O=-(1 - Y_PAO)/Y_PAO;
    
    // Temperature dependency for 20 deg C = a^(T-20) 
    //
    // Heterotrophs, fermentation	a=1.07
    // Nitrification			a=1.12
    // Phosphotrophs, hydrolysis	a=1.04
    // temperature dependent processes
    
    // Hydrolysis of particulate substrate: Xs //
    Real K_h "Hydrolysis rate [d^-1]";
    parameter Real K_h_T=3.0 "Hydrolysis rate at T=20 deg C [d^-1]";
    parameter Real eta_NO_Xs=0.6 "Anoxic hydrolysis reduction factor [-]";
    parameter Real eta_fe=0.4 "Anaerobic hydrolysis reduction factor [-]";
    parameter Real K_O_Xs=0.2 
      "Saturation/inhibition coefficient for oxygen [g O2/m3]";
    parameter Real K_NO_Xs=0.5 
      "Saturation/inhibition coefficient for nitrate [g N/m3]";
    parameter Real K_X=0.1 
      "Saturation coefficient for particulate COD [g Xs/(g Xh)]";
    
    // Heterotrophic organisms: Xh //
    Real mu_H "Maximum growth rate on substrate [g Xs/(g Xh)/d]";
    parameter Real mu_H_T=6.0 
      "Maximum growth rate on substrate at T=20 deg C [g Xs/(g Xh)/d]";
    Real rho_fe "Maximum rate for fermentation [g Sf/(g Xh)/d]";
    parameter Real rho_fe_T=3.0 
      "Maximum rate for fermentation at T=20 deg C [g Sf/(g Xh)/d]";
    parameter Real eta_NO_Xh=0.8 "Reduction factor for denitrification [-]";
    Real b_H "Rate for lysis and decay [d^-1]";
    parameter Real b_H_T=0.4 "Rate for lysis and decay at T=20 deg C [d^-1]";
    parameter Real K_O_Xh=0.2 
      "Saturation/inhibition coefficient for oxygen [g O2/m3]";
    parameter Real K_F=4.0 "Saturation coefficient for growth on Sf [g COD/m3]"
      ;
    parameter Real K_fe=4.0 
      "Saturation coefficient for fermentation of Sf [g COD/m3]";
    parameter Real K_A_Xh=4.0 
      "Saturation coefficient for growth on acetate Sa [g COD/m3]";
    parameter Real K_NO_Xh=0.5 
      "Saturation/inhibition coefficient for nitrate [g N/m3]";
    parameter Real K_NH_Xh=0.05 
      "Saturation coefficient for ammonium (nutrient) [g N/m3]";
    parameter Real K_P_Xh=0.01 
      "Saturation coefficient for phosphate (nutrient) [g P/m3]";
    parameter Real K_ALK_Xh=0.1 
      "Saturation coefficient for alkalinity (HCO3) [mole HCO3/m3]";
    
    // Phosphorus-accumulating organisms: Xpao //
    Real rho_PHA "Rate for storage of Xpha (base Xpp) [g Xpha/(g Xpao)/d]";
    parameter Real rho_PHA_T=3.0 
      "Rate for storage of Xpha (base Xpp) at T=20 deg C [g Xpha/(g Xpao)/d]";
    Real rho_PP "Rate for storage of Xpp [g Xpp/(g Xpao)/d]";
    parameter Real rho_PP_T=1.5 
      "Rate for storage of Xpp at T=20 deg C [g Xpp/(g Xpao)/d]";
    Real mu_PAO "Maximum growth rate of PAO [d^-1]";
    parameter Real mu_PAO_T=1.0 
      "Maximum growth rate of PAO at T=20 deg C [d^-1]";
    parameter Real eta_NO_Xpao=0.6 "Reduction factor for anoxic activity [-]";
    Real b_PAO "Rate for lysis of Xpao [d^-1]";
    parameter Real b_PAO_T=0.2 "Rate for lysis of Xpao at T=20 deg C [d^-1]";
    Real b_PP "Rate for lysis of Xpp [d^-1]";
    parameter Real b_PP_T=0.2 "Rate for lysis of Xpp at T=20 dedg C [d^-1]";
    Real b_PHA "Rate for lysis of Xpha [d^-1]";
    parameter Real b_PHA_T=0.2 "Rate for lysis of Xpha at T=20 deg C [d^-1]";
    parameter Real K_O_Xpao=0.2 
      "Saturation/inhibition coefficient for oxygen [g O2/m3]";
    parameter Real K_NO_Xpao=0.5 
      "Saturation coefficient for nitrate, Sno3 [g N/m3]";
    parameter Real K_A_Xpao=4.0 
      "Saturation coefficient for acetate, Sa [g COD/m3]";
    parameter Real K_NH_Xpao=0.05 
      "Saturation coefficient for ammonium (nutrient) [g N/m3]";
    parameter Real K_PS=0.2 
      "Saturation coefficient for phosphorus in storage of PP [g P/m3]";
    parameter Real K_P_Xpao=0.01 
      "Saturation coefficient for phosphate (nutrient) [g P/m3]";
    parameter Real K_ALK_Xpao=0.1 
      "Saturation coefficient for alkalinity (HCO3) [mole HCO3/m3]";
    parameter Real K_PP=0.01 
      "Saturation coefficient for poly-phosphate [g Xpp/(g Xpao)]";
    parameter Real K_MAX=0.34 "Maximum ratio of Xpp/Xpao [g Xpp/(g Xpao)]";
    parameter Real K_IPP=0.02 
      "Inhibition coefficient for PP storage [g Xpp/(g Xpao)]";
    parameter Real K_PHA=0.01 
      "Saturation coefficient for PHA [g Xpha/(g Xpao)]";
    
    // Nitrifying organisms (autotrophic organisms): Xa //
    Real mu_AUT "Maximum growth rate of Xa [d^-1]";
    parameter Real mu_AUT_T=1.0 
      "Maximum growth rate of Xa at T=20 deg C [d^-1]";
    Real b_AUT "Decay rate of Xa [d^-1]";
    parameter Real b_AUT_T=0.15 "Decay rate of Xa at T=20 deg C [d^-1]";
    parameter Real K_O_Xa=0.5 "Saturation coefficient for oxygen [g O2/m3]";
    parameter Real K_NH_Xa=1.0 
      "Saturation coefficient for ammonium (substrate) [g N/m3]";
    parameter Real K_ALK_Xa=0.5 
      "Saturation coefficient for alkalinity (HCO3) [mole HCO3/m3]";
    parameter Real K_P_Xa=0.01 
      "Saturation coefficient for phosphate (nutrient) [g P/m3]";
    
    // Precipitation //
    parameter Real k_PRE=1.0 
      "Rate constant for P precipitation [m3/(g Fe(OH3))/d]";
    parameter Real k_RED=0.6 "Rate constant for redissolution [d^-1]";
    parameter Real K_ALK_Pre=0.5 
      "Saturation coefficient for alkalinity [mole HCO3/m3]";
    
    WWU.MassConcentration So "Dissolved oxygen";
    WWU.MassConcentration Sf "Readily biodegradable substrate";
    WWU.MassConcentration Sa "Fermentation products";
    WWU.MassConcentration Snh "Ammonium";
    WWU.MassConcentration Sno "Nitrate (plus nitrite)";
    WWU.MassConcentration Spo "Phosphate";
    WWU.MassConcentration Si "Inert, non biodegradable organics";
    WWU.Alkalinity Salk "Bicarbonate alkalinity";
    WWU.MassConcentration Sn2 "Dinitrogen";
    WWU.MassConcentration Xi "Inert, non biodegradable organics";
    WWU.MassConcentration Xs "Slowly biodegradable substrate";
    WWU.MassConcentration Xh "Heterotrophic biomass";
    WWU.MassConcentration Xpao "Phosphorus-accumulating organisms, PAO";
    WWU.MassConcentration Xpp "Stored poly-phosphate of PAO";
    WWU.MassConcentration Xpha "Oragnic storage products of PAO";
    WWU.MassConcentration Xa "Autotrophic, nitrifying biomass";
    WWU.MassConcentration Xmeoh "Ferric-hydroxide Fe(OH)3";
    WWU.MassConcentration Xmep "Ferric-phosphate FePO4";
    WWU.MassConcentration Xtss "Particulate material as model component";
    
    Real p1;
    Real p2;
    Real p3;
    Real p4;
    Real p5;
    Real p6;
    Real p7;
    Real p8;
    Real p9;
    Real p10;
    Real p11;
    Real p12;
    Real p13;
    Real p14;
    Real p15;
    Real p16;
    Real p17;
    Real p18;
    Real p19;
    Real p20;
    Real p21;
    
    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 r14;
    Real r15;
    Real r16;
    Real r17;
    Real r18;
    Real r19;
    
    Real inputSo;
    Real inputSf;
    Real inputSa;
    Real inputSnh;
    Real inputSno;
    Real inputSpo;
    Real inputSi;
    Real inputSalk;
    Real inputSn2;
    Real inputXi;
    Real inputXs;
    Real inputXh;
    Real inputXpao;
    Real inputXpp;
    Real inputXpha;
    Real inputXa;
    Real inputXtss;
    Real inputXmeoh;
    Real inputXmep;
    Real aeration;
    
    Interfaces.WWFlowAsm2din In annotation (extent=[-110, -10; -90, 10]);
    Interfaces.WWFlowAsm2dout Out annotation (extent=[90, -10; 110, 10]);
    Interfaces.WWFlowAsm2dout 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.4, 
        y=0, 
        width=0.6, 
        height=0.77), 
      Documentation(info="This partial model provides connectors and equations that are needed in the biological 
components (nitrification and denitrification tank) for ASM2d wastewater treatment plant models.
Parameters are coded according the ASM2d [1] 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 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) 2001 - 2002, Gerald Reichl
"));
  equation 
    
    // Temperature dependent Kinetic parameters based on 20 deg C //
    K_h = K_h_T*1.0414^(T.signal[1] - 20);
    mu_H = mu_H_T*1.07177^(T.signal[1] - 20);
    rho_fe = rho_fe_T*1.07177^(T.signal[1] - 20);
    b_H = b_H_T*1.07177^(T.signal[1] - 20);
    rho_PHA = rho_PHA_T*1.0414^(T.signal[1] - 20);
    rho_PP = rho_PP_T*1.0414^(T.signal[1] - 20);
    mu_PAO = mu_PAO_T*1.0409^(T.signal[1] - 20);
    b_PAO = b_PAO_T*1.07177^(T.signal[1] - 20);
    b_PP = b_PP_T*1.07177^(T.signal[1] - 20);
    b_PHA = b_PHA_T*1.07177^(T.signal[1] - 20);
    mu_AUT = mu_AUT_T*1.1107^(T.signal[1] - 20);
    b_AUT = b_AUT_T*1.1161^(T.signal[1] - 20);
    
    // Process Rates //
    
    //Hydrolysis processes Xs//
    p1 = K_h*(So/(K_O_Xs + So))*((Xs/Xh)/(K_X + Xs/Xh))*Xh;
    p2 = K_h*eta_NO_Xs*(K_O_Xs/(K_O_Xs + So))*(Sno/(K_NO_Xs + Sno))*((Xs/Xh)/(
      K_X + Xs/Xh))*Xh;
    p3 = K_h*eta_fe*(K_O_Xs/(K_O_Xs + So))*(K_NO_Xs/(K_NO_Xs + Sno))*((Xs/Xh)/(
      K_X + Xs/Xh))*Xh;
    
    //Heterotrophic organisms Xh//
    p4 = mu_H*(So/(K_O_Xh + So))*(Sf/(K_F + Sf))*(Sf/(Sf + Sa))*(Snh/(K_NH_Xh
       + Snh))*(Spo/(K_P_Xh + Spo))*(Salk/(K_ALK_Xh + Salk))*Xh;
    p5 = mu_H*(So/(K_O_Xh + So))*(Sa/(K_A_Xh + Sa))*(Sa/(Sf + Sa))*(Snh/(
      K_NH_Xh + Snh))*(Spo/(K_P_Xh + Spo))*(Salk/(K_ALK_Xh + Salk))*Xh;
    p6 = mu_H*eta_NO_Xh*(K_O_Xh/(K_O_Xh + So))*(Sno/(K_NO_Xh + Sno))*(Sf/(K_F
       + Sf))*(Sf/(Sf + Sa))*(Snh/(K_NH_Xh + Snh))*(Spo/(K_P_Xh + Spo))*(Salk/(
      K_ALK_Xh + Salk))*Xh;
    p7 = mu_H*eta_NO_Xh*(K_O_Xh/(K_O_Xh + So))*(Sno/(K_NO_Xh + Sno))*(Sa/(
      K_A_Xh + Sa))*(Sa/(Sf + Sa))*(Snh/(K_NH_Xh + Snh))*(Spo/(K_P_Xh + Spo))*(
      Salk/(K_ALK_Xh + Salk))*Xh;
    p8 = rho_fe*(K_O_Xh/(K_O_Xh + So))*(K_NO_Xh/(K_NO_Xh + Sno))*(Sf/(K_F + Sf)
      )*(Salk/(K_ALK_Xh + Salk))*Xh;
    p9 = b_H*Xh;
    
    //Phosphorus-accumulating organisms Xpao//
    p10 = rho_PHA*(Sa/(K_A_Xpao + Sa))*(Salk/(K_ALK_Xpao + Salk))*((Xpp/Xpao)/(
      K_PP + Xpp/Xpao))*Xpao;
    p11 = rho_PP*(So/(K_O_Xpao + So))*(Spo/(K_PS + Spo))*(Salk/(K_ALK_Xpao + 
      Salk))*((Xpha/Xpao)/(K_PHA + Xpha/Xpao))*((K_MAX - Xpp/Xpao)/(K_PP + 
      K_MAX - Xpp/Xpao))*Xpao;
    p12 = p11*eta_NO_Xpao*(K_O_Xpao/So)*(Sno/(K_NO_Xpao + Sno));
    p13 = mu_PAO*(So/(K_O_Xpao + So))*(Snh/(K_NH_Xpao + Snh))*(Spo/(K_P_Xpao + 
      Spo))*(Salk/(K_ALK_Xpao + Salk))*((Xpha/Xpao)/(K_PHA + Xpha/Xpao))*Xpao;
    p14 = p13*eta_NO_Xpao*(K_O_Xpao/So)*(Sno/(K_NO_Xpao + Sno));
    p15 = b_PAO*Xpao*(Salk/(K_ALK_Xpao + Salk));
    p16 = b_PP*Xpp*(Salk/(K_ALK_Xpao + Salk));
    p17 = b_PHA*Xpha*(Salk/(K_ALK_Xpao + Salk));
    
    //Nitirying organisms Xa//
    p18 = mu_AUT*(So/(K_O_Xa + So))*(Snh/(K_NH_Xa + Snh))*(Spo/(K_P_Xa + Spo))*
      (Salk/(K_ALK_Xa + Salk))*Xa;
    p19 = b_AUT*Xa;
    
    //Precipitation Pre//
    p20 = k_PRE*Spo*Xmeoh;
    p21 = k_RED*Xmep*(Salk/(K_ALK_Pre + Salk));
    
    // biochemical reactions //
    r1 = (1 - 1/Y_H)*p4 + (1 - 1/Y_H)*p5 - Y_PHA*p11 + v_13_O*p13 - ((4.57 - 
      Y_A)/Y_A)*p18;
    r2 = (1 - f_Si)*p1 + (1 - f_Si)*p2 + (1 - f_Si)*p3 - (1/Y_H)*p4 - (1/Y_H)*
      p6 - p8;
    r3 = -(1/Y_H)*p5 - (1/Y_H)*p7 + p8 - p10 + p17;
    r4 = v_1_NH*p1 + v_2_NH*p2 + v_3_NH*p3 + v_4_NH*p4 + v_5_NH*p5 + v_6_NH*p6
       + v_7_NH*p7 + v_8_NH*p8 + v_9_NH*p9 + v_13_NH*p13 + v_14_NH*p14 + 
      v_15_NH*p15 + v_18_NH*p18 + v_19_NH*p19;
    r5 = -((1 - Y_H)/(2.86*Y_H))*p6 - ((1 - Y_H)/(2.86*Y_H))*p7 + v_12_NO*p12
       + v_14_NO*p14 + (1/Y_A)*p18;
    r6 = v_1_PO*p1 + v_2_PO*p2 + v_3_PO*p3 + v_4_PO*p4 + v_5_PO*p5 + v_6_PO*p6
       + v_7_PO*p7 + v_8_PO*p8 + v_9_PO*p9 + Y_PO*p10 - p11 - p12 - i_P_BM*p13
       - i_P_BM*p14 + v_15_PO*p15 + p16 - i_P_BM*p18 + v_19_PO*p19 - p20 + p21;
    r7 = f_Si*p1 + f_Si*p2 + f_Si*p3;
    r8 = v_1_ALK*p1 + v_2_ALK*p2 + v_3_ALK*p3 + v_4_ALK*p4 + v_5_ALK*p5 + 
      v_6_ALK*p6 + v_7_ALK*p7 + v_8_ALK*p8 + v_9_ALK*p9 + v_10_ALK*p10 + 
      v_11_ALK*p11 + v_12_ALK*p12 + v_13_ALK*p13 + v_14_ALK*p14 + v_15_ALK*p15
       + v_16_ALK*p16 + v_17_ALK*p17 + v_18_ALK*p18 + v_19_ALK*p19 + v_20_ALK*
      p20 + v_21_ALK*p21;
    r9 = ((1 - Y_H)/(2.86*Y_H))*p6 + ((1 - Y_H)/(2.86*Y_H))*p7 + v_12_N2*p12 + 
      v_14_N2*p14;
    r10 = f_Xih*p9 + f_Xip*p15 + f_Xia*p19;
    r11 = -p1 - p2 - p3 + (1 - f_Xih)*p9 + (1 - f_Xip)*p15 + (1 - f_Xia)*p19;
    r12 = p4 + p5 + p6 + p7 - p9;
    r13 = p13 + p14 - p15;
    r14 = -Y_PO*p10 + p11 + p12 - p16;
    r15 = p10 - Y_PHA*p11 - Y_PHA*p12 - (1/Y_PAO)*p13 - (1/Y_PAO)*p14 - p17;
    r16 = p18 - p19;
    r17 = v_1_TSS*p1 + v_2_TSS*p2 + v_3_TSS*p3 + v_4_TSS*p4 + v_5_TSS*p5 + 
      v_6_TSS*p6 + v_7_TSS*p7 + v_9_TSS*p9 + v_10_TSS*p10 + v_11_TSS*p11 + 
      v_12_TSS*p12 + v_13_TSS*p13 + v_14_TSS*p14 + v_15_TSS*p15 + v_16_TSS*p16
       + v_17_TSS*p17 + v_18_TSS*p18 + v_19_TSS*p19 + 1.42*p20 - 1.42*p21;
    r18 = -3.45*p20 + 3.45*p21;
    r19 = 4.87*p20 - 4.87*p21;
    
    // derivatives //
    der(So) = inputSo + r1 + aeration;
    der(Sf) = inputSf + r2;
    der(Sa) = inputSa + r3;
    der(Snh) = inputSnh + r4;
    der(Sno) = inputSno + r5;
    der(Spo) = inputSpo + r6;
    der(Si) = inputSi + r7;
    der(Salk) = inputSalk + r8;
    der(Sn2) = inputSn2 + r9;
    der(Xi) = inputXi + r10;
    der(Xs) = inputXs + r11;
    der(Xh) = inputXh + r12;
    der(Xpao) = inputXpao + r13;
    der(Xpp) = inputXpp + r14;
    der(Xpha) = inputXpha + r15;
    der(Xa) = inputXa + r16;
    der(Xtss) = inputXtss + r17;
    der(Xmeoh) = inputXmeoh + r18;
    der(Xmep) = inputXmep + r19;
    
    // Outputs
    Out.Q + In.Q = 0;
    Out.So = So;
    Out.Sf = Sf;
    Out.Sa = Sa;
    Out.Snh = Snh;
    Out.Sno = Sno;
    Out.Spo = Spo;
    Out.Si = Si;
    Out.Salk = Salk;
    Out.Sn2 = Sn2;
    Out.Xi = Xi;
    Out.Xs = Xs;
    Out.Xh = Xh;
    Out.Xpao = Xpao;
    Out.Xpp = Xpp;
    Out.Xpha = Xpha;
    Out.Xa = Xa;
    Out.Xtss = Xtss;
    Out.Xmeoh = Xmeoh;
    Out.Xmep = Xmep;
    
    MeasurePort.So = So;
    MeasurePort.Sf = Sf;
    MeasurePort.Sa = Sa;
    MeasurePort.Snh = Snh;
    MeasurePort.Sno = Sno;
    MeasurePort.Spo = Spo;
    MeasurePort.Si = Si;
    MeasurePort.Salk = Salk;
    MeasurePort.Sn2 = Sn2;
    MeasurePort.Xi = Xi;
    MeasurePort.Xs = Xs;
    MeasurePort.Xh = Xh;
    MeasurePort.Xpao = Xpao;
    MeasurePort.Xpp = Xpp;
    MeasurePort.Xpha = Xpha;
    MeasurePort.Xa = Xa;
    MeasurePort.Xtss = Xtss;
    MeasurePort.Xmeoh = Xmeoh;
    MeasurePort.Xmep = Xmep;
    
  end ASM2dbase;
  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.2d (ASM2d).

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) 2001 - 2002, Gerald Reichl
"));
end Interfaces;

Powered by Plone CMS, the Open Source Content Management System