The New Concentration Polarization Model Turns Out To Be Difficult To Implement In Matlab

This is part three of a series of posts on constructing a mathematical model of the movement of gold through a porous membrane. In part one, I implemented William Deen’s mathematical model of the electrostatic and steric effects that contribute to whether a gold nanoparticle will translocate through a pore. The mathematica and matlab code I created made some beautiful graphs, but the theory did not match experiment, likely because concentration polarization was ignored. In part two, I expanded upon the naïve electrostatic model by including the localized concentration increase (which is a time-dependent Boltzmann distribution) called concentration polarization (illustrated concisely by the following image:)

model explanatory figure-01

 

In this post, I detail my first, failed attempt at trying to bypass the analytic issues that arose in part two (what I called the ‘recursive definitions’ of my key variables) by attacking the problem with brute force. The following is my matlab pseudo-code:

Time of separation = 200uL/(hydraulic permeability * active area * pressure)
\Delta T = Time of separation / number of iterations
CurrentTime = 0

%The first iteration needs to be a little different
C_{0} = C_{feed}
C_{\text{filtrate}}= 0
\langle N \rangle = W\langle V \rangle C_{0} \frac{[1-(C_{\text{filtrate}}/C_{0})e^{-Pe}]}{1-e^{-Pe}}
gap = \langle N \rangle * \Delta T
\text{total gold in gap} = vtC_{\text{feed}} =-\frac{kT}{6 \pi R\mu v}C_{0}(e^{-\frac{6 \pi R\mu v(\text{gap})}{kT}}-e^{-\frac{6 \pi R\mu v(0)}{kT}}) = -\frac{kT}{6 \pi R\mu v}C_{0}(e^{-\frac{6 \pi R\mu v(\text{gap})}{kT}}-1)

C_{\text{average}} = \frac{\text{total gold in gap}}{\text{gap}}
WHMIT = 0 + total gold in gap
CurrentTime = CurrentTime + \Delta T

While CurrentTime < Time of separation
C_{0}=(vtC_{\text{feed}} - \text{WHMIT}) \frac{6 \pi R\mu v}{kT}+C_{\text{feed}}
C_{\text{filtrate}}=\frac{\text{WHMIT}}{vt}
\star \langle N \rangle = W\langle V \rangle C_{\text{average}} \frac{[1-(C_{\text{filtrate}}/C_{\text{average}})e^{-Pe}]}{1-e^{-Pe}}
gap = \langle N \rangle * \Delta T
total gold in gap = -\frac{kT}{6 \pi R\mu v}C_{0}(e^{-\frac{6 \pi R\mu v(\text{gap})}{kT}}-1)
C_{\text{average}} = \frac{\text{total gold in gap}}{\text{gap}}
WHMIT = 0 + total gold in gap
CurrentTime = CurrentTime + \Delta T
Loop

Display “Sieving Coefficient = ” \frac{C_{\text{filtrate}}}{C_{\text{feed}}}

The line with \star is the problem. To calculate N, we need to know C_{\text{average}}, but C_{\text{average}} is a function of the gap height, which is a function of N. The for loop is attempting to evaluate the integral:
\text{WHMIT} = \int_{0}^{t}NC_0dt

Because we’re using a finite number of intervals to evaluate the system, we can’t use the surface concentration to determine the flux through the membrane – if you used C_{\text{surface}} to calculate N; and then multiplied N (a speed, in unit of m/s) by \Delta T, you get a distance (a gap) that you could multiply by C_{\text{surface}} to get what passes through the membrane in a given timestep, but doing this overestimates the amount of gold in the gap and breaks conservation of matter. Instead, one approach would be to find the total gold in the gap, average the concentration of gold in the gap, evaluate N with this average concentration, and then add the total gold in the gap to the running total of WHMIT. But in order to find the total gold in the gap, you need to know C_{0} and the gap height, and to find the gap height you need to know N(average). It’s the same problem we have in the analytic case.

As the code currently stands, the previous C_{\text{average}} is used. This leads to big errors that are highly dependent on the number of iterations.
Regrettable, this model does not predict sieving coefficients because of this ‘recursively defined variable’ problem.

Similar Posts