Class ControlValveSizing_IEC_60534
- All Implemented Interfaces:
Serializable, ControlValveSizingInterface
- Direct Known Subclasses:
ControlValveSizing_IEC_60534_full
ControlValveSizing_IEC_60534 class.
- Author:
- esol
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescription(package private) boolean(package private) double(package private) double(package private) double(package private) double(package private) double(package private) double(package private) boolean(package private) static final doubleConversion factor from Kv to Cv.(package private) static final doubleConstant for liquids (flow in m^3/h, pressure in kPa).(package private) static final doubleConstant for gases (flow in m^3/h, pressure in kPa, T in K @ 0°C ref).(package private) static final doubleUniversal gas constant [J/(mol*K)].(package private) static final doubleReference density of water [kg/m^3] used in the standard.Fields inherited from class ControlValveSizing
allowChoked, valveMechanicalDesign, xT -
Constructor Summary
ConstructorsConstructorDescriptionConstructor for ControlValveSizing_IEC_60534.ControlValveSizing_IEC_60534(ValveMechanicalDesign valveMechanicalDesign) Constructor for ControlValveSizing_IEC_60534. -
Method Summary
Modifier and TypeMethodDescriptiondoublecalculateFlowRateFromKvAndValveOpeningGas(double adjustedKv, double T, double MW, double mu, double gamma, double Z, double P1, double P2, double FL, double xT, boolean allowChoked) Calculates the flow rate for gas based on Kv and valve opening percentage.doublecalculateFlowRateFromKvAndValveOpeningGas(double adjustedKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromKvAndValveOpeningGas.doublecalculateFlowRateFromValveOpening(double adjustedKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromValveOpening.doublecalculateFlowRateFromValveOpeningGas(double adjustedKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromValveOpeningGas.doublecalculateFlowRateFromValveOpeningLiquid(double adjustedKv, double rho, double Psat, double Pc, double P1, double P2) Calculates liquid flow rate from valve opening.doublecalculateFlowRateFromValveOpeningLiquid(double adjustedKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromValveOpeningLiquid.doublecalculateValveOpeningFromFlowRateGas(double Q, double Kv, double T, double MW, double mu, double gamma, double Z, double P1, double P2, double FL, double xT, boolean allowChoked) Calculates the valve opening percentage for gas based on the flow rate and Kv.doublecalculateValveOpeningFromFlowRateGas(double Q, double Kv, double valveOpening, StreamInterface inletStream, StreamInterface outletStream) calculateValveOpeningFromFlowRateGas.doublecalculateValveOpeningFromFlowRateLiquid(double Q, double Kv, double rho, double Psat, double Pc, double P1, double P2) Calculates required valve opening for a given liquid flow rate.doublecalculateValveOpeningFromFlowRateLiquid(double Q, double Kv, StreamInterface inletStream, StreamInterface outletStream) calculateValveOpeningFromFlowRateLiquid.calcValveSize(double percentOpening) Calculates the valve size based on the fluid properties and operating conditions.(package private) doubleCv_to_Kv(double Cv) (package private) doubleffCriticalPressureRatioL(double Psat, double Pc) doublefindOutletPressureForFixedKv(double actualKv, StreamInterface inletStream) findOutletPressureForFixedKv.doublefindOutletPressureForFixedKvGas(double T, double MW, double gamma, double Z, double P1, double Q, double actualKv) Finds the outlet pressure for a given flow rate and a fixed Kv in a gas valve.doublefindOutletPressureForFixedKvGas(double actualKv, StreamInterface inletStream) findOutletPressureForFixedKvGas.doublefindOutletPressureForFixedKvLiquid(double rho, double Psat, double Pc, double mu, double P1, double Q, double actualKv, double FL, double Fd, boolean allowChoked, boolean allowLaminar) Finds the outlet pressure for a given flow rate Q and a fixed (actual) Kv in a liquid valve.doublefindOutletPressureForFixedKvLiquid(double actualKv, StreamInterface inletStream) findOutletPressureForFixedKvLiquid.doublegetD()Getter for the fieldd.doublegetD1()getD1.doublegetD2()getD2.doublegetFd()getFd.doublegetFL()getFL.getValve()getValve.booleanisAllowChoked.booleanisAllowLaminar.(package private) booleanisChokedTurbulentG(double x, double Fgamma, double xT) (package private) booleanisChokedTurbulentL(double dP, double P1, double Psat, double FF, double FL) booleanisFullOutput.(package private) doubleKv_to_Cv(double Kv) voidsetAllowChoked(boolean allowChoked) setAllowChoked.voidsetAllowLaminar(boolean allowLaminar) Setter for the fieldallowLaminar.voidsetD(double d) Setter for the fieldd.voidsetD1(double D1) setD1.voidsetD2(double D2) setD2.voidsetFd(double Fd) setFd.voidsetFL(double FL) setFL.voidsetFullOutput(boolean fullOutput) Setter for the fieldfullOutput.sizeControlValve(ControlValveSizing_IEC_60534.FluidType type, double rhoOrT, double MW, double mu, double gammaOrPsat, double ZOrPc, double P1, double P2, double Q, Double D1, Double D2, Double d, double FL, double Fd, double xTOrNone, boolean allowChoked, boolean allowLaminar, boolean fullOutput, double percentOpening) Sizes a control valve based on the provided parameters.sizeControlValveGas(double T, double MW, double gamma, double Z, double P1, double P2, double Q, double percentOpening) Sizes a control valve for a gas based on the provided parameters.sizeControlValveLiquid(double rho, double Psat, double Pc, double P1, double P2, double Q, double percentOpening) Sizes a control valve for a liquid based on the provided parameters.Methods inherited from class ControlValveSizing
calcKv, calculateMolarFlow, calculateOutletPressure, calculateValveOpeningFromFlowRate, getValveMechanicalDesign, getxT, setxT
-
Field Details
-
N1
static final double N1Constant for liquids (flow in m^3/h, pressure in kPa).- See Also:
-
N9
static final double N9Constant for gases (flow in m^3/h, pressure in kPa, T in K @ 0°C ref).- See Also:
-
rho0
static final double rho0Reference density of water [kg/m^3] used in the standard.- See Also:
-
R
static final double RUniversal gas constant [J/(mol*K)].- See Also:
-
KV_TO_CV_FACTOR
static final double KV_TO_CV_FACTORConversion factor from Kv to Cv.- See Also:
-
FL
double FL -
Fd
double Fd -
D1
double D1 -
D2
double D2 -
d
double d -
FD
double FD -
allowLaminar
boolean allowLaminar -
fullOutput
boolean fullOutput
-
-
Constructor Details
-
ControlValveSizing_IEC_60534
public ControlValveSizing_IEC_60534()Constructor for ControlValveSizing_IEC_60534.
-
ControlValveSizing_IEC_60534
Constructor for ControlValveSizing_IEC_60534.
- Parameters:
valveMechanicalDesign- aValveMechanicalDesignobject
-
-
Method Details
-
isAllowChoked
public boolean isAllowChoked()isAllowChoked.
- Specified by:
isAllowChokedin interfaceControlValveSizingInterface- Overrides:
isAllowChokedin classControlValveSizing- Returns:
- a boolean
-
setAllowChoked
public void setAllowChoked(boolean allowChoked) setAllowChoked.
- Specified by:
setAllowChokedin interfaceControlValveSizingInterface- Overrides:
setAllowChokedin classControlValveSizing- Parameters:
allowChoked- a boolean
-
isAllowLaminar
public boolean isAllowLaminar()isAllowLaminar.
- Returns:
- a boolean
-
setAllowLaminar
public void setAllowLaminar(boolean allowLaminar) Setter for the field
allowLaminar.- Parameters:
allowLaminar- a boolean
-
isFullOutput
public boolean isFullOutput()isFullOutput.
- Returns:
- a boolean
-
setFullOutput
public void setFullOutput(boolean fullOutput) Setter for the field
fullOutput.- Parameters:
fullOutput- a boolean
-
getFL
public double getFL()getFL.
- Returns:
- a double
-
setFL
public void setFL(double FL) setFL.
- Parameters:
FL- a double
-
getFd
public double getFd()getFd.
- Returns:
- a double
-
setFd
public void setFd(double Fd) setFd.
- Parameters:
Fd- a double
-
getD1
public double getD1()getD1.
- Returns:
- a double
-
setD1
public void setD1(double D1) setD1.
- Parameters:
D1- a double
-
getD2
public double getD2()getD2.
- Returns:
- a double
-
setD2
public void setD2(double D2) setD2.
- Parameters:
D2- a double
-
getD
public double getD()Getter for the field
d.- Returns:
- a double
-
setD
public void setD(double d) Setter for the field
d.- Parameters:
d- a double
-
calcValveSize
Calculates the valve size based on the fluid properties and operating conditions.- Specified by:
calcValveSizein interfaceControlValveSizingInterface- Overrides:
calcValveSizein classControlValveSizing- Parameters:
percentOpening- a double- Returns:
- a
Mapobject
-
getValve
-
sizeControlValve
public Map<String,Object> sizeControlValve(ControlValveSizing_IEC_60534.FluidType type, double rhoOrT, double MW, double mu, double gammaOrPsat, double ZOrPc, double P1, double P2, double Q, Double D1, Double D2, Double d, double FL, double Fd, double xTOrNone, boolean allowChoked, boolean allowLaminar, boolean fullOutput, double percentOpening) Sizes a control valve based on the provided parameters.- Parameters:
type- the type of fluid (LIQUID or GAS)rhoOrT- density for liquid or temperature for gasMW- molecular weight of the fluidmu- dynamic viscosity of the fluidgammaOrPsat- specific heat ratio for gas or saturation pressure for liquidZOrPc- compressibility factor for gas or critical pressure for liquidP1- upstream pressureP2- downstream pressureQ- flow rateD1- upstream pipe diameterD2- downstream pipe diameterd- valve diameterFL- liquid pressure recovery factorFd- valve style modifierxTOrNone- pressure drop ratio factor for gasallowChoked- whether to allow choked flowallowLaminar- whether to allow laminar flowfullOutput- whether to return full outputpercentOpening- Valve opening percentage (0-100)- Returns:
- a map containing the sizing results
-
sizeControlValveLiquid
public Map<String,Object> sizeControlValveLiquid(double rho, double Psat, double Pc, double P1, double P2, double Q, double percentOpening) Sizes a control valve for a liquid based on the provided parameters. Aligned with IEC 60534 and 'fluids' library.- Parameters:
rho- Density of the liquid [kg/m^3]Psat- Saturation pressure of the liquid [Pa]Pc- Critical pressure of the liquid [Pa]P1- Upstream pressure [Pa]P2- Downstream pressure [Pa]Q- Volumetric flow rate [m^3/s]percentOpening- Valve opening percentage (0-100)- Returns:
- A map containing the sizing results (Kv, Kv, choked, etc.).
-
calculateFlowRateFromValveOpening
public double calculateFlowRateFromValveOpening(double adjustedKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromValveOpening.
Calculates the flow rate through a control valve based on the valve opening, Kv, and inlet/outlet streams.
Calculates the flow rate through a control valve based on the valve opening, Kv, and inlet/outlet streams.
- Specified by:
calculateFlowRateFromValveOpeningin interfaceControlValveSizingInterface- Overrides:
calculateFlowRateFromValveOpeningin classControlValveSizing- Parameters:
adjustedKv- a doubleinletStream- aStreamInterfaceobjectoutletStream- aStreamInterfaceobject- Returns:
- a double
-
calculateFlowRateFromValveOpeningGas
public double calculateFlowRateFromValveOpeningGas(double adjustedKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromValveOpeningGas.
- Parameters:
adjustedKv- a doubleinletStream- aStreamInterfaceobjectoutletStream- aStreamInterfaceobject- Returns:
- a double
-
calculateFlowRateFromValveOpeningLiquid
public double calculateFlowRateFromValveOpeningLiquid(double adjustedKv, double rho, double Psat, double Pc, double P1, double P2) Calculates liquid flow rate from valve opening.- Parameters:
adjustedKv- Max flow coefficient of the valverho- Liquid density [kg/m^3]Psat- Saturation pressure [Pa]Pc- Critical pressure [Pa]P1- Upstream pressure [Pa]P2- Downstream pressure [Pa]- Returns:
- Flow rate [m^3/s]
-
calculateFlowRateFromValveOpeningLiquid
public double calculateFlowRateFromValveOpeningLiquid(double adjustedKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromValveOpeningLiquid.
- Parameters:
adjustedKv- a doubleinletStream- aStreamInterfaceobjectoutletStream- aStreamInterfaceobject- Returns:
- a double
-
calculateValveOpeningFromFlowRateLiquid
public double calculateValveOpeningFromFlowRateLiquid(double Q, double Kv, double rho, double Psat, double Pc, double P1, double P2) Calculates required valve opening for a given liquid flow rate.- Parameters:
Q- Desired flow rate [m^3/s]Kv- Max flow coefficient of the valverho- Liquid density [kg/m^3]Psat- Saturation pressure [Pa]Pc- Critical pressure [Pa]P1- Upstream pressure [Pa]P2- Downstream pressure [Pa]- Returns:
- Required valve opening percentage (0-100).
-
calculateValveOpeningFromFlowRateLiquid
public double calculateValveOpeningFromFlowRateLiquid(double Q, double Kv, StreamInterface inletStream, StreamInterface outletStream) calculateValveOpeningFromFlowRateLiquid.
- Parameters:
Q- a doubleKv- a doubleinletStream- aStreamInterfaceobjectoutletStream- aStreamInterfaceobject- Returns:
- a double
-
findOutletPressureForFixedKvLiquid
public double findOutletPressureForFixedKvLiquid(double rho, double Psat, double Pc, double mu, double P1, double Q, double actualKv, double FL, double Fd, boolean allowChoked, boolean allowLaminar) Finds the outlet pressure for a given flow rate Q and a fixed (actual) Kv in a liquid valve. This is solved iteratively using a bisection search algorithm.- Parameters:
rho- Density of the liquid [kg/m^3]Psat- Saturation pressure [Pa]Pc- Critical pressure [Pa]mu- Dynamic viscosity [Pa.s] - Note: Not used in this turbulent modelP1- Upstream pressure [Pa]Q- Flow rate [m^3/s]actualKv- The actual installed valve's KvFL- Liquid pressure recovery factorFd- Valve style modifierallowChoked- Whether to allow choked flowfindOutletPressureForFixedKvLiquidallowLaminar- Whether to allow laminar flow- Returns:
- Outlet pressure P2 [Pa]
-
findOutletPressureForFixedKvLiquid
findOutletPressureForFixedKvLiquid.
- Parameters:
actualKv- a doubleinletStream- aStreamInterfaceobject- Returns:
- a double
-
sizeControlValveGas
public Map<String,Object> sizeControlValveGas(double T, double MW, double gamma, double Z, double P1, double P2, double Q, double percentOpening) Sizes a control valve for a gas based on the provided parameters. CORRECTED to include Fgamma, aligning with IEC 60534 and 'fluids' library.- Parameters:
T- Temperature of the gas [K]MW- Molecular weight of the gas [g/mol]gamma- Specific heat ratioZ- Compressibility factorP1- Upstream pressure [Pa]P2- Downstream pressure [Pa]Q- Volumetric flow rate at inlet conditions [m^3/s]percentOpening- Valve opening percentage (0-100)- Returns:
- A map containing the sizing results (Kv, Kv, Y, choked, etc.).
-
calculateFlowRateFromKvAndValveOpeningGas
public double calculateFlowRateFromKvAndValveOpeningGas(double adjustedKv, double T, double MW, double mu, double gamma, double Z, double P1, double P2, double FL, double xT, boolean allowChoked) Calculates the flow rate for gas based on Kv and valve opening percentage.- Parameters:
adjustedKv- full flow coefficient (at 100% opening)T- temperature of the gas (K)MW- molecular weight of the gas (g/mol)mu- dynamic viscosity of the gas (Pa·s)gamma- specific heat ratio of the gasZ- compressibility factor of the gasP1- upstream pressure (Pa)P2- downstream pressure (Pa)FL- liquid pressure recovery factorxT- pressure drop ratio factor for gasallowChoked- whether to allow choked flow- Returns:
- the calculated flow rate in m^3/s
-
calculateFlowRateFromKvAndValveOpeningGas
public double calculateFlowRateFromKvAndValveOpeningGas(double adjustedKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromKvAndValveOpeningGas.
- Parameters:
adjustedKv- a doubleinletStream- aStreamInterfaceobjectoutletStream- aStreamInterfaceobject- Returns:
- a double
-
calculateValveOpeningFromFlowRateGas
public double calculateValveOpeningFromFlowRateGas(double Q, double Kv, double T, double MW, double mu, double gamma, double Z, double P1, double P2, double FL, double xT, boolean allowChoked) Calculates the valve opening percentage for gas based on the flow rate and Kv.- Parameters:
Q- desired flow rate in m^3/sKv- full flow coefficient (at 100% opening)T- temperature of the gas (K)MW- molecular weight of the gas (g/mol)mu- dynamic viscosity of the gas (Pa·s)gamma- specific heat ratio of the gasZ- compressibility factor of the gasP1- upstream pressure (Pa)P2- downstream pressure (Pa)FL- liquid pressure recovery factorxT- pressure drop ratio factor for gasallowChoked- whether to allow choked flow- Returns:
- the valve opening percentage (0 to 100%)
-
calculateValveOpeningFromFlowRateGas
public double calculateValveOpeningFromFlowRateGas(double Q, double Kv, double valveOpening, StreamInterface inletStream, StreamInterface outletStream) calculateValveOpeningFromFlowRateGas.
- Parameters:
Q- a doubleKv- a doublevalveOpening- a doubleinletStream- aStreamInterfaceobjectoutletStream- aStreamInterfaceobject- Returns:
- a double
-
findOutletPressureForFixedKvGas
public double findOutletPressureForFixedKvGas(double T, double MW, double gamma, double Z, double P1, double Q, double actualKv) Finds the outlet pressure for a given flow rate and a fixed Kv in a gas valve. This is solved iteratively using a bisection search algorithm.- Parameters:
T- Temperature [K]MW- Molecular Weight [g/mol]gamma- Specific heat ratioZ- Compressibility FactorP1- Upstream pressure [Pa]Q- Volumetric flow rate [m^3/s]actualKv- The actual installed valve's Kv- Returns:
- The calculated outlet pressure P2 [Pa] that satisfies the conditions.
-
findOutletPressureForFixedKvGas
findOutletPressureForFixedKvGas.
- Parameters:
actualKv- a doubleinletStream- aStreamInterfaceobject- Returns:
- a double
-
isChokedTurbulentL
boolean isChokedTurbulentL(double dP, double P1, double Psat, double FF, double FL) -
isChokedTurbulentG
boolean isChokedTurbulentG(double x, double Fgamma, double xT) -
ffCriticalPressureRatioL
double ffCriticalPressureRatioL(double Psat, double Pc) -
Kv_to_Cv
double Kv_to_Cv(double Kv) -
Cv_to_Kv
double Cv_to_Kv(double Cv) -
findOutletPressureForFixedKv
findOutletPressureForFixedKv.
Finds the outlet pressure for a given Kv, valve opening, and inlet stream.
Finds the outlet pressure for a given flow rate and fixed Kv, for both gas and liquid.
- Specified by:
findOutletPressureForFixedKvin interfaceControlValveSizingInterface- Overrides:
findOutletPressureForFixedKvin classControlValveSizing- Parameters:
actualKv- a doubleinletStream- aStreamInterfaceobject- Returns:
- a double
-