felib.iso5167 class

The iso5167 performs the calculation of:

1. flow-rate [kg/h]
2. differential pressure [Pa]
3. orifice diameter [mm]
4. pipe diameter [mm]

completely in accordance with:

ISO-5167: Measurement of fluid flow by means of pressure differential devices

Table 1: Description of the iso5167 class interface: properties (variables), methods (functions) and error flags.

PROPERTIES

DESCRIPTION SET PROPERTY VALUE GET PROPERTY VALUE
Pressure [Pa]
(0.1 to 2.0E+8)
void SetPressure(double newValue) double GetPressure()
Temperature [C]
(-200.0 to 1000.0)
void SetTemperature(double newValue) double GetTemperatureC()
Density [kg/m3]
(0.000001 to 10000)
void SetDensity(double newValue) double GetDensity()
Viscosity [Pa*s]
(0.0 to 10.0)
void SetViscosity(double newValue) double GetViscosity()
Isentropic exponent
(0.1 to 200.0)
void SetIsentropicExponent(double newValue) double GetIsentropicExponent()
Differential device type:
0 - Orifice, flange tappings
1 - Orifice, corner tappings
2 - Orifice, D & D/2 tappings
3 - Venturi, machined inlet
4 - Venturi, rough cast inlet
5 - Venturi, rough-welded sheet-iron inlet
6 - Long radius nozzle
7 - ISA 1932 nozzle
8 - Venturi nozzle (ISA inlet)
void SetDifferentialDeviceType(short int newValue) short int GetDifferentialDeviceType()
Location of pressure tap:
0 - upstream
1 - downstream

void SetUpDownstream(short int newValue)

short int GetUpDownstream()
Fluid type:
0 - gas
1 - liquid
void SetFluidType(double newValue) short int GetFluidType()
Beta ratio:
(depends on the differential device type)
0 - (0.1 to 0.75)
1 - (0.1 to 0.75)
2 - (0.1 to 0.75)
3 - (0.4 to 0.75)
4 - (0.3 to 0.75)
5 - (0.4 to 0.7)
6 - (0.2 to 0.8)
7 - (0.3 to 0.8)
8 - (0.316 to 0.775)
void SetBetaRatio(double newValue) double GetBetaRatio()
Coefficient of discharge

-

double GetDischargeCoefficient()
Expansion factor

-

double GetExpansionFactor()
Reynolds number
(see ISO5167)

-

double GetReynoldsNumber()
Differential pressure [Pa]
(0 to 0.25*pressure)
void SetDifferentialPressure(double newValue) double GetDifferentialPressure()
Mass flow-rate [kg/h]
(0.001 to 1E+9)
void SetMassFlowRate(double newValue) double GetMassFlowRate()
Orifice diameter [mm]
(depends on the differential device type)
0 - (12.5 to 750.0)
1 - (12.5 to 750.0)
2 - (12.5 to 750.0)
3 - (20.0 to 187.5)
4 - (30.0 to 600.0)
5 - (80.0 to 840.0)
6 - (10.0 to 504.0)
7 - (15.0 to 400.0)
8 - (20.54 to 387.5)
void SetOrificeDiameter(double newValue) double GetOrificeDiameter()
Pipe diameter [mm]
(depends on the differential device type)
0 - (50.0 to 1000.0)
1 - (50.0 to 1000.0)
2 - (50.0 to 1000.0)
3 - (50.0 to 250.0)
4 - (100.0 to 800.0)
5 - (200.0 to 1200.0)
6 - (50.0 to 630.0)
7 - (50.0 to 500.0)
8 - (65.0 to 500.0)
void SetPipeDiameter(double newValue) double GetPipeDiameter()
Protection key void SetKeyCode(long int newValue)

-

Error status

-

long int GetErrorFlag()

METHODS

Differential pressure calculation long int calculateDifferentialPressure(): calculates differential pressure, beta ratio, Reynolds number, coefficient of discharge, expansion factor and returns long int representing error status. All the remaining properties must be set before calling the method.
Flow-rate calculation long int calculateFlowRate(): calculates mass flow-rate, beta ratio, Reynolds number, coefficient of discharge, expansion factor and returns long int representing error status. All the remaining properties must be set before calling the method.
Orifice diameter calculation long int calculateOrificeDiameter(): calculates orifice diameter, beta ratio, Reynolds number, coefficient of discharge, expansion factor and returns long int representing error status. All the remaining properties must be set before calling the method.
Pipe diameter calculation long int calculatePipeDiameter(): calculates pipe diameter, Reynolds number, coefficient of discharge, expansion factor and returns long int representing error status. All the remaining properties must be set before calling the method.

ERROR STATUS

Error status bits are cleared or set upon the completion of any of the above methods, as follows
Bit 0 =1 (0001H) The pressure <0.1 [Pa] or > 2.0E8 [Pa].
Bit 1 =1 (0002H) The temperature <-200.0 C or > 1000.0 C.
Bit 2 =1 (0004H) The differential pressure > 0.25*pressure.
Bit 3 =1 (0008H) The density < 0.000001 [kg/m^3] or > 10000.0 [kg/m^3].
Bit 4 =1 (0010H) The viscosity < 0.0 [Pa*s] or > 10.0 [Pa*s].
Bit 5 =1 (0020H) The isentropic exponent < 0.1 or > 200.
Bit 6 =1 (0040H) The orifice diameter out of range (the range depends on the differential device type).
Bit 7 =1 (0080H) The pipe diameter out of range (the range depends on the differential device type).
Bit 8 =1 (0100H) The mass flow-rate <0.001 [kg/h] or > 1E+9 [kg/h].
Bit 9 =1 (0200H) The number specifying the fluid type out of range (<0 or >1).
Bit 10 =1 (0400H) The number specifying the differential device type out of range (<0 or >8).
Bit 11 =1 (0800H) The number specifying the location of pressure tap out of range (<0 or >1).
Bit 12 =1 (1000H) The beta ratio out of range (the range depends on the differential device type).
Bit 13 =1 (2000H) The Reynolds number out of range (the range depends on the differential device type).
Bit 24 =1 (1000000H) Invalid protection key.
All other bits = 0 Unused.