Air-Water Equilibrium (AWE) Property Package

This property package implements property relationships for an aqueous liquid phase in equilibrium with a vapor phase.

The AWE property package:
  • contains a liquid and a vapor phase;

  • sets H2O as the solvent for the liquid phase;

  • sets air as the solvent for the vapor phase;

  • uses mass flowrate (kg/s), pressure, and temperature as state variables;

  • does not support dynamics

Configuration

The AWE property package has several configuration options depending on the user’s preferences. These are set via a Python dict when building the flowsheet. Details of the implications of different configuration options are described in a later section.

Option

Description

Default

Required

Units

Form

solute_list

Solute names in stream

User provided

Yes

n/a

list

mw_data

Molecular weight in for solutes in solute_list

User provided

Yes

\(\text{kg/}\text{mol}\)

dict

diffusivity_data

Liquid and vapor phase diffusivity data

User provided

No

\(\text{kg/}\text{m s}\)

dict with (phase, solute) keys

molar_volume_data

Molar volume data for solutes

User provided

No

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

dict with solute keys

critical_molar_volume_data

Critical molar volume data for solutes

User provided

No

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

dict with solute keys

density_data

Liquid and vapor phase density data

{'Liq': 998.2, 'Vap': 1.204}1

No

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

dict with phase keys

dynamic_viscosity_data

Liquid and vapor phase dynamic viscosity data

{'Liq': 1e-3, 'Vap': 1.813e-5}1

No

\(\text{Pa}\text{ s}\)

dict with phase keys

henry_constant_data

Dimensionless Henry’s Constant data for solutes

User provided

No

\(\text{dimensionless}\)

dict with solute keys

temp_adjust_henry

Boolean to indicate if Henry’s Constant should be temperature adjusted

True

No

\(\text{N/A}\)

bool

standard_enthalpy_change_data

Standard enthalpy change of dissolution in water data for solutes

User provided

No

\(\text{J/}\text{mol}\)

dict with solute keys

temperature_boiling_data

Boiling temperature data for solutes

User provided

No

\(\text{K}\)

dict with solute keys

charge_data

Charge data for solutes

User provided

No

\(\text{K}\)

dict with solute keys

liq_diffus_calculation

Approach for liquid diffusivity calculation

Hayduk-Laudie

No

\(\text{N/A}\)

str

vap_diffus_calculation

Approach for vapor diffusivity calculation

Wilke-Lee

No

\(\text{N/A}\)

str

molar_volume_calculation

Approach for molar volume calculation

Tyn-Calus

No

\(\text{N/A}\)

str

Note

1 default values are for 20C

Sets

The AWE property package contains two phases (Liq and Vap), two solvents (H2O and Air) and as many solutes as the user provides via solute_list in the configuration.

Many properties in AWE are not calculated for every phase or component provided. Thus, several different indexing sets are created.

Description

Symbol

Name

Indices

All components and all solvents

\(j\)

component_list

['H2O', 'Air', solute_list]

Phases

\(p\)

phase_list

['Liq', 'Vap']

Solvents

\(j\)

solvent_set

['H2O', 'Air']

Components in liquid phase

\(j\)

liq_comps

['H2O', solute_list]

Components in vapor phase

\(j\)

vap_comps

['Air', solute_list]

Solutes in liquid phase

\(j\)

liq_solute_set

('Liq', [solute_list])

Solutes in vapor phase

\(j\)

vap_solute_set

('Vap', [solute_list])

Solutes in both phases

\(j\)

phase_solute_set

(['Liq', 'Vap'], [solute_list])

Components in both phases

\(j\)

phase_component_set

(['Liq', 'Vap'], ['H2O', 'Air', solute_list])

State variables

Description

Symbol

Variable

Index

Units

Component mass flowrate

\(M\)

flow_mass_phase_comp

[p, j]

\(\text{kg}\text{ } \text{s}^{-1}\)

Temperature

\(T\)

temperature

[p]

\(\text{K}\)

Pressure

\(P\)

pressure

None

\(\text{Pa}\)

Parameters

Description

Symbol

Parameter

Index

Indexing Set

Units

Component molecular weight

\(m_N\)

mw_comp

[j]

component_set

\(\text{kg mol}^{-1}\)

Molar volume of solute

\(V\)

molar_volume_comp

[j]

solute_set

\(\text{m}^3 \text{ mol}^{-1}\)

Critical molar volume of solute

\(V_c\)

critical_molar_volume_comp

[j]

solute_set

\(\text{m}^3 \text{ mol}^{-1}\)

Dynamic viscosity

\(\mu\)

visc_d_phase

[p]

phase_list

\(\text{Pa s}\)

Component dimensionless Henry’s constant

\(h_j\)

henry_constant_comp

[j]

solute_set

\(\text{dimensionless}\)

Standard enthalpy change of solution

\(\Delta H_j^{\theta}\)

enth_change_dissolution_comp

[j]

solute_set

\(\text{J}\text{ } \text{mol}^{-1}\)

Boiling point temperature

\(T_{b,j}\)

temperature_boiling_comp

[j]

solute_set

\(\text{K}\)

Properties

Description

Symbol

Variable

Index

Indexing Set

Units

Mass density of each phase

\(\rho\)

dens_mass_phase

[p]

phase_list

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

Component molar flowrate

\(N\)

flow_mole_phase_comp

[p, j]

phase_component_set

\(\text{mol }\text{s}^{-1}\)

Component mass fraction

\(x\)

mass_frac_phase_comp

[p, j]

phase_component_set

\(\text{dimensionless}\)

Component mass concentration

\(m\)

conc_mass_phase_comp

[p, j]

phase_component_set

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

Component molar fraction

\(y\)

mole_frac_phase_comp

[p, j]

phase_component_set

\(\text{dimensionless}\)

Component molar concentration

\(n\)

conc_mole_phase_comp

[p, j]

phase_component_set

\(\text{mol m}^{-3}\)

Phase volumetric flowrate

\(Q_p\)

flow_vol_phase

[p]

phase_list

\(\text{m}^3\text{ } \text{s}^{-1}\)

Phase gravimetric (mass) flowrate

\(M_p\)

flow_mass_phase

[p]

phase_list

\(\text{kg}\text{ } \text{s}^{-1}\)

Total volumetric flowrate

\(Q_{tot}\)

flow_vol

None

None

\(\text{m}^3\text{ } \text{s}^{-1}\)

Mass diffusivity of solute

\(D\)

diffus_phase_comp

[p, j]

phase_solute_set

\(\text{m}^2 \text{ s}^{-1}\)

Component energy of molecular attraction

\(\varepsilon_j\)

energy_molecular_attraction_phase_comp

[p, j]

vap_solute_set

\(\text{erg}\)

Air-component energy of molecular attraction

\(\varepsilon_{air, j}\)

energy_molecular_attraction

['Air', j]

['Air'] * solute_set

\(\text{erg}\)

Component collision molecular separation

\(r_j\)

collision_molecular_separation_comp

[j]

vap_comps

\(\text{nm}\)

Air-component collision molecular separation

\(r_{air, j}\)

collision_molecular_separation

[j]

vap_comps

\(\text{nm}\)

Component collision function

\(f(kT/\varepsilon_{air, j})\)

collision_function_comp

[j]

solute_set

\(\text{dimensionless}\)

Component zeta for collision function

\(\xi\)

collision_function_zeta_comp

[j]

solute_set

\(\text{dimensionless}\)

Component ee for zeta of collision function

\(E\)

collision_function_ee_comp

[j]

solute_set

\(\text{dimensionless}\)

Molar volume of solute

\(V\)

molar_volume_comp

[j]

solute_set

\(\text{m}^3 \text{ mol}^{-1}\)

Component dimensionless Henry’s constant

\(h_j\)

henry_constant_comp

[j]

solute_set

\(\text{dimensionless}\)

Saturation vapor pressure of water

\(P_{sat}\)

saturation_vap_pressure

[j]

['H2O']

\(\text{Pa}\)

Vapor pressure of water

\(P_{vap}\)

vap_pressure

[j]

['H2O']

\(\text{Pa}\)

Relative humidity

\(rh\)

relative_humidity

[j]

['H2O']

\(\text{dimensionless}\)

Relationships

Description

Equation/Relationship

Component mass fraction

\(x_j=\frac{M_j}{\sum_j{M_j}}\)

Component mass concentration

\(m_j=\rho_p x_j\)

Component molar fraction

\(y_j=\frac{N_j}{\sum_j{N_j}}\)

Component molar concentration

\(n_j=\frac{m_j}{m_{N,j}}\)

Mass density of each phase

\(\rho\text{ specified as user input}\)

Phase volumetric flowrate

\(Q_p=\frac{\sum_j{N_j m_{Nj}}}{\rho}\)

Phase gravimetric flowrate

\(M_p=Q_p \rho_p\)

Total volumetric flowrate

\(Q_{tot}=\sum_p{Q_p}\)

Component mass liquid phase diffusivity 1

\(D_{liq}\text{ specified as user input or calculated via Hayduk-Laudie correlation}\)

Component mass vapor phase diffusivity 2

\(D_{vap}\text{ specified as user input or calculated via Wilke-Lee correlation}\)

Component Henry’s constant 3

\(h_j\text{ specified as user input or calculated via van't Hoff correlation}\)

Component molar volume 4

\(V\text{ specified as user input or calculated via Tyn-Calus correlation}\)

Vapor pressure of water

\(\text{Calculated with Antoine Equation}\)

Saturation vapor pressure of water

\(\text{Calculated with Huang Correlation}\)

Relative humidity

\(rh = \frac{P_{vap}}{P_{sat}}\)

Note

1 Liquid phase diffusivity can either be (1) specified when the user provides data via the diffusivity_data configuration option or (2) calculated by the correlation defined in Hayduk, W., & Laudie, H. (1974). For the latter, the liq_diffus_calculation configuration option must be set to LiqDiffusivityCalculation.HaydukLaudie.

2 Vapor phase diffusivity can either be (1) specified when the user provides data via the diffusivity_data configuration option or (2) calculated by the correlation defined in Wilke & Lee (1955). For the latter, the vap_diffus_calculation configuration option must be set to VapDiffusivityCalculation.WilkeLee.

3 Henry’s constant can either be (1) specified when the user provides data via the henry_constant_data configuration option or (2) corrected for the vapor phase temperature via the van’t Hoff equation if the user sets the temp_adjust_henry configuration option to True. In the latter case, the user provided data is assumed to be for T = 298 K (i.e., \(h_{j,std}\)) and is added as a parameter called henry_constant_std_comp. In either case, user data is required.

4 Molar volume can either be (1) specified when the user provides data via the molar_volume_comp configuration option or (2) calculated by the Tyn-Calus correlation defined in Aniceto, J. P. S., Zêzere, B., & Silva, C. M. (2021). For the latter, the molar_volume_calculation configuration option must be set to MolarVolumeCalculation.TynCalus and the component critical molar volume must be specified via the critical_molar_volume_data configuration option.

van’t Hoff Correlation

The following is used to temperature correct Henry’s constant:

\[h_j = h_{j,std} \text{ exp}\Bigg({\frac{\Delta H_j^{\theta}}{R}} \bigg( \frac{1}{T} - \frac{1}{T_{std}} \bigg) \Bigg)\]

Tyn-Calus Correlation

The following is used to calculate molar volume:

\[V = \tau_A V_c^{\tau_B}\]

Where \(\tau_A = 0.285\) and \(\tau_B = 1.048\).

Hayduk-Laudie Correlation

The following is used to calculate component liquid phase diffusion if user sets liq_diffus_calculation to LiqDiffusivityCalculation.HaydukLaudie. The Hayduk-Laudie correlation returns liquid diffusivity \(\big( D_{liq,j} \big)\) in units of \(\text{m}^2/\text{s}\); liquid viscosity \(\big( \mu_{liq} \big)\) has units of \(\text{cP}\) and molar volume \(\big( V_j \big)\) has untis of \(\text{cm}^3/\text{mol}\):

\[D_{liq,j} =\frac{\varphi_A}{\mu_{liq}^{\varphi_B}(V_j)^{\varphi_C}}\]

Where \(\varphi_A = 13.26 \times 10^{-9}\), \(\varphi_B = 1.14\), and \(\varphi_C = 0.589\).

Wilke-Lee Correlation

The following is used to calculate component vapor phase diffusion if user sets vap_diffus_calculation to VapDiffusivityCalculation.WilkeLee:

\[D_{vap,j} = \frac{\omega_A - \omega_B \sqrt{1/m_{N,j}+1/m_{N,air}} \big(T \big)^{1.5} \sqrt{1/m_{N,j}+1/m_{N,air}}}{P_{atm} r_{j,air} \big( f(kT/\varepsilon_{air, j}) \big) }\]

The Wilke-Lee correlation includes the collision function \(f(kT/\varepsilon_{air, j})\) in the denominator. There are several intermediary calculations necessary to get the value for the collision function, summarized in the following equations. Necessary parameters are provided in a table at the end of this section.

The collision function is calculated according to:

\[f \Bigg( \frac{kT}{\varepsilon_{air, j}} \Bigg) = 10^{\xi}\]

Where the exponent \(\xi\) is calculated with:

\[\xi = x_0 + x_1 E + x_2 E^2 + x_3 E^3 + x_4 E^4 + x_5 E^5 + x_6 E^6\]

The \(E\) parameter is the base-10 logarithm of the expression \(\frac{kT}{\varepsilon_{air, j}}\) used in the collision function:

\[E = \text{log}_{10} \bigg( \frac{kT}{\varepsilon_{air, j}} \bigg)\]

The molecular separation at collision for component \(j\) and air \(r_{j,air}\) is the average of the molecular separation of each component:

\[r_{j,air} = \frac{r_j + r_{air}}{2}\]

And \(r_j\) is calculated with:

\[r_j = \gamma V^{1/3}\]

The energy of molecular attraction for each component \(\varepsilon_j\) is calculated with the boiling point \(T_{b,j}\):

\[\frac{\varepsilon_j}{k} = \sigma \text{ } T_{b,j}\]

For air, the energy of molecular attraction \(\varepsilon_{air}\) is:

\[\frac{\varepsilon_{air}}{k} = \chi_{air}\]

Finally, the energy of molecular attraction between component \(j\) and air \(\varepsilon_{j,air}\) is:

\[\varepsilon_{j,air} = \sqrt{\varepsilon_j \varepsilon_{air}}\]

The following contains all the constants and parameters needed for the calculations germane to the Wilke-Lee correlation.

Parameter

Value

Units

\(k^*\)

\(\text{1.381} \times 10^{-16}\)

\(\text{g cm}^{2} \text{ s}^{-2} \text{ K}^{-1}\)

\(\omega_A\)

\(\text{1.084}\)

\(\text{cm}^{2} \text{ K}^{-1.5}\)

\(\omega_B\)

\(\text{0.249}\)

\(\text{cm}^{2} \text{ K}^{-1.5}\)

\(x_0\)

\(\text{-0.14329}\)

\(\text{dimensionless}\)

\(x_1\)

\(\text{-0.48343}\)

\(\text{dimensionless}\)

\(x_2\)

\(\text{0.1939}\)

\(\text{dimensionless}\)

\(x_3\)

\(\text{0.1361}\)

\(\text{dimensionless}\)

\(x_4\)

\(\text{-0.20578}\)

\(\text{dimensionless}\)

\(x_5\)

\(\text{0.083899}\)

\(\text{dimensionless}\)

\(x_6\)

\(\text{-0.011491}\)

\(\text{dimensionless}\)

\(r_{air}\)

\(\text{0.3711}\)

\(\text{nm}\)

\(\gamma\)

\(\text{1.18}\)

\(\text{nm mol}^{1/3} \text{ L}^{-1/3}\)

\(\text{ }^*\) Boltzmann’s constant must be in \(\text{g cm}^{2} \text{ s}^{-2} \text{ K}^{-1}\) for these correlations.

Antoine Equation

Vapor pressure of water is calculated according to Antoine equation:

\[\text{log}_{10} \big( P_{vap} \big) = A - \frac{B}{C+T}\]

Where \(A = 8.07131\), \(B = 1730.63\), \(C = 233.426\) and \(T\) is the temperature of the liquid stream.

Huang Correlation

The saturation vapor pressure for water in the vapor stream is calculated with the Huang correlation:

\[P_{sat} = \frac{\text{exp}\big( a - \frac{b}{T+d_1} \big)}{(T+d_2)^c}\]

With \(a = 34.494\), \(b = 4924.99\), \(c = 1.57\), \(d_1 = 237.1\), \(d_2 = 105\), and \(T\) is the temperature of the vapor stream in Celsius.

Physical/Chemical Constants

Description

Symbol

Value

Unit

Ideal gas constant

\(R\)

\(\text{8.3145}\)

\(\text{J mol}^{-1} \text{K}^{-1}\)

Faraday constant

\(F\)

\(96,485.33\)

\(\text{C mol}^{-1}\)

Avogadro constant

\(N_A\)

\(\text{6.022} \times 10^{23}\)

\(\text{dimensionless}\)

Boltzmann constant

\(k\)

\(\text{1.381} \times 10^{-16}\)

\(\text{g cm}^{2} \text{s}^{-2} \text{K}^{-1}\)

Scaling

A comprehensive scaling factor calculation method is coded in this property package.

Default scaling factors are as follows.

State variable

Phase

Default scaling factor

pressure

None

\(10^{-5}\)

temperature

Liq

\(10^{-2}\)

temperature

Vap

\(10^{-2}\)

dens_mass_phase

Liq

\(10^{3}\)

dens_mass_phase

Vap

\(1\)

visc_d_phase

Liq

\(10^{3}\)

visc_d_phase

Vap

\(10^{5}\)

diffus_phase_comp

Liq

\(10^{10}\)

diffus_phase_comp

Vap

\(10^{6}\)

Note the only state variable for which there is no default scaling factor is flow_mass_phase_comp, so that must be assigned by the user. Provided the state variables are scaled, calling calculate_scaling_factors on the model will assign scaling factors to all instantiated variables in the property model:

m.fs.properties.set_default_scaling('flow_mass_phase_comp', 1e2, index=('Liq','{component name}'))
# m is the model name, and fs is the instantiated flowsheet block of m.
calculate_scaling_factors(m)

Proper scaling of variables is, in many cases, crucial to solver’s performance in finding an optimal solution of a problem. While designing scaling can have a mathematical sophistication, a general rule is to scale all variables as close to 1 as possible (in the range of 1e-2 to 1e2).

References

Crittenden, J. C., Trussell, R. R., Hand, D. W., Howe, K. J., & Tchobanoglous, G. (2012).
Chapter 7 & 14 in MWH’s Water Treatment: Principles and Design (3rd ed.). doi:10.1002/9781118131473
Aniceto, J. P. S., Zêzere, B., & Silva, C. M. (2021).
Predictive Models for the Binary Diffusion Coefficient at Infinite Dilution in Polar and Nonpolar Fluids.
Materials (Basel), 14(3). doi.org/10.3390/ma14030542
Wilke, C. R., & Lee, C. Y. (1955).
Estimation of Diffusion Coefficients for Gases and Vapors.
Industrial & Engineering Chemistry, 47(6), 1253-1257. doi:10.1021/ie50546a056
Huang, J. (2018).
A Simple Accurate Formula for Calculating Saturation Vapor Pressure of Water and Ice.
Journal of Applied Meteorology and Climatology, 57(6), 1265-1272. doi:10.1175/jamc-d-17-0334.1
Hayduk, W., & Laudie, H. (1974).
Prediction of diffusion coefficients for nonelectrolytes in dilute aqueous solutions.
AIChE Journal, 20(3), 611-615. https://doi.org/10.1002/aic.690200329