## Valve Design for Flow Control

Valves regulate fluid flow regulating a pressure drop in a flow line. Valves are a common final control element for a process control system to maintain pressure, temperature, composition, or other process quantities. There are many types of valves with strengths and weaknesses for particular applications. For example, some valves are better suited for applications where the valve is mostly for starting and stopping flow in a pipeline. In this case, a type of valve design that has low pressure drop is desired and a ball valve or gate valve may be selected. In other cases, it is desirable to precisely maintain a flowrate into a process and a globe valve may be the preferred solution. When backflow is a concern, a swing-check valve can be installed to ensure that fluid only flows in one direction. Each valve has unique performance characteristics.

#### Valve Design Equation

The valve design equation relates the pressure drop `\Delta P_v` across the valve to the volumetric flow rate `q`.

$$q = C_v f(l) \sqrt{\frac{\Delta P_v}{g_s}}$$

The `C_v` is a measure of the size of a valve and valve suppliers have different valve body sizes, each with a different `C_v` value. The valve position or lift `l` is adjusted to regulate flow through the valve. The lift function `f(l)` depends on the type of trim installed. The trim is relatively easier to modify but the size of the valve `C_v` cannot be adjusted without replacing the valve body. Rearranging to solve for `P_v` gives the pressure drop across the valve as a function of flow `q`.

$$\Delta P_v = g_s \left(\frac{q}{C_v f(l)}\right)^2$$

#### Linear Flow to Lift Relationship

In designing a valve for a particular process, it is important to maintain a linear relationship between lift `l` and flow `q`. A nonlinear relationship makes flow control tuning more complicated that requires gain scheduling, piecewise linearization in the control software, or other measures to compensate for the nonlinearity. Equal percentage valves are popular valve trims to compensate for typical process nonlinearity and create a combined valve + system response that is linear.

#### Valve Positioners

Valve positioners measure the valve travel and automatically adjust the actuator to precisely lock in on a commanded valve opening. Valve positioners improve the precision with which a valve can follow commands. It is an inner feedback loop with the valve to match a valve opening set point.

#### Valve Design

A valve design involves selecting the type of valve, the body size `C_v`, and trim that gives a particular lift function `f(l)`. A few key concepts are important in valve design:

- Pressure is generated by pumps and dissipated over valves and the system. The pressure generated by a pump is equal to the sum of the pressure drop across the valve and system.

$$\Delta P_{pump} = \Delta P_v + \Delta P_{system}$$

- Most systems have a quadratic relationship between pressure drop and flow.

$$\Delta P_{system} \propto q^2$$

- The pressure drop across the valve should be 1/3 to 1/4 of the total pressure drop at typical operating conditions. High pressure drop means that too much pumping energy is consumed by the valve. Low pressure drop means that the valve is oversized and may have a hard time with fine-tuned flow adjustments and the valve is too large (and expensive) for that particular application. Pumps with variable frequency drives can also be used to regulate the flow and avoid the parasitic valve pressure drop all together.

#### Exercise

The flow rate of cooling fluid through a system is regulated by a valve. The pressure generated by the pump is constant.

$$\Delta P_{pump}=100 \mathrm{bar}$$

The cooling fluid has a specific gravity of 1.1. As a first step, characterize the valve without the system pressure drop. In a second step, determine the best valve trim for a linear relationship between lift and flow for the installed valve.

#### Part I: Valve Characterization

Plot the relationship between flow `q` and valve lift `l` for the valve characterized by the design equation.

$$q = C_v f(l) \sqrt{\frac{\Delta P_v}{g_s}}$$

with `C_v = 2` and either a linear lift function `f(l)=l` or an equal percentage lift function `f(l)=R^{l-1}` with `R=20`.

#### Solution, Part I

import matplotlib.pyplot as plt

## Lift functions for two different valve trim types

def f_lin(x):

return x # linear valve trim

def f_ep(x):

R = 20

return R**(x-1) # equal percentage valve trim (R = 20-50)

lift = np.linspace(0,1) # equally spaced points between 0 and 1

plt.figure(1) # create new figure

plt.title('Valve Performance - Not Installed')

plt.subplot(2,1,1) # 2,1 subplot with 1st window

plt.plot(lift,f_lin(lift),'b-') # linear valve

plt.plot(lift,f_ep(lift),'r--') # equal percentage

plt.ylabel('f(l)')

plt.legend(['Linear Valve Trim','Equal Percentage Valve Trim'])

g_s = 1.1 # specific gravity of fluid

def q(x,f,Cv,DPv):

return Cv * f(x) * np.sqrt(DPv/g_s) # flow through a valve

## Intrinsic valve performance

# no process equipment - all pressure drop is across valve

DPt = 100 # Total pressure generated by pump (constant)

Cv = 2 # Valve Cv

flow_lin = q(lift,f_lin,Cv,DPt) # flow with linear valve

flow_ep = q(lift,f_ep,Cv,DPt) # flow with equal percentage

plt.subplot(2,1,2) # 2,1 subplot with 2nd window

plt.plot(lift,flow_lin,'b-') # plot linear valve response

plt.plot(lift,flow_ep,'r--') # plot equal percentage valve

plt.ylabel('Flow')

plt.legend(['Linear Valve Trim','Equal Percentage Valve Trim'])

plt.xlabel('Fractional Valve Lift')

plt.show()

#### Part II: Installed Valve

The pressure drop across the system (without the valve) follows the following correlation between pressure drop `\Delta P_{system}` and flow rate `q`.

$$\Delta P_{system} = 2 q^2$$

Plot the relationship between flow `q` and valve lift `l` for the system and valve with `C_v = 2` and either a linear lift function `f(l)=l` or an equal percentage lift function `f(l)=R^{l-1}` with `R=20`.

#### Solution, Part II

The first step in this solution is to relate the pressure drop across the valve and the system to the pressure generated by the pump.

$$\Delta P_{pump} = \Delta P_v + \Delta P_{system}$$

with

$$\Delta P_{pump} = 100$$

$$\Delta P_v = g_s \left(\frac{q}{C_v f(l)}\right)^2$$

$$\Delta P_{system} = 2 q^2$$

This gives a combined equation in terms of lift `l` and flow `q`.

$$100 = g_s \left(\frac{q}{C_v f(l)}\right)^2 + 2 q^2$$

Algebraic manipulation is then used to obtain flow as a function of lift `q(l)` for the valve and system.

$$q(l) = \sqrt{\frac{100\left(C_v f(l)\right)^2}{(g_s + 2 \left(C_v f(l)\right)^2)}}$$

import matplotlib.pyplot as plt

DPt = 100 # Total pressure generated by pump (constant)

Cv = 2 # Valve Cv

g_s = 1.1 # specific gravity of fluid

lift = np.linspace(0,1) # equally spaced points between 0 and 1

## Lift functions for two different valve trim types

def f_lin(x):

return x # linear valve trim

def f_ep(x):

R = 20

return R**(x-1) # equal percentage valve trim (R = 20-50)

## Installed valve performance

# pressure drop across the system (without valve)

c1 = 2

def DPe(q):

return c1 * q**2

# valve and process equipment flow with 100 bar pressure drop

def qi(x,f,Cv):

return np.sqrt((Cv*f(x))**2*DPt / (g_s + (Cv*f(x))**2 * c1))

# Process equipment + Valve performance

flow_lin = qi(lift,f_lin,Cv) # flow through linear valve

flow_ep = qi(lift,f_ep,Cv) # flow through equal percentage valve

plt.figure(2)

plt.title('Valve Performance - Installed')

plt.subplot(3,1,1)

plt.plot(lift,flow_lin,'b-',label='Linear Valve')

plt.plot(lift,flow_ep,'r--',label='Equal Percentage Valve')

plt.plot([0,1],[0,6.5],'k-',linewidth=2,label='Desired Profile')

plt.legend(loc='best')

plt.ylabel('Flow')

plt.subplot(3,1,2)

plt.plot(lift,DPt-DPe(flow_lin),'k:',linewidth=3)

plt.plot(lift,DPe(flow_lin),'r--',linewidth=3)

plt.legend(['Linear Valve','Process Equipment'],loc='best')

plt.ylabel(r'$\Delta P$')

plt.subplot(3,1,3)

plt.plot(lift,DPt-DPe(flow_ep),'k:',linewidth=3)

plt.plot(lift,DPe(flow_ep),'r--',linewidth=3)

plt.legend(['Equal Percentage Valve','Process Equipment'],loc='best')

plt.ylabel(r'$\Delta P$')

plt.xlabel('Lift')

plt.show()