Skip to content

Commit b9cb1c7

Browse files
author
Katharina Paul
committed
change u from 0.5 to 0.3, create plot with 6 figures and expand explanaition texts
1 parent 192f9ed commit b9cb1c7

File tree

1 file changed

+23
-25
lines changed

1 file changed

+23
-25
lines changed

src/GRM_for_linear_LC.py

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,17 @@
1515

1616
# %% [markdown]
1717
# (GRM_for_linear_LC)=
18-
# # Effects of dispersion on the elution of a rectangular pulse
18+
# # Effects of the Peclet number on the elution of a rectangular pulse
1919

2020
# %% [markdown]
2121
# The following example is a reproduction of part of the research results published in "Analytical solutions and moment analysis of general rate model for linear liquid chromatography" (Shamsul Qamar, Javeria Nawaz Abbasi, Shumaila Javeed, Andreas Seidel-Morgenstern, Chemical Engineering Science 2014;107:192-205. doi:10.1016/j.ces.2013.12.019.). [**url**: here](https://doi.org/10.1016/j.ces.2013.12.019) <br> Their study of the General Rate Model for linear liquid chromatography was later used as a model problem by Leweke et al. for determining convergence benchmarks in CADET (_Chromatography Analysis and Design Toolkit (CADET)_, Samuel Leweke, Eric von Lieres, Computers & Chemical Engineering 2018;113:274-294. doi:10.1016/j.compchemeng.2018.02.025.) [**url**: here](https://doi.org/10.1016/j.compchemeng.2018.02.025)
2222
# <br>
2323
#
2424

2525
# %% [markdown]
26-
# In the example, a tracer is introduced into the column as a rectangular pulse. The binding behavior follows the Linear binding model. The unit operation model for this process is the General Rate Model.
27-
# All numerical values are taken from Table 2 (Leweke et al.)
26+
# In the given example, a tracer is introduced into the column as a rectangular pulse. The binding behavior follows the Linear binding model. The unit operation model for this process is the General Rate Model. In their study, Qamar at al. examined the influence of dispersion on the elution behavior by analysing the effects of different Peclet numbers (Fig.5). The Peclet number `Pe` is a value discribing the ratio of convection to dispersion for particle flow in a column.
27+
#
28+
# In the following example, the elution is simulated for the numerical values from Table 2 (Leweke et al.). The interstitial velocity used here is u = 0.3 cm / min. Following this, the effects of different Peclet numbers are examined by simulating elutions for six different values.
2829
# The `flow_rate` can be calculated as the product of the interstitial cross section area and the interstitial velocity u.
2930

3031
# %%
@@ -58,12 +59,12 @@
5859
column.axial_dispersion = 3.33e-9 # D_c [m² / s]
5960
column.film_diffusion = column.n_comp * [1.67e-6] # k_f [m / s]
6061
column.pore_diffusion = column.n_comp * [3.003e-6] # D_p [m² / s]
61-
column.surface_diffusion = column.n_bound_states * [0.0] #D_s [m² / s]
62+
column.surface_diffusion = column.n_bound_states * [0.0] # D_s [m² / s]
6263
column.c = [0.0] # [mM]
6364
column.q = [0.0] # [mM]
6465

6566
inlet = Inlet(component_system, name='inlet')
66-
inlet.flow_rate = column.cross_section_area_interstitial * (0.5 * (1e-2 / 60)) # m² * [m / s]
67+
inlet.flow_rate = column.cross_section_area_interstitial * (0.3 * (1e-2 / 60)) # m² * [m / s]
6768

6869
outlet = Outlet(component_system, name='outlet')
6970

@@ -85,7 +86,7 @@
8586
process.cycle_time = 100 * 60 # [s]
8687
pulse_duration = 20.0 * 60 # [s]
8788

88-
c_pulse = np.array([1.0]) #injection conc = 1.0 [mol / m³]
89+
c_pulse = np.array([1.0]) # injection concentration = 1.0 [mol / m³]
8990
c_initial = np.array([0.0])
9091

9192
process.add_event('pulse_start', 'flow_sheet.inlet.c', c_pulse)
@@ -102,34 +103,31 @@
102103
simulation_results.solution.column.outlet.plot()
103104

104105
# %% [markdown]
105-
# The Peclet number `Pe` is a value discribing the ratio of convection to dispersion for particle flow in a column. It is given by the product of the column length and the interstiatial velocity devided by the dispersion. The `peclet_number` of the column used by Leweke et al. and shown in the plot above is around 425.4.
106+
# The Peclet number is given by the product of the column length and the interstiatial velocity devided by the dispersion. The `peclet_number` of the column used by Qamar et al. and shown in the plot above is around 255.
106107

107108
# %%
108-
peclet_number = (column.length * (0.5 * (1e-2 / 60))) / column.axial_dispersion
109+
peclet_number = (column.length * (0.3 * (1e-2 / 60))) / column.axial_dispersion
109110
peclet_number
110111

111112
# %% [markdown]
112-
# The effects of different Peclet numbers on the elution curve can be examined by varying the dispersion rates within the column. The results show an approaching of the elution curve to a rectangular output as the `dispersion_value` is reduced and the Peclet number increases. The greater influence of convection/advective transport (directed flow of particles with the mobile phase (eluent)) in high Peclet numbers results in a sharper rectangular peak at the outlet as the velocities of the particles within the mobile phase differ less. The elution approaches the behavior of an ideal plug flow. Smaller Peclet numbers result in a more defined, slim peak and a more gradiual elution with larger retention times as the differences between particle velocities in the mobile phase increase.
113+
# The effects of different Peclet numbers on the elution curve can be examined by varying the dispersion rates within the column. The results show an approaching of the elution profile to a rectangular output as the dispersion is reduced and the Peclet number increases. The greater influence of advective transport in high Peclet numbers results in an elution that is more similar to the concentration profile at the inlet. Throughout the column the velocities of the particles within the mobile phase differ less with increasing Peclet numbers. The elution approaches the behavior of an ideal plug flow reactor.
114+
# Smaller Peclet numbers indicate a greater influence of dispersion. This results in a more gradual elution with larger retention times as the differences between particle velocities in the mobile phase increase. The resulting elution profile approaches the behavior of a CSTR.
113115
#
114116

115117
# %%
116-
print(__name__)
117118
if __name__ == '__main__':
118-
import CADETProcess
119+
import matplotlib.pyplot as plt
119120
from CADETProcess.simulator import Cadet
120121
process_simulator = Cadet()
121-
122-
dispersion_value = [1.4166666666666667e-06, # Pe = 1
123-
2.8333333333333336e-07, # Pe = 5
124-
1.4166666666666668e-07, # Pe = 10
125-
5.666666666666667e-08, # Pe = 25
126-
2.8333333333333336e-08, # Pe = 50
127-
1.4166666666666668e-08, # Pe = 100
128-
3.33e-9] # Pe = 425.4
129-
for i in dispersion_value:
130-
column.axial_dispersion = i
122+
123+
fig, axes = plt.subplots(3,2, figsize = [10, 12])
124+
axes = axes.flatten()
125+
126+
peclet_numbers = [1, 5, 25, 50, 100, 255]
127+
for i, peclet_number in enumerate(peclet_numbers):
128+
column.axial_dispersion = (column.length * (0.3 * (1e-2 / 60))) / peclet_number
131129
simulation_results = process_simulator.simulate(process)
132-
simulation_results.solution.column.outlet.plot()
133-
#CADETProcess.plotting.Layout.check_required_parameters()
134-
# layout = {"title": str(i)}
135-
#simulation_results.solution.column.outlet.plot.plotting.Layout.check_required_parameters()
130+
simulation_results.solution.column.outlet.plot(ax = axes[i])
131+
axes[i].set_title(f"Peclet number: {peclet_number}")
132+
133+
plt.tight_layout()

0 commit comments

Comments
 (0)