Callapy¶
The physical adsorption of both solute and solvent from liquid solutions onto solids is difficult to determine in widely adopted static (i.e., batch) experiments, because only the bulk liquid reservoir can be probed directly. The consequences of this limitation are best explained by the mass balances. The total mass balance for uptake from a binary mixture can be expressed as
Todo
add figure here
where \(V_\text{in}\) is the initial solution volume, \(\rho_\text{in}\) is the initial solution density, \(V_\text{eq}\) is the solution volume measured at equilibrium, \(\rho_\text{eq}\) is the solution density at equilibrium, \(m\) is the mass of the solid, \(Q_\text{A}\) is the loading of the solute A, and \(Q_\text{S}\) is the loading of the solvent S. The mass balance on the solute is
where \(C_\text{A,in}\) is the initial concentration of the solute A, and \(C_\text{A,eq}\) is the concentration of the solute A measured at equilibrium.
From the batch adsorption procedure, \(V_\text{in}\), \(C_\text{A,in}\), \(C_\text{A,eq}\), and \(m\) are measured. The initial (\(\rho_\text{in}\)) and equilibrium (\(\rho_\text{eq}\)) densities are usually either determined from separate experiments, taken from available literature reports, or estimated from pure component densities. As a result, Equations (1) and (2) have three unknowns (\(V_\text{eq}\), \(Q_\text{A}\), and \(Q_\text{S}\)), giving them no unique solution.
The excess adsorption (XS) is one common approach. In this case, the volume of solution at equilibrium is assumed to be the same as the initial volume of solution. The third relationship required to close the mass balances is
The solute loading calculated by the XS approach is expressed as
The solvent loading calculated by the XS approach is expressed as
Another option is to assume that no solvent (NS) adsorbs into the solid (i.e., only solute adsorbs). The third relationship required to close the mass balances is
The solute loading calculated by the NS approach can be obtained by
By definition, the solvent loading for the NS approach is zero.
The volume change by solute adsorption method (VC) estimates the volume change of solution based off of how much solute adsorbs. The third relqtionship required to close the mass balances is
The solute loading calculated by the VC method is calculated as
where \(\rho_\text{A}\) is an estimated adsorbed density of the solute A. The solvent loading calculated by the VC approach is expressed as
Another option is to assume that the pores in the solid are filled upon adsorption. The additional relationship is
where \(\rho_\text{S}\) is an estimated density of the solvent, and \(V_\text{p}\) is an estimated pore volume of the adsorbent.
For the pore filling model, the solute loading can be calculated as
while the solvent loading can be calculated as
-
class
callapy.model.
Model
(**kwargs)¶ - Parameters
V_in (typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]) – initial volume, \(V_\text{in}\)
d_in (typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]) – initial density, \(\rho_\text{in}\)
d_eq (typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]) – equilibrium density, \(\rho_\text{eq}\)
m (typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]) – mass of zeolite, \(m\)
CA_in (typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]) – initial concentration of solute A, \(C_\text{A,in}\)
CA_eq (typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]) – equilibrium concentration of solute A, \(C_\text{A,eq}\)
d_A (typing.Optional[typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]]) – estimated density of adsorbate used in calculating PF adsorption, defaults to None
d_S (typing.Optional[typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]]) – estimated density of solvent in pores in calculating PF adsoption, defaults to None
V_units (str, optional) – units for volume, defaults to “”
C_units (str, optional) – units for concentration, defaults to “”
m_units (str, optional) – units for mass of solid, defaults to “”
d_units (str, optional) – units for density, defaults to “”
V_p (float, optional) – estimated pore volume within solid, defaults to None
e_V_in (typing.Optional[typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]]) – error of initial volume, defaults to last decimal point input from
Model.V_in
e_d_in (typing.Optional[typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]]) – error of initial density, defaults to last decimal point input from
Model.d_in
e_d_eq (typing.Optional[typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]]) – error of equilibrium density, defaults to last decimal point input from
Model.d_eq
e_m (typing.Optional[typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]]) – error of adsorbent mass, defaults to last decimal point input from
Model.m
e_CA_in (typing.Optional[typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]]) – error of adsorbent mass, defaults to last decimal point input from
Model.CA_in
e_CA_eq (typing.Optional[typing.Union[float, typing.List, typing.Tuple, typing.Generator, np.array]]) – error of adsorbent mass, defaults to last decimal point input from
Model.CA_eq
-
eval_NS
() → Tuple¶ No-solvent adsorption model (NS)
The solute and solvent loadings are calculated by Equations (6) and (5), respectively.
- Parameters
kwargs – key-word arguments
- Returns
(\(Q_\text{A}\), \(Q_\text{S}\), \(V_\text{eq}\))
-
eval_PF
()¶ Pore-filling adsorption model (PF).
The solute and solvent loadings are calculated by Equations (9) and (10), respectively.
- Parameters
d_A – estimated adsorbed density of solute A, \(\rho_\text{A}\)
d_S – estimated adsorbed density of solute S, \(\rho_\text{S}\)
V_p – estimated pore volume of solid, \(V_\text{p}\)
kwargs – key-word arguments
- Returns
(\(Q_\text{A}\), \(Q_\text{S}\), \(V_\text{eq}\))
-
eval_VC
()¶ Volume change by solute adsorption model (VC)
The solute and solvent loadings are calculated by Equations (7) and (8), respectively.
- Parameters
d_A – estimated adsorbed density of solute A, \(\rho_\text{A}\)
kwargs – key-word arguments
- Returns
(\(Q_\text{A}\), \(Q_\text{S}\), \(V_\text{eq}\))