ADM1 Property Package

This package implements properties and reactions of an anaerobic digestion model for industrial wastewater treatment from food and beverage production using an anaerobic digester as provided in Batstone, D. J. et al. (2002) and Rosen and Jeppsson (2006).

This Anaerobic Digestion Model no.1 (ADM1) property/reaction package:
  • supports ‘H2O’, ‘S_su’, ‘S_aa’, ‘S_fa’, ‘S_va’, ‘S_bu’, ‘S_pro’, ‘S_ac’, ‘S_h2’, ‘S_ch4’, ‘S_IC’, ‘S_IN’, ‘S_I’, ‘X_c’, ‘X_ch’, ‘X_pr’, ‘X_li’, ‘X_su’, ‘X_aa’, ‘X_fa’, ‘X_c4’, ‘X_pro’, ‘X_ac’, ‘X_h2’, ‘X_I’, ‘S_cat’, ‘S_an’, and ‘S_co2’ as components

  • supports only liquid and vapor phase

Sets

Description

Symbol

Indices

Components

\(j\)

[‘H2O’, ‘S_su’, ‘S_aa’, ‘S_fa’, ‘S_va’, ‘S_bu’, ‘S_pro’, ‘S_ac’, ‘S_h2’, ‘S_ch4’, ‘S_IC’, ‘S_IN’, ‘S_I’, ‘X_c’, ‘X_ch’, ‘X_pr’, ‘X_li’, ‘X_su’, ‘X_aa’, ‘X_fa’, ‘X_c4’, ‘X_pro’, ‘X_ac’, ‘X_h2’, ‘X_I’, ‘S_cat’, ‘S_an’, ‘S_co2’]

Phases

\(p\)

[‘Liq’, ‘Vap’]

Components

Description

Symbol

Variable

Monosaccharides, S_su

\(S_{su}\)

S_su

Amino acids, S_aa

\(S_{aa}\)

S_aa

Long chain fatty acids, S_fa

\(S_{fa}\)

S_fa

Total valerate, S_va

\(S_{va}\)

S_va

Total butyrate, S_bu

\(S_{bu}\)

S_bu

Total propionate, S_pro

\(S_{pro}\)

S_pro

Total acetate, S_ac

\(S_{ac}\)

S_ac

Hydrogen gas, S_h2

\(S_{h2}\)

S_h2

Methane gas, S_ch4

\(S_{ch4}\)

S_ch4

Inorganic carbon, S_IC

\(S_{IC}\)

S_IC

Inorganic nitrogen, S_IN

\(S_{IN}\)

S_IN

Soluble inerts, S_I

\(S_I\)

S_I

Composites, X_c

\(X_c\)

X_c

Carbohydrates, X_ch

\(X_{ch}\)

X_ch

Proteins, X_pr

\(X_{pr}\)

X_pr

Lipids, X_li

\(X_{li}\)

X_li

Sugar degraders, X_su

\(X_{su}\)

X_su

Amino acid degraders, X_aa

\(X_{aa}\)

X_aa

Long chain fatty acid (LCFA) degraders, X_fa

\(X_{fa}\)

X_fa

Valerate and butyrate degraders, X_c4

\(X_{c4}\)

X_c4

Propionate degraders, X_pro

\(X_{pro}\)

X_pro

Acetate degraders, X_ac

\(X_{ac}\)

X_ac

Hydrogen degraders, X_h2

\(X_{h2}\)

X_h2

Particulate inerts, X_I

\(X_I\)

X_I

Total cation equivalents concentration, S_cat

\(S_{cat}\)

S_cat

Total anion equivalents concentration, S_an

\(S_{an}\)

S_an

Carbon dioxide, S_co2

\(S_{co2}\)

S_co2

NOTE: S_h2 and S_ch4 have vapor phase and liquid phase, S_co2 only has vapor phase, and the other components only have liquid phase. The amount of CO2 dissolved in the liquid phase is equivalent to S_IC - S_HCO3-.

State variables

Description

Symbol

Variable

Index

Units

Total volumetric flowrate

\(Q\)

flow_vol

None

\(\text{m}^3\text{/s}\)

Temperature

\(T\)

temperature

None

\(\text{K}\)

Pressure

\(P\)

pressure

None

\(\text{Pa}\)

Component mass concentrations

\(C_j\)

conc_mass_comp

[j]

\(\text{kg/}\text{m}^3\)

Anions in molar concentrations

\(M_a\)

anions

None

\(\text{kmol/}\text{m}^3\)

Cations in molar concentrations

\(M_c\)

cations

None

\(\text{kmol/}\text{m}^3\)

Component pressure

\(P_{j,sat}\)

pressure_sat

[j]

\(\text{Pa}\)

Reference temperature

\(T_{ref}\)

temperature_ref

None

\(\text{K}\)

Reference component mass concentrations

\(C_{j,ref}\)

conc_mass_comp_ref

[j]

\(\text{kg/}\text{m}^3\)

Stoichiometric Parameters

Description

Symbol

Parameter

Value at 20 C

Units

Soluble inerts from composites, f_sI_xc

\(f_{sI,xc}\)

f_sI_xc

0.1

\(\text{dimensionless}\)

Particulate inerts from composites, f_xI_xc

\(f_{xI,xc}\)

f_xI_xc

0.2

\(\text{dimensionless}\)

Carbohydrates from composites, f_ch_xc

\(f_{ch,xc}\)

f_ch_xc

0.2

\(\text{dimensionless}\)

Proteins from composites, f_pr_xc

\(f_{pr,xc}\)

f_pr_xc

0.2

\(\text{dimensionless}\)

Lipids from composites, f_li_xc

\(f_{li,xc}\)

f_li_xc

0.3

\(\text{dimensionless}\)

Nitrogen content of composites, N_xc

\(N_{xc}\)

N_xc

0.0376/14

\(\text{kmol-N/}\text{kg-COD}\)

Nitrogen content of inerts, N_I

\(N_I\)

N_I

0.06/14

\(\text{kmol-N/}\text{kg-COD}\)

Nitrogen in amino acids and proteins, N_aa

\(N_{aa}\)

N_aa

0.007

\(\text{kmol-N/}\text{kg-COD}\)

Nitrogen content in bacteria, N_bac

\(N_{bac}\)

N_bac

0.08/14

\(\text{kmol-N/}\text{kg-COD}\)

Fatty acids from lipids, f_fa_li

\(f_{fa,li}\)

f_fa_li

0.95

\(\text{dimensionless}\)

Hydrogen from sugars, f_h2_su

\(f_{h2,su}\)

f_h2_su

0.19

\(\text{dimensionless}\)

Butyrate from sugars, f_bu_su

\(f_{bu,su}\)

f_bu_su

0.13

\(\text{dimensionless}\)

Propionate from sugars, f_pro_su

\(f_{pro,su}\)

f_pro_su

0.27

\(\text{dimensionless}\)

Acetate from sugars, f_ac_su

\(f_{ac,su}\)

f_ac_su

0.41

\(\text{dimensionless}\)

Hydrogen from amino acids, f_h2_aa

\(f_{h2,aa}\)

f_h2_aa

0.06

\(\text{dimensionless}\)

Valerate from amino acids, f_va_aa

\(f_{va,aa}\)

f_va_aa

0.23

\(\text{dimensionless}\)

Butyrate from amino acids, f_bu_aa

\(f_{bu,aa}\)

f_bu_aa

0.26

\(\text{dimensionless}\)

Propionate from amino acids, f_pro_aa

\(f_{pro,aa}\)

f_pro_aa

0.05

\(\text{dimensionless}\)

Acetate from amino acids, f_ac_aa

\(f_{ac,aa}\)

f_ac_aa

0.4

\(\text{dimensionless}\)

Yield of biomass on sugar substrate, Y_su

\(Y_{su}\)

Y_su

0.1

\(\text{kg-COD X/}\text{kg-COD S}\)

Yield of biomass on amino acid substrate, Y_aa

\(Y_{aa}\)

Y_aa

0.08

\(\text{kg-COD X/}\text{kg-COD S}\)

Yield of biomass on fatty acid substrate, Y_fa

\(Y_{fa}\)

Y_fa

0.06

\(\text{kg-COD X/}\text{kg-COD S}\)

Yield of biomass on valerate and butyrate substrate, Y_c4

\(Y_{c4}\)

Y_c4

0.06

\(\text{kg-COD X/}\text{kg-COD S}\)

Yield of biomass on propionate substrate, Y_pro

\(Y_{pro}\)

Y_pro

0.04

\(\text{kg-COD X/}\text{kg-COD S}\)

Yield of biomass on acetate substrate, Y_ac

\(Y_{ac}\)

Y_ac

0.05

\(\text{kg-COD X/}\text{kg-COD S}\)

Yield of hydrogen per biomass, Y_h2

\(Y_{h2}\)

Y_h2

0.06

\(\text{kg-COD X/}\text{kg-COD S}\)

Kinetic Parameters

Description

Symbol

Parameter

Value at 20 C

Units

First-order kinetic parameter for disintegration, k_dis

\(k_{dis}\)

k_dis

0.5

\(\text{d}^{-1}\)

First-order kinetic parameter for hydrolysis of carbohydrates, k_hyd_ch

\(k_{hyd,ch}\)

k_hyd_ch

10

\(\text{d}^{-1}\)

First-order kinetic parameter for hydrolysis of proteins, k_hyd_pr

\(k_{hyd,pr}\)

k_hyd_pr

10

\(\text{d}^{-1}\)

First-order kinetic parameter for hydrolysis of lipids, k_hyd_li

\(k_{hyd,li}\)

k_hyd_li

10

\(\text{d}^{-1}\)

Inhibition parameter for inorganic nitrogen, K_S_IN

\(K_{S_{IN}}\)

K_S_IN

1e-4

\(\text{kmol/}\text{m}^3\)

Monod maximum specific uptake rate of sugars, k_m_su

\(k_{m_{su}}\)

k_m_su

30

\(\text{d}^{-1}\)

Half saturation value for uptake of sugars, K_S_su

\(K_{S_{su}}\)

K_S_su

0.5

\(\text{kg/}\text{m}^3\)

Upper limit of pH for uptake rate of amino acids, pH_UL_aa

\(pH_{UL,aa}\)

pH_UL_aa

5.5

\(\text{dimensionless}\)

Lower limit of pH for uptake rate of amino acids, pH_LL_aa

\(pH_{LL,aa}\)

pH_LL_aa

4

\(\text{dimensionless}\)

Monod maximum specific uptake rate of amino acids, k_m_aa

\(k_{m_{aa}}\)

k_m_aa

50

\(\text{d}^{-1}\)

Half saturation value for uptake of amino acids, K_S_aa

\(K_{S_{aa}}\)

K_S_aa

0.3

\(\text{kg/}\text{m}^3\)

Monod maximum specific uptake rate of fatty acids, k_m_fa

\(k_{m_{fa}}\)

k_m_fa

6

\(\text{d}^{-1}\)

Half saturation value for uptake of fatty acids, K_S_fa

\(K_{S_{fa}}\)

K_S_fa

0.4

\(\text{kg/}\text{m}^3\)

Inhibition parameter for hydrogen during uptake of fatty acids, K_I_h2_fa

\(K_{I,h2_{fa}}\)

K_I_h2_fa

5e-6

\(\text{kg/}\text{m}^3\)

Monod maximum specific uptake rate of valerate and butyrate, k_m_c4

\(k_{m_{c4}}\)

k_m_c4

20

\(\text{d}^{-1}\)

Half saturation value for uptake of valerate and butyrate, K_S_c4

\(K_{S_{c4}}\)

K_S_c4

0.2

\(\text{kg/}\text{m}^3\)

Inhibition parameter for hydrogen during uptake of valerate and butyrate, K_I_h2_c4

\(K_{I,h2_{c4}}\)

K_I_h2_c4

1e-5

\(\text{kg/}\text{m}^3\)

Monod maximum specific uptake rate of propionate, k_m_pro

\(k_{m_{pro}}\)

k_m_pro

13

\(\text{d}^{-1}\)

Half saturation value for uptake of propionate, K_S_pro

\(K_{S_{pro}}\)

K_S_pro

0.1

\(\text{kg/}\text{m}^3\)

Inhibition parameter for hydrogen during uptake of propionate, K_I_h2_pro

\(K_{I,h2_{pro}}\)

K_I_h2_pro

3.5e-6

\(\text{kg/}\text{m}^3\)

Monod maximum specific uptake rate of acetate, k_m_ac

\(k_{m_{ac}}\)

k_m_ac

8

\(\text{d}^{-1}\)

Half saturation value for uptake of acetate, K_S_ac

\(K_{S_{ac}}\)

K_S_ac

0.15

\(\text{kg/}\text{m}^3\)

Inhibition parameter for ammonia during uptake of acetate, K_I_nh3

\(K_{I,nh3}\)

K_I_nh3

0.0018

\(\text{kg/}\text{m}^3\)

Upper limit of pH for uptake rate of acetate, pH_UL_ac

\(pH_{UL,ac}\)

pH_UL_ac

7

\(\text{dimensionless}\)

Lower limit of pH for uptake rate of acetate, pH_LL_ac

\(pH_{LL,ac}\)

pH_LL_ac

6

\(\text{dimensionless}\)

Monod maximum specific uptake rate of hydrogen, k_m_h2

\(k_{m_{h2}}\)

k_m_h2

35

\(\text{d}^{-1}\)

Half saturation value for uptake of hydrogen, K_S_h2

\(K_{S_{h2}}\)

K_S_h2

7e-6

\(\text{kg/}\text{m}^3\)

Upper limit of pH for uptake rate of hydrogen, pH_UL_h2

\(pH_{UL,h2}\)

pH_UL_h2

6

\(\text{dimensionless}\)

Lower limit of pH for uptake rate of hydrogen, pH_LL_h2

\(pH_{LL,h2}\)

pH_LL_h2

5

\(\text{dimensionless}\)

First-order decay rate for X_su, k_dec_X_su

\(k_{dec,X_{su}}\)

k_dec_X_su

0.02

\(\text{d}^{-1}\)

First-order decay rate for X_aa, k_dec_X_aa

\(k_{dec,X_{aa}}\)

k_dec_X_aa

0.02

\(\text{d}^{-1}\)

First-order decay rate for X_fa, k_dec_X_fa

\(k_{dec,X_{fa}}\)

k_dec_X_fa

0.02

\(\text{d}^{-1}\)

First-order decay rate for X_c4, k_dec_X_c4

\(k_{dec,X_{c4}}\)

k_dec_X_c4

0.02

\(\text{d}^{-1}\)

First-order decay rate for X_pro, k_dec_X_pro

\(k_{dec,X_{pro}}\)

k_dec_X_pro

0.02

\(\text{d}^{-1}\)

First-order decay rate for X_ac, k_dec_X_ac

\(k_{dec,X_{ac}}\)

k_dec_X_ac

0.02

\(\text{d}^{-1}\)

First-order decay rate for X_h2, k_dec_X_h2

\(k_{dec,X_{h2}}\)

k_dec_X_h2

0.02

\(\text{d}^{-1}\)

Water dissociation constant, pK_W

\(pK_W\)

pKW

14

\(\text{dimensionless}\)

Process inhibition term, I

\(I\)

I

1

\(\text{dimensionless}\)

Valerate acid-base equilibrium constant, K_a_va

\(K_{a,va}\)

K_a_va

1.38e-5

\(\text{kmol/}\text{m}^3\)

Butyrate acid-base equilibrium constant, K_a_bu

\(K_{a,bu}\)

K_a_bu

1.5e-5

\(\text{kmol/}\text{m}^3\)

Propionate acid-base equilibrium constant, K_a_pro

\(K_{a,pro}\)

K_a_bu

1.32e-5

\(\text{kmol/}\text{m}^3\)

Acetate acid-base equilibrium constant, K_a_ac

\(K_{a,ac}\)

K_a_ac

1.74e-5

\(\text{kmol/}\text{m}^3\)

Carbon dioxide acid-base equilibrium constant, pK_a_co2

\(pK_{a,co2}\)

pK_a_co2

6.35

\(\text{dimensionless}\)

Inorganic nitrogen acid-base equilibrium constant, pK_a_IN

\(pK_{a,IN}\)

pK_a_IN

9.25

\(\text{dimensionless}\)

Properties

Description

Symbol

Variable

Index

Units

Fluid specific heat capacity

\(c_p\)

cp

None

\(\text{J/kg/K}\)

Mass density

\(\rho\)

dens_mass

[p]

\(\text{kg/}\text{m}^3\)

Process Rate Equations

Description

Equation

Disintegration

\(\rho_1 = k_{dis} C_{X_c}\)

Hydrolysis of carbohydrates

\(\rho_2 = k_{hyd,ch} C_{X_{ch}}\)

Hydrolysis of proteins

\(\rho_3 = k_{hyd,pr} C_{X_{pr}}\)

Hydrolysis of lipids

\(\rho_4 = k_{hyd,li} C_{X_{li}}\)

Uptake of sugars

\(\rho_5 = k_{m_{su}} \frac{C_{S_{su}}}{K_{S_{su}}+C_{S_{su}}} C_{X_{su}} \frac{1}{1 + K_{S_{IN}}/C_{S_{IN}}/14} I_{pH,aa}\)

Uptake of amino acids

\(\rho_6 = k_{m_{aa}} \frac{C_{S_{aa}}}{K_{S_{aa}}+C_{S_{aa}}} C_{X_{aa}} \frac{1}{1 + K_{S_{IN}}/C_{S_{IN}}/14} I_{pH,aa}\)

Uptake of long chain fatty acids (LCFAs)

\(\rho_7 = k_{m_{fa}} \frac{C_{S_{fa}}}{K_{S_{fa}}+C_{S_{fa}}} C_{X_{fa}} \frac{1}{1 + K_{S_{IN}}/C_{S_{IN}}/14} \cdot \frac{1}{1 + C_{S_{h2}}/K_{I,h2_{fa}}} I_{pH,aa}\)

Uptake of valerate

\(\rho_8 = k_{m_{c4}} \frac{C_{S_{va}}}{K_{S_{c4}}+C_{S_{va}}} C_{X_{c4}} \frac{C_{S_{va}}}{C_{S_{bu}} + C_{S_{va}}} \cdot \frac{1}{1 + K_{S_{IN}}/C_{S_{IN}}/14} \cdot \frac{1}{1 + C_{S_{h2}}/K_{I,h2_{c4}}} I_{pH,aa}\)

Uptake of butyrate

\(\rho_9 = k_{m_{c4}} \frac{C_{S_{bu}}}{K_{S_{c4}}+C_{S_{bu}}} C_{X_{c4}} \frac{C_{S_{bu}}}{C_{S_{bu}} + C_{S_{va}}} \cdot \frac{1}{1 + K_{S_{IN}}/C_{S_{IN}}/14} \cdot \frac{1}{1 + C_{S_{h2}}/K_{I,h2_{c4}}} I_{pH,aa}\)

Uptake of propionate

\(\rho_{10} = k_{m_{pro}} \frac{C_{S_{pro}}}{K_{S_{pro}}+C_{S_{pro}}} C_{X_{pro}} \cdot \frac{1}{1 + K_{S_{IN}}/C_{S_{IN}}/14} \cdot \frac{1}{1 + C_{S_{h2}}/K_{I,h2_{pro}}} I_{pH,aa}\)

Uptake of acetate

\(\rho_{11} = k_{m_{ac}} \frac{C_{S_{ac}}}{K_{S_{ac}}+C_{S_{ac}}} C_{X_{ac}} \cdot \frac{1}{1 + K_{S_{IN}}/C_{S_{IN}}/14} \cdot \frac{1}{1 + C_{NH3}/K_{I,nh3}} I_{pH,ac}\)

Uptake of hydrogen

\(\rho_{12} = k_{m_{h2}} \frac{C_{S_{h2}}}{K_{S_{h2}}+C_{S_{h2}}} C_{X_{h2}} \cdot \frac{1}{1 + K_{S_{IN}}/C_{S_{IN}}/14} I_{pH,h2}\)

Decay of X_su

\(\rho_{13} = k_{dec, X_{su}} C_{X_{su}}\)

Decay of X_aa

\(\rho_{14} = k_{dec, X_{aa}} C_{X_{aa}}\)

Decay of X_fa

\(\rho_{15} = k_{dec, X_{fa}} C_{X_{fa}}\)

Decay of X_c4

\(\rho_{16} = k_{dec, X_{c4}} C_{X_{c4}}\)

Decay of X_pro

\(\rho_{17} = k_{dec, X_{pro}} C_{X_{pro}}\)

Decay of X_ac

\(\rho_{18} = k_{dec, X_{ac}} C_{X_{ac}}\)

Decay of X_h2

\(\rho_{19} = k_{dec, X_{h2}} C_{X_{h2}}\)

Additional Variables

Description

Symbol

Parameter

Value at 20 C

Units

Molar concentration of hydrogen, S_H

\(S_{H}\)

S_H

1e-7

\(\text{kmol/}\text{m}^3\)

pH of solution

\(pH\)

pH

7

\(\text{dimensionless}\)

Mass concentration of valerate, va-

\(C_{va}\)

conc_mass_va

0.011

\(\text{kg/}\text{m}^3\)

Mass concentration of butyrate, bu-

\(C_{bu}\)

conc_mass_bu

0.013

\(\text{kg/}\text{m}^3\)

Mass concentration of propionate, pro-

\(C_{pro}\)

conc_mass_pro

0.016

\(\text{kg/}\text{m}^3\)

Mass concentration of acetate, ac-

\(C_{ac}\)

conc_mass_ac

0.2

\(\text{kg/}\text{m}^3\)

Molar concentration of bicarbonate, HCO3

\(M_{hco3}\)

conc_mol_hco3

0.14

\(\text{kmol/}\text{m}^3\)

Molar concentration of ammonia, NH3

\(M_{nh3}\)

conc_mol_nh3

0.0041

\(\text{kmol/}\text{m}^3\)

Molar concentration of carbon dioxide, CO2

\(M_{co2}\)

conc_mol_co2

0.0099

\(\text{kmol/}\text{m}^3\)

Molar concentration of ammonium, NH4

\(M_{nh4}\)

conc_mol_nh4

0.1261

\(\text{kmol/}\text{m}^3\)

Additional Constraints

Description

Equation

Water dissociation constant constraint

\(log(10^{-pK_{W}}) = log(10^{-14}) + (\frac{55900}{R} * (\frac{1}{T_{ref}} - \frac{1}{T}))\)

CO2 acid-base equilibrium constraint

\(log(10^{-pK_{a,co2}}) = log(10^{-6.35}) + (\frac{7646}{R} * (\frac{1}{T_{ref}} - \frac{1}{T}))\)

Nitrogen acid-base equilibrium constraint

\(log(10^{-pK_{a,IN}}) = log(10^{-9.25}) + (\frac{51965}{R} * (\frac{1}{T_{ref}} - \frac{1}{T}))\)

pH of solution

\(pH = -log(S_{H})\)

Mass concentration of valerate, va-

\(C_{va,ref} = C_{va} (1 + \frac{S_{H}}{K_{a,va}})\)

Mass concentration of butyrate, bu-

\(C_{bu,ref} = C_{bu} (1 + \frac{S_{H}}{K_{a,bu}})\)

Mass concentration of propionate, pro-

\(C_{pro,ref} = C_{pro} (1 + \frac{S_{H}}{K_{a,pro}})\)

Mass concentration of acetate, ac-

\(C_{ac,ref} = C_{ac} (1 + \frac{S_{H}}{K_{a,ac}})\)

Molar concentration of bicarbonate, HCO3

\(pK_{a,co2} = log(M_{co2}) - log(M_{hco3}) + pH\)

Molar concentration of ammonia, NH3

\(pK_{a,IN} = log(M_{nh4}) - log(M_{nh3}) + pH\)

Molar concentration of carbon dioxide, CO2

\(M_{co2} = \frac{C_{S_{IC},ref}}{12} - M_{hco3}\)

Molar concentration of ammonium, NH4+

\(M_{nh4} = \frac{C_{S_{IN},ref}}{14} - M_{nh3}\)

Molar concentration of hydrogen, H+

\(S_{H} = M_{hco3} + \frac{C_{ac}}{64} + \frac{C_{pro}}{112} + \frac{C_{bu}}{160} + \frac{C_{va}}{208} + 10^{pH - pK_{W}} + M_{a} - M_{c} - M_{nh4}\)

The rules for pH inhibition of amino-acid-utilizing microorganisms (\(I_{pH,aa}\)), acetate-utilizing microorganisms (\(I_{pH,ac}\)), and hydrogen-utilizing microorganisms (\(I_{pH,h2}\)) are:

\[ \begin{align}\begin{aligned}\begin{split}I_{pH,aa}= \begin{cases} \exp{(-3 (\frac{pH - pH_{UL,aa}}{pH_{UL,aa} - pH_{LL,aa}})^2)} & \text{for } pH \le pH_{UL,aa}\\ 1 & \text{for } pH > pH_{UL,aa} \end{cases}\end{split}\\\begin{split}I_{pH,ac}= \begin{cases} \exp{(-3 (\frac{pH - pH_{UL,ac}}{pH_{UL,ac} - pH_{LL,ac}})^2)} & \text{for } pH \le pH_{UL,ac}\\ 1 & \text{for } pH > pH_{UL,ac} \end{cases}\end{split}\\\begin{split}I_{pH,h2}= \begin{cases} \exp{(-3 (\frac{pH - pH_{UL,h2}}{pH_{UL,h2} - pH_{LL,h2}})^2)} & \text{for } pH \le pH_{UL,h2}\\ 1 & \text{for } pH > pH_{UL,h2} \end{cases}\end{split}\end{aligned}\end{align} \]

The rules for inhibition related to secondary substrate (\(I_{IN,lim}\)), hydrogen inhibition attributed to long chain fatty acids (\(I_{h2,fa}\)), hydrogen inhibition attributed to valerate and butyrate uptake (\(I_{h2,c4}\)), hydrogen inhibition attributed to propionate uptake (\(I_{h2,pro}\)), ammonia inibition attributed to acetate uptake (\(I_{nh3}\)), are:

\[ \begin{align}\begin{aligned}I_{IN,lim} = \frac{1}{1 + \frac{K_{S_{IN}}}{C_{S_{IN}}/14}}\\I_{h2, fa}= \frac{1}{1 + \frac{C_{S_{h2}}}{K_{I,h2,fa}}}\\I_{h2, c4}= \frac{1}{1 + \frac{C_{S_{h2}}}{K_{I,h2,c4}}}\\I_{h2, pro}= \frac{1}{1 + \frac{C_{S_{h2}}}{K_{I,h2,pro}}}\\I_{nh3}= \frac{1}{1 + \frac{M_{nh3}}{K_{I,nh3}}}\end{aligned}\end{align} \]

Class Documentation

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_properties.ADM1ParameterBlock(*args, **kwds)
Parameters:
  • rule (function) – A rule function or None. Default rule calls build().

  • concrete (bool) – If True, make this a toplevel model. Default - False.

  • ctype (class) –

    Pyomo ctype of the block. Default - pyomo.environ.Block

    Config args

    default_arguments

    Default arguments to use with Property Package

  • initialize (dict) – ProcessBlockData config for individual elements. Keys are BlockData indexes and values are dictionaries with config arguments as keys.

  • idx_map (function) – Function to take the index of a BlockData element and return the index in the initialize dict from which to read arguments. This can be provided to override the default behavior of matching the BlockData index exactly to the index in initialize.

Returns:

(ADM1ParameterBlock) New instance

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_properties.ADM1ParameterData(component)[source]

Property Parameter Block Class

build()[source]

Callable method for Block construction.

classmethod define_metadata(obj)[source]

Set all the metadata for properties and units.

This method should be implemented by subclasses. In the implementation, they should set information into the object provided as an argument.

Parameters:

pcm (PropertyClassMetadata) – Add metadata to this object.

Returns:

None

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_properties._ADM1StateBlock(*args, **kwds)[source]

This Class contains methods which should be applied to Property Blocks as a whole, rather than individual elements of indexed Property Blocks.

initialize(state_args=None, state_vars_fixed=False, hold_state=False, outlvl=0, solver=None, optarg=None)[source]

Initialization routine for property package.

Keyword Arguments:
  • state_args – Dictionary with initial guesses for the state vars chosen. Note that if this method is triggered through the control volume, and if initial guesses were not provided at the unit model level, the control volume passes the inlet values as initial guess.The keys for the state_args dictionary are:

  • flow_mol_comp – value at which to initialize component flows (default=None)

  • pressure – value at which to initialize pressure (default=None)

  • temperature – value at which to initialize temperature (default=None)

  • outlvl – sets output level of initialization routine

  • state_vars_fixed – Flag to denote if state vars have already been fixed. True - states have already been fixed and initialization does not need to worry about fixing and unfixing variables. False - states have not been fixed. The state block will deal with fixing/unfixing.

  • optarg – solver options dictionary object (default=None, use default solver options)

  • solver – str indicating which solver to use during initialization (default = None, use default solver)

  • hold_state – flag indicating whether the initialization routine should unfix any state variables fixed during initialization (default=False). True - states variables are not unfixed, and a dict of returned containing flags for which states were fixed during initialization. False - state variables are unfixed after initialization by calling the release_state method.

Returns:

If hold_states is True, returns a dict containing flags for which states were fixed during initialization.

release_state(flags, outlvl=0)[source]

Method to release state variables fixed during initialization.

Keyword Arguments:
  • flags – dict containing information of which state variables were fixed during initialization, and should now be unfixed. This dict is returned by initialize if hold_state=True.

  • outlvl – sets output level of logging

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_properties.ADM1StateBlockData(*args, **kwargs)[source]

StateBlock for calculating thermophysical properties associated with the ADM1 reaction system.

build()[source]

Callable method for Block construction

define_display_vars()[source]

Method used to specify components to use to generate stream tables and other outputs. Defaults to define_state_vars, and developers should overload as required.

define_state_vars()[source]

Method that returns a dictionary of state variables used in property package. Implement a placeholder method which returns an Exception to force users to overload this.

get_energy_density_terms(p)[source]

Method which returns a valid expression for enthalpy density to use in the energy balances.

get_enthalpy_flow_terms(p)[source]

Method which returns a valid expression for enthalpy flow to use in the energy balances.

get_material_density_terms(p, j)[source]

Method which returns a valid expression for material density to use in the material balances .

get_material_flow_basis()[source]

Method which returns an Enum indicating the basis of the material flow term.

get_material_flow_terms(p, j)[source]

Method which returns a valid expression for material flow to use in the material balances.

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_properties_vapor.ADM1_vaporParameterBlock(*args, **kwds)
Parameters:
  • rule (function) – A rule function or None. Default rule calls build().

  • concrete (bool) – If True, make this a toplevel model. Default - False.

  • ctype (class) –

    Pyomo ctype of the block. Default - pyomo.environ.Block

    Config args

    default_arguments

    Default arguments to use with Property Package

  • initialize (dict) – ProcessBlockData config for individual elements. Keys are BlockData indexes and values are dictionaries with config arguments as keys.

  • idx_map (function) – Function to take the index of a BlockData element and return the index in the initialize dict from which to read arguments. This can be provided to override the default behavior of matching the BlockData index exactly to the index in initialize.

Returns:

(ADM1_vaporParameterBlock) New instance

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_properties_vapor.ADM1_vaporParameterData(component)[source]

Property Parameter Block Class

build()[source]

Callable method for Block construction.

classmethod define_metadata(obj)[source]

Set all the metadata for properties and units.

This method should be implemented by subclasses. In the implementation, they should set information into the object provided as an argument.

Parameters:

pcm (PropertyClassMetadata) – Add metadata to this object.

Returns:

None

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_properties_vapor._ADM1_vaporStateBlock(*args, **kwds)[source]

This Class contains methods which should be applied to Property Blocks as a whole, rather than individual elements of indexed Property Blocks.

initialize(state_args=None, state_vars_fixed=False, hold_state=False, outlvl=0, solver=None, optarg=None)[source]

Initialization routine for property package.

Keyword Arguments:
  • state_args – Dictionary with initial guesses for the state vars chosen. Note that if this method is triggered through the control volume, and if initial guesses were not provided at the unit model level, the control volume passes the inlet values as initial guess.The keys for the state_args dictionary are:

  • flow_mol_comp – value at which to initialize component flows (default=None)

  • pressure – value at which to initialize pressure (default=None)

  • temperature – value at which to initialize temperature (default=None)

  • outlvl – sets output level of initialization routine

  • state_vars_fixed – Flag to denote if state vars have already been fixed. True - states have already been fixed and initialization does not need to worry about fixing and unfixing variables. False - states have not been fixed. The state block will deal with fixing/unfixing.

  • optarg – solver options dictionary object (default=None, use default solver options)

  • solver – str indicating which solver to use during initialization (default = None, use default solver)

  • hold_state – flag indicating whether the initialization routine should unfix any state variables fixed during initialization (default=False). True - states variables are not unfixed, and a dict of returned containing flags for which states were fixed during initialization. False - state variables are unfixed after initialization by calling the release_state method

Returns:

If hold_states is True, returns a dict containing flags for which states were fixed during initialization.

release_state(flags, outlvl=0)[source]

Method to release state variables fixed during initialization.

Keyword Arguments:
  • flags – dict containing information of which state variables were fixed during initialization, and should now be unfixed. This dict is returned by initialize if hold_state=True.

  • outlvl – sets output level of logging

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_properties_vapor.ADM1_vaporStateBlockData(*args, **kwargs)[source]

StateBlock for calculating thermophysical properties associated with the ADM1 reaction system.

build()[source]

Callable method for Block construction

define_display_vars()[source]

Method used to specify components to use to generate stream tables and other outputs. Defaults to define_state_vars, and developers should overload as required.

define_state_vars()[source]

Method that returns a dictionary of state variables used in property package. Implement a placeholder method which returns an Exception to force users to overload this.

get_energy_density_terms(p)[source]

Method which returns a valid expression for enthalpy density to use in the energy balances.

get_enthalpy_flow_terms(p)[source]

Method which returns a valid expression for enthalpy flow to use in the energy balances.

get_material_density_terms(p, j)[source]

Method which returns a valid expression for material density to use in the material balances .

get_material_flow_basis()[source]

Method which returns an Enum indicating the basis of the material flow term.

get_material_flow_terms(p, j)[source]

Method which returns a valid expression for material flow to use in the material balances.

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_reactions.ADM1ReactionParameterBlock(*args, **kwds)
Parameters:
  • rule (function) – A rule function or None. Default rule calls build().

  • concrete (bool) – If True, make this a toplevel model. Default - False.

  • ctype (class) –

    Pyomo ctype of the block. Default - pyomo.environ.Block

    Config args

    property_package

    Reference to associated PropertyPackageParameter object

    default_arguments

    Default arguments to use with Property Package

  • initialize (dict) – ProcessBlockData config for individual elements. Keys are BlockData indexes and values are dictionaries with config arguments as keys.

  • idx_map (function) – Function to take the index of a BlockData element and return the index in the initialize dict from which to read arguments. This can be provided to override the default behavior of matching the BlockData index exactly to the index in initialize.

Returns:

(ADM1ReactionParameterBlock) New instance

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_reactions.ADM1ReactionParameterData(component)[source]

Property Parameter Block Class

build()[source]

Callable method for Block construction.

classmethod define_metadata(obj)[source]

Set all the metadata for properties and units.

This method should be implemented by subclasses. In the implementation, they should set information into the object provided as an argument.

Parameters:

pcm (PropertyClassMetadata) – Add metadata to this object.

Returns:

None

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_reactions._ADM1ReactionBlock(*args, **kwds)[source]

This Class contains methods which should be applied to Reaction Blocks as a whole, rather than individual elements of indexed Reaction Blocks.

initialize(outlvl=0, **kwargs)[source]

Initialization routine for reaction package.

Keyword Arguments:

outlvl – sets output level of initialization routine

Returns:

None

class watertap.property_models.unit_specific.anaerobic_digestion.adm1_reactions.ADM1ReactionBlockData(*args, **kwargs)[source]

ReactionBlock for ADM1.

build()[source]

Callable method for Block construction

get_reaction_rate_basis()[source]

Method which returns an Enum indicating the basis of the reaction rate term.

References

[1] Batstone, D.J., Keller, J., Angelidaki, I., Kalyuzhnyi, S.V., Pavlostathis, S.G., Rozzi, A., Sanders, W.T.M., Siegrist, H.A. and Vavilin, V.A., 2002. The IWA anaerobic digestion model no 1 (ADM1). Water Science and technology, 45(10), pp.65-73. https://iwaponline.com/wst/article-abstract/45/10/65/6034

[2] Rosen, C. and Jeppsson, U., 2006. Aspects on ADM1 Implementation within the BSM2 Framework. Department of Industrial Electrical Engineering and Automation, Lund University, Lund, Sweden, pp.1-35. https://www.iea.lth.se/WWTmodels_download/TR_ADM1.pdf