Skip to content

Latest commit

 

History

History
214 lines (159 loc) · 13 KB

File metadata and controls

214 lines (159 loc) · 13 KB

Multi-Component Aqueous Solution (MCAS) Property Package

This property package implements property relationships for an aqueous solution that may contain multiple neutral and/or ionic solutes.

The MCAS property package
  • sets H2O as the solvent;
  • supports multiple solute components including ions and neutral molecules;
  • supports only liquid phase;
  • uses temperature, pressure, and either molar flowrate (mol/s) or mass flowrate (kg/s) as state variables;
  • does not support dynamics.

For usage examples, please refer to the associated "how-to" documentation for MCAS<mcas_how_to>.

Sets

Description Symbol Indices
Components j component_list=['H2O', solute_list 1]
Phases p ['Liq']
solute_set j [all components in component_list except H2O]
cation_set j [cationic components in component_list]
anion_set j [anionic components in component_list]
neutral_set j [neutral components in component_list]
ion_set j [cationic and anionic components in component_list]

Note

1 solute_list must be provided by the user via the necessary configuration option, solute_list.

Figure 1. Hierarchy of the Pyomo sets constructed in the MCAS property package. Here, types are declared for the species in component list, or sometimes auto-assigned considering other input such as charge; e.g., the chloride anion would be contained in anion_set, ion_set, solute_set, and component_list.

Figure 1. Hierarchy of the Pyomo sets constructed in the MCAS property package. Here, types are declared for the species in component list, or sometimes auto-assigned considering other input such as charge; e.g., the chloride anion would be contained in anion_set, ion_set, solute_set, and component_list.

State variables

Description Symbol Variable Index Units
Temperature T temperature None K
Pressure P pressure None Pa

The material_flow_basis configuration option can be used to select the desired state variable for flow basis.

If material_flow_basis is set to MaterialFlowBasis.molar (the default setting), component molar flowrates will be used:

Description Symbol Variable Index Units
Component molar flowrate N flow_mol_phase_comp [p, j] mol s − 1

If material_flow_basis is set to MaterialFlowBasis.mass, component mass flowrates will be used:

Description Symbol Variable Index Units
Component mass flowrate M flow_mass_phase_comp [p, j] kg s − 1

Parameters

Description Symbol Parameter Index Units
Component molecular weight 1 mN mw_comp [j] kg mol − 1
Stokes radius of solute rh radius_stokes_comp [j] m
Molar volume of solute V molar_volume_phase_comp [p, j] m3 mol − 1
Dynamic viscosity μ visc_d_phase [p] Pa s
Bulk diffusivity of solute D diffus_phase_comp [p, j] m2 s − 1
Ion charge z charge_comp [j] dimensionless
Dielectric constant of water ϵ dielectric_constant None dimensionless
Debye Huckel constant b b debye_huckel_b None kg mol − 1
Hayduk Laudie correlation constant χ1 hl_diffus_cont None dimensionless
Hayduk Laudie viscosity coefficient χ2 hl_visc_coeff None dimensionless
Hayduk Laudie molar volume coefficient χ3 hl_molar_volume_coeff None dimensionless

Note

1 Component molecular weight data is now set as a requirement when instantiating the MCAS property model. Hence, the user must provide these data in the mw_data configuration option. Additionally, a warning will be displayed if charge data are not provided via the charge configuration option, in case the user intended to include ions in the solute_list but forgot to provide charge. However, this warning can be ignored if neutral molecules were the only solutes intended for inclusion in solute_list.

Properties

Description Symbol Variable Index Units
Component charge-equivalent molar flowrate flow_equiv_phase_comp [p, j] mol s − 1
Component charge-equivalent molar concentration conc_equiv_phase_comp [p, j] mol m − 3
Component mass fraction x mass_frac_phase_comp [p, j] dimensionless
Mass density of aqueous phase ρ dens_mass_phase [p] kg m − 3
Mass density of solvent water ρw dens_mass_solvent [p] kg m − 3
Phase volumetric flowrate Q flow_vol_phase [p] m3 s − 1
Total volumetric flowrate Qtot flow_vol None m3 s − 1
Component molar concentration n conc_mol_phase_comp [p, j] mol m − 3
Component mass concentration m conc_mass_phase_comp [p, j] kg m − 3
Component molar fraction y mole_frac_phase_comp [p, j] dimensionless
Component molality b molality_phase_comp [p, j] mol kg − 1
Kinematic viscosity ν visc_k_phase [p] m2 s − 1
Phase osmotic pressure Π pressure_osm_phase [p] Pa
Ion component electrical mobility μe elec_mobility_phase_comp [p,j] m2 V − 1 s − 1
Ion component transport number t trans_num_phase_comp [p, j] dimensionless
Phase equivalent conductivity Λ equiv_conductivity_phase [p] m2 Ω − 1 mol − 1
Phase electrical conductivity λ elec_cond_phase [p] Ω − 1 m − 1
Component activity coefficient γ act_coeff_phase_comp [j] dimensionless
Debye-Huckel constant A A deby_huckel_constant none dimensionless
Ionic Strength I ionic_strength_molal none mol kg − 1
Mass diffusivity of solute D diffus_phase_comp [p, j] m2 s − 1

Relationships

Description Equation
Component charge-equivalent molar flowrate  = N|z|
Component charge-equivalent molar concentration  = n|z|
Component mass fraction $x_j=\frac{M_j}{\sum_j{M_j}}$
Mass density of aqueous phase ρ = 1000 kg m − 3 or ρ = ρw + f(∑j ∈ solutexj,T) 1
Mass density of solvent water ρw = f(T) 1
Phase volumetric flowrate $Q=\frac{\sum_j{N_j m_{Nj}}}{\rho}$
Total volumetric flowrate Qtot = ∑pQp
Component molar fraction $y_j=\frac{N_j}{\sum_j{N_j}}$
Component molality $b=\frac{N}{N_{H_2O} m_{N\text{H_2O}}}$
Kinematic viscosity ν = μρ − 1
Phase osmotic pressure Π = RTj ∈ solutenj
Ion component electrical mobility 2 $\mu_e=\frac{D\left|z\right|F}{RT}$
Ion component transport number 3 $t_j=\frac{\left|z_j\right|\mu_{ej} n_j}{\sum_{j\in ion}{\left|z_j\right|\mu_{ej} n_j}}$
Phase equivalent conductivity 4 $\Lambda=\frac{\sum_{j\in ion}{F\left|z_j\right|\mu_{ej} n_j}}{\sum_{j\in cation}{\left|z_j\right|n_j}}$
Phase electrical conductivity λ = Λj ∈ cation|zj|nj
Debye-Huckel constant $A=\frac{\left(2 \pi N_A\right)^{0.5}}{log(10)} \left(\frac{\textbf{e}^2}{4 \pi \epsilon \epsilon_0 kT}\right)^{\frac{3}{2}}$
Ionic strength I = 0.5∑j ∈ ionzj2bj
Component mass diffusivity 5 D specified in data argument or $D \text{ }[\text{m}^2 \text{ s}^{-1}]=\frac{\chi_{1}}{(\mu \text{ }[\text{cP}])^{\chi_{2}}(V \text{ }[\text{cm}^3 \text{ mol}^{-1}])^{\chi_{3}}}$

Note

1 f( ⋅ ) refers to empirical correlations of phase or solvent mass density to seawater salinity and temperature following the study of Sharqawy et al. (2010).

2 Electrical mobility can either be (1) specified when the user provides data via the elec_mobility_data configuration option or (2) calculated by setting the elec_mobility_calculation configuration option to ElectricalMobilityCalculation.EinsteinRelation.

3 Transport number can either be (1) specified when the user provides data via the trans_num_data configuration option or (2) calculated by setting the trans_num_calculation configuration option to TransportNumberCalculation.ElectricalMobility.

4 Phase equivalent conductivity can either be (1) specified when the user provides data via the equiv_conductivity_phase_data configuration option or (2) calculated by setting the equiv_conductivity_calculation configuration option to EquivalentConductivityCalculation.ElectricalMobility.

5 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 diffus_calculation configuration option must be set to DiffusivityCalculation.HaydukLaudie.

Physical/chemical constants

Description Symbol Value Unit
Idea gas constant R 8.3145 J mol − 1K − 1
Faraday constant F 96485.33 C mol − 1
Avogadro constant NA 6.022e23 dimensionless
Boltzmann constant k 1.381e-23 J K − 1
Vacuum permittivity ϵ0 8.854e-12 F m − 1
Elementary charge e 1.602e-19 C

Scaling

A comprehensive scaling factor calculation method is coded in this property package. Among the state variables (N, T, and p), default scaling factors for T and p were set and do not need users' input, while, for N, usually require a user input via an interface. The coding interface to set defalut scaling factor for N and call the scaling calculation for other variables is the following.

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

Users also have the authority to set a scaling factor for non-state variables via the following codes:

import idaes.core.util.scaling as iscale #import the needed utility package
...
iscale.set_scaling_factor(m.fs.properties.{property_name}, 100) 

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, e.g., in the range of 1e-2 to 1e2.

Classes

watertap.property_models.multicomp_aq_sol_prop_pack

MCASParameterBlock

MCASParameterData

_MCASStateBlock

MCASStateBlockData

Reference

M.H. Sharqawy, J.H.L. V, S.M. Zubair, Thermophysical properties of seawater: a review of existing correlations and data, Desalination and Water Treatment. 16 (2010) 354–380. https://doi.org/10.5004/dwt.2010.1079. (2017 corrections provided at http://web.mit.edu/seawater )

Bard, A. J., Faulkner, L. R., & White, H. S. (2022). Electrochemical methods: fundamentals and applications. John Wiley & Sons.

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