|
15 | 15 |
|
16 | 16 | # %% [markdown]
|
17 | 17 | # (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 |
19 | 19 |
|
20 | 20 | # %% [markdown]
|
21 | 21 | # 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)
|
22 | 22 | # <br>
|
23 | 23 | #
|
24 | 24 |
|
25 | 25 | # %% [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. |
28 | 29 | # The `flow_rate` can be calculated as the product of the interstitial cross section area and the interstitial velocity u.
|
29 | 30 |
|
30 | 31 | # %%
|
|
58 | 59 | column.axial_dispersion = 3.33e-9 # D_c [m² / s]
|
59 | 60 | column.film_diffusion = column.n_comp * [1.67e-6] # k_f [m / s]
|
60 | 61 | 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] |
62 | 63 | column.c = [0.0] # [mM]
|
63 | 64 | column.q = [0.0] # [mM]
|
64 | 65 |
|
65 | 66 | 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] |
67 | 68 |
|
68 | 69 | outlet = Outlet(component_system, name='outlet')
|
69 | 70 |
|
|
85 | 86 | process.cycle_time = 100 * 60 # [s]
|
86 | 87 | pulse_duration = 20.0 * 60 # [s]
|
87 | 88 |
|
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³] |
89 | 90 | c_initial = np.array([0.0])
|
90 | 91 |
|
91 | 92 | process.add_event('pulse_start', 'flow_sheet.inlet.c', c_pulse)
|
|
102 | 103 | simulation_results.solution.column.outlet.plot()
|
103 | 104 |
|
104 | 105 | # %% [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. |
106 | 107 |
|
107 | 108 | # %%
|
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 |
109 | 110 | peclet_number
|
110 | 111 |
|
111 | 112 | # %% [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. |
113 | 115 | #
|
114 | 116 |
|
115 | 117 | # %%
|
116 |
| -print(__name__) |
117 | 118 | if __name__ == '__main__':
|
118 |
| - import CADETProcess |
| 119 | + import matplotlib.pyplot as plt |
119 | 120 | from CADETProcess.simulator import Cadet
|
120 | 121 | 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 |
131 | 129 | 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