# 88. Control valve design¶

This is example 8.2 in Seborg, but worked a little differently to allow choice of $$R$$ and $$C_{cv}$$

[1]:

import numpy
import scipy.optimize
import matplotlib.pyplot as plt
from ipywidgets import interact
%matplotlib inline

[2]:

# Constant pump head
DeltaPa = 40
# Guess for q
q0 = 100


The MEB reduces to quadratic form:

$\Delta P_a = \Delta P_{hc} + \Delta P_{v}$
$\Delta P_a - a_{hc}q^2 - a_{v}q^2 = 0$
[3]:

def MEBcoeffs(l, R, Ccv, characteristic='eqperc'):
ahc = 30/200**2
if characteristic == 'linear':
fl = l
elif characteristic == 'eqperc':
fl = R**(l - 1)
av = (1/(Ccv*fl))**2

return [-ahc - av, 0, DeltaPa]

[4]:

def positive(x):
return x[x>0][0]

[5]:

ls = numpy.linspace(0.01, 1)

[6]:

def curve(R, Ccv, characteristic):
qs = [positive(numpy.roots(MEBcoeffs(l, R, Ccv, characteristic))) for l in ls]
plt.plot(ls, qs)
plt.plot([0, 1], [0, max(qs)])
plt.xlabel('Valve lift (l)')
plt.ylabel('q')
plt.ylim([0, 250])

[7]:

curve(50, 20, 'eqperc')

[8]:

interact(curve,
R=(5., 100.),
Ccv=(5., 200.),
characteristic=['linear', 'eqperc'])

[8]:

<function __main__.curve>