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
- default_scaler
alias of
ADM1PropertiesScaler
- 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.
- default_scaler
alias of
ADM1ReactionScaler
- 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