describe metrics formula with cavets description
This calculation method uses the Cv curve of a valve to estimate the flow rate through it. Valve Flow Coefficient (Cv) is the flow capability of a control valve at open conditions relative to the pressure drop across the valve.
Flow Control Valves have a table of open % vs Cv value. XV’s or SV’s have a single CV value for when they are fully open. In addition to the Cv value, numerous physical properties for the respective gas flowing through the valve are used to compute the flow rate.
It’s method of estimating the flow based on interpolation of the flow chart. In following gdoc gdoc you can find set of examples and CV tables for each CV based metric.
Second part flow recovery rate interpolated based on FL table.
Each set of metrics based on following formula inputs: psig_in, psig_out, valve, temp, gas
valve
is between 0 and 100 and it’s %
Intermediate variables are computed:
psia_in = psig_in + 14.696 #absolute pressure
psia_out = psig_out + 14.696 #absolute pressure
pressure_change = psia_out / psia_in
rankine_temp = temp + 460
cv = cv_interpolation(valve)
fl_recovery = fl_interpolation(valve)
Following constant are in use:
gas_density_vs_air
it’s physical constant dependant on gas type1360
is a unit version factor for variables and output in imperial units834
is a unit version factor for variables and output in imperial unitsgas_std_density
it’s physical constant dependant on gas type1.25
is a ratio applied to argon gas streams to estimate the N2 flow rate to condense the streamMain formula returns lb/h:
0 if valve < 0 or 100 < valve or pressure_change >= 1
(gas_std_density * cv) / (sqrt(gas_density_vs_air * rankine_temp) / (fl_recovery * 834 * psia_in)) if pressure_change < 0.53
(gas_std_density * cv) / (sqrt(gas_density_vs_air * rankine_temp) / (sqrt((psia_in - psia_out) * psia_out) * 1360)) if pressure_change >= 0.53
At the end scfm = to_scfm(gas_type, lbh)
fcv_202_lbh, fcv_202_scfm
Inputs: psig_in=PT201, psig_out=0, valve=FCV202, temp=75°F if ARS14002 or ARS16006 else 150°F, gas=Ar
fcv_202_scfm
0 if FCV202 <= 1 or FCV204 >= 15 or ft_202_scfm <= 100
based on FCV204: gdoc
fcv_204_lbh, fcv_204_scfm, coldbox_lbh, coldbox_scfm
Inputs: psig_in=PT201, psig_out=0, valve=FCV204, temp=75°F if ARS14002 or ARS16006 else 150°F, gas=Ar
fcv_204_scfm
0 if FCV202 > fcv202MinFlowThreshold and (FCV204 < fcv204NoFlowThreshold or FCV204ZT < fcv204NoFlowThreshold)
fcv202MinFlowThreshold = 15 if ARS13007 else 20
fcv204NoFlowThreshold = 6 if ARS15008 or ARS13007 or (ARS16006 and before(2020-06-03) else 5
ft_202_scfm if FCV202 <= 1 or FCV204 >= 15 or ft_202_scfm <= 100
fcv_204_scfm = FT100 - FT_101A
(coldbox metrics are empty)coldbox_scfm = ft_202_scfm - fcv_204_scfm
coldbox_lbh = lbh(coldbox_scfm)
fcv_204b_lbh, fcv_204b_scfm
(only for ARS19004, ARS20009, ARS15002)Inputs: psig_in=PT201, psig_out=0, valve=FCV204B, temp=75°F, gas=Ar
if FCV204 = 0
:
fcv_204_scfm = fcv_204b_scfm
fcv_204_lbh = fcv_204b_lbh
coldbox_scfm = ft_202_scfm - fcv_204b_scfm
coldbox_lbh = lbh(coldbox_scfm)
fcv_605_scfm, fcv_605_lbh, fcv_605_n2_use_lbh, fcv_605_n2_use_scfm
Inputs: psig_in=PT701, psig_out=PT601, valve=FCV605, temp=-300°F, gas=Ar
There are times where HXR_600 becomes full of argon such that the flow of argon through FCV_605 into the heat exchanger becomes obstructed and flow stops. In this situation FCV_605 cannot relieve pressure in TK_700 like it is supposed to do and it get stuck fully open (100%).
During this time period we log a high fcv_605_scfm
value, even though there is realistically 0 flow.
Because of this fcv_605_scfm
performs a check on the level of argon in HXR_600 according PDT_601_ALT
and if it exceeds a threshold
, the output flow rate fcv_605_scfm
is set to 0.
For ARS20009 after 2024-07-10 use FCV605_ZT
instead of normal FCV_605
.
Site | threshold |
---|---|
ARS14002 | 130 |
ARS15002 | 90 |
ARS15008 | 90 |
ARS16005 | 130 |
fcv_605_n2_use_scfm = fcv_605_scfm * 1.25
fcv_605_n2_use_lbh = lbh(fcv_605_n2_use_scfm)
sv_205_out_lbh, sv_205_out_scfm, sv_205_out_scfm_cb, sv_205_out_scfm_atm
Inputs: psig_in=PT222, psig_out=PT201, valve=100 if ARS19004 and SV205A/B/C = 1 or SV205 = 1 else 0, temp=50°F, gas=Ar
sv_205_out_scfm_atm = sv_205_out_scfm * fcv_204_scfm / ft_202_scfm
sv_205_out_scfm_cb = sv_205_out_scfm - sv_205_out_scfm_atm
Additionaly for ARS19004 and ARA20009
:
sv_205a_out_scfm_atm + sv_205b_out_scfm_atm + sv_205c_out_scfm_atm = sv_205_out_scfm_atm
(evenly distributed among open valves)
sv_205a_out_scfm_cb + sv_205b_out_scfm_cb + sv_205c_out_scfm_cb = sv_205_out_scfm_cb
(evenly distributed among open valves)
xv_1005_scfm, xv_1005_lbh
Inputs: psig_in=PT1003, psig_out=0, valve=100 if XV1005OUT = 1 else 0, temp=50°F, gas=Ar
fcv_207_scfm, fcv_207_lbh, fcv_207_n2_use_lbh, fcv_207_n2_use_scfm
Inputs: psig_in=PT1002, psig_out=PT601, valve=FCV207_REFINED, temp=50°F, gas=Ar
FCV207_REFINED = 0 if XV_207_OUT = 0 and XV_208_OUT = 0 else FCV207
FCV207_REFINED = FCV207
fcv_207_n2_use_scfm = fcv_207_scfm * 1.25
fcv_207_n2_use_lbh = lbh(fcv_207_n2_use_scfm)
xv_623_scfm, xv_623_lbh
Inputs: psig_in=PT601, psig_out=0, valve=100 if XV623 = 1 else 0, temp=TE601, gas=Ar
CV is flat:
fcv_405_scfm, fcv_405_lbh, fcv_405_n2_use_lbh, fcv_405_n2_use_scfm
(ARS19004, ARS20009)Inputs: psig_in=PT701, psig_out=PT601, valve=FCV405, temp=-300°F, gas=Ar
For ARS20009 after 2024-07-10 use FCV405_ZT
instead of normal FCV_405
.
fcv_405_n2_use_scfm = fcv_405_scfm * 1.25
fcv_405_n2_use_lbh = lbh(fcv_405_n2_use_scfm)
fcv_755_scfm, fcv_755_lbh, fcv_755_n2_use_lbh, fcv_755_n2_use_scfm
Inputs: psig_in=PT751, psig_out=PT701, valve=FCV755, temp=-300°F, gas=Ar
fcv_755_n2_use_scfm = fcv_755_scfm * 1.25
fcv_755_n2_use_lbh = lbh(fcv_755_n2_use_scfm)
fcv_504_scfm, fcv_504_lbh
Inputs: psig_in=PT603, psig_out=1, valve=FCV504, temp=TE504, gas=N2
Extra formula condition:
<empty> if PDT603 < 5
fcv_754_scfm, fcv_754_lbh
Inputs: psig_in=PT753, psig_out=1, valve=FCV754, temp=-302°F, gas=N2
sv_1207_scfm, sv_1207_lbh
Inputs: psig_in=PT1201, psig_out=0, valve=SV1207, temp=50°F, gas=Ar
xv_523_out_scfm, xv_523_out_lbh
(ARS16006, ARS19004, ARS20009)Inputs: psig_in=PT601, psig_out=0, valve=XV523OUT, temp=TE501, gas=Ar
xv_1109a/b_scfm, xv_1109a/b_lbh, xv_1109a/b_scfm_recond, xv_1109a/b_scfm_atm
Inputs: psig_in=PT1101A/B, psig_out=PT701 if PDT603 < 10 else PT601, valve=0 if PDT601ALT > 410 or XV1109A/B_OUT_AVG_5M > 0.9 else SV1109A/B_OUT, temp=boil(PT1101A/B), gas=Ar
Caveats are to set flow to 0 if the HXR_600 is full of argon and therefore gas cannot flow through XV_1109. HXR_600 being full is assessed according to PDT_601 level. Valve should never be open for extended time periods, so after 5 minutes of being open it is assumed there is 0 flow also.
xv623sph = 40 if ARS13007 else XV623SPH
xv_1109a/b_scfm_recond = xv_1109a/b_scfm if PDT603ALT > 10
xv_1109a/b_scfm_atm = xv_1109a/b_scfm if PDT603ALT <= 10
xv_1309a/b_scfm, xv_1309a/b_lbh
Inputs: psig_in=PT1301A/B, psig_out=0.5, valve=100 if XV1309A/B_OUT = 1 else 0, temp=boil(PT1301A/B), gas=N2
xv_806_scfm, xv_806_lbh
PT_802D = 0 if ARS13007
Inputs: psig_in=sum(PT_802A/B/C/D), psig_out=0, valve=100 if XV806 = 1 else 0, temp=50, gas=Ar
xv_806_scfm = min(xv_806_scfm, p_800_scfm)
(upper bound)sv_725_scfm, sv_725_lbh
for ARS13007Inputs: psig_in=PT721, psig_out=0, valve=100 if SV725 = 1 else 0, temp=-290°F, gas=Ar
fcv_102_scfm, fcv_102_lbh
Final result is a sum of flows for each active tower. Following input has set of separate sensors variants for each active tower, i.e. PT_101_PP
or FCV_102_T1
.
Inputs: psig_in=PT101, psig_out=0, valve=FCV_102, temp=TE101, gas=Ar
Upper bound for flow for each active tower is defined as follows:
FT1002/n
where n
is number of active towersFT1002
is divided among active towers as follows:
PP=44%, T1=27%, T2=29%
PP=61%, T1 or T2=39%
PP=29%, T1=36%, T2=35%
PP=45%, T1 or T2=55%
T1=50%, T2=50%
FCV_102
flow rate is smc_atb_supply_flow
FCV_102
flow rate is smc_atc_supply_flow
For HRS18006 formula is defined as:
Inputs: psig_in=PT100, psig_out=0, valve=FCV102VENT, temp=TT100, gas=He