Kyupii / CheToolbox

A personal project which packages common Chemical Engineering Calcs & Physical properties libraries.
GNU General Public License v3.0
2 stars 0 forks source link

Test McCabe Thiel Functions against Tutorial #6 #17

Closed Kyupii closed 8 months ago

Kyupii commented 8 months ago

Tutorial #6 proposes a distillation column with the following specifications:

x_F = .60
x_D = .95
x_B = .05
R = 1.3*R_min
eq_points = np.array([[0.01,0.03],
                      [0.05,0.11],
                      [0.11,0.25],
                      [0.2,0.41],
                      [0.3,0.54],
                      [0.4,0.65],
                      [0.5,0.73],
                      [0.6,0.81],
                      [0.7,0.86],
                      [0.8,0.915],
                      [0.9,0.96]
                      ])

Done by hand :: Minimum Number of Ideal Plates : 5.96-1 = 4.96 Minimum Reflux Ratio : 0.75 Actual Reflux Ratio : 0.975 Number of Ideal Stages : 11

Kyupii commented 8 months ago

image

Appears to work correctly. The reflux ratio and by extension, number of stages is highly dependent on the equilibrium curve. _Small changes in equilibrium curve values result in large changes in Rmin and # of stages.

This will be good to give us a ballpark range of what we expect the resulting McCabe-Thiel analysis will be.

eq_est = separations.eq_curve_estim(eq_points)
feed_line = separations.mccabe_thiel_feedline(1,.60)
eq_feedpoint = (.60,eq_est.eval(.60))
separations.mccabe_thiel_otherlines(feed_line,eq_feedpoint,x_D,x_B,1.3)

separations.mccabe_thiel_full_est(eq_est,1.,.60,.95,.05,1.3)

R_min : 0.7216174928960946 R : 0.938102740764923 Min_stages : 5.896945385512334 Ideal stages : 11.955502027572052 The following functions are validated:

ethanmolnar06 commented 8 months ago

revalidated for internal fixes and graphing capabilities:

xf = .6
xd = .95
xb = .05
q = 1
Rmin_mult = 1.3
feedline = separations.mccabe_thiel_feedline(q, xf)

eq_points = np.array([[0.01, 0.03],
                      [0.05, 0.11],
                      [0.11, 0.25],
                      [0.2, 0.41],
                      [0.3, 0.54],
                      [0.4, 0.65],
                      [0.5, 0.73],
                      [0.6, 0.81],
                      [0.7, 0.86],
                      [0.8, 0.915],
                      [0.9, 0.96]
                      ])
eq_curve = separations.eq_curve_estim(eq_points)

separations.mccabe_thiel_full_est(eq_curve, feedline, xf, xd, xb, Rmin_mult, PLOTTING_ENABLED=True)

returns

{'Rmin': 0.7216174928960946,
 'R': 0.938102740764923,
 'min_stages': 5.920390795986782,
 'ideal_stages': 11.955502027572052}

image

substituting q = .7 returns

{'Rmin': 0.8656556956098512,
 'R': 1.1253524042928067,
 'min_stages': 5.920390795986782,
 'ideal_stages': 11.823089621086186}

image