添加ISA1932喷嘴计算,文丘里喷嘴计算 /** 喷嘴喉部直径(mm,对应ISO 1932标准) */

private double dNozzleD;
    /** 喷嘴入口圆弧半径(mm,标准要求 r≥0.2d) */
    private double dNozzleR;
    /** 喷嘴总长度(mm,长径喷嘴L1≥0.6D;短径喷嘴L1=0.3D) */
    private double dNozzleL1;
    /** 喷嘴类型:0-长径喷嘴;1-短径喷嘴 */
    private int dNozzleType;

// ==================== 经典文丘里管专属参数 ====================
    /** 文丘里管喉部直径(mm) */
    private double dVenturiD;
    /** 收缩段锥角(°,标准范围15°~25°) */
    private double dVenturiTheta1;
    /** 扩散段锥角(°,标准范围5°~15°) */
    private double dVenturiTheta2;
    /** 喉部平直段长度(mm,标准Lt=0.5d~1.0d) */
    private double dVenturiLt;
    /** 文丘里管类型:0-粗铸收缩段;1-机械加工收缩段;2-粗焊铁板收缩段;3-文丘里喷嘴 */
    private int dVenturiType;
This commit is contained in:
廖德云 2025-12-22 22:12:12 +08:00
parent 662dc541ea
commit 2760f4ca8a
4 changed files with 271 additions and 759 deletions

View File

@ -3,7 +3,7 @@ spring:
# redis 配置
redis:
# 地址
host: localhost
host: 192.168.3.246
# 端口默认为6379
port: 6379
# 数据库索引

View File

@ -7,163 +7,27 @@ import com.ruoyi.caltools.model.GasProps;
import javax.swing.*;
import java.util.Optional;
import static com.ruoyi.caltools.controller.FlowController.FlowConvert_BaseToWork;
import static com.ruoyi.caltools.controller.FlowController.YaLiSunShi;
public class DpFlowCalc {
/**
标准孔板流量计算
*/
public void OFlowCal(GasProps gasProps, FlowProps flowProps){
flowProps.setdOrificeD(flowProps.getdOrificeD() * (1 + 0.000001 * (flowProps.getdOrificeMaterial()) * (flowProps.getdTf() - 293.15)));
flowProps.setdPipeD(flowProps.getdPipeD() * (1 + 0.000001 * (flowProps.getdPipeMaterial()) * (flowProps.getdTf() - 293.15)));
flowProps.setdBeta(flowProps.getdOrificeD() / flowProps.getdPipeD());
// flowProps.setdBeta(0.5972);
//求渐近速度系数 E
flowProps.setdE(1 / Math.pow((1 - Math.pow(flowProps.getdBeta(), 4)), 0.5));
// flowProps.setdE(1.0615);
//求相对密度系数 FG
// LiuTiType = 1
flowProps.setdFG(Math.pow((1 / gasProps.dRD_Real), 0.5));
// flowProps.setdFG(1.2531);
//求流动温度系数 'FT
flowProps.setdFT(Math.pow((293.15 / flowProps.getdTf()), 0.5));
// flowProps.setdFT(1.0086);
//求等熵指数?????????????????????????????????
flowProps.setdKappa(gasProps.dKappa);
// flowProps.setdKappa(1.357);
//求动力粘度 dlnd
flowProps.setdDViscosity(Dlndjs(flowProps.getdPf()/1e6, flowProps.getdTf()));
// flowProps.setdDViscosity(0.01096);
//求可膨胀系数
flowProps.setdDExpCoefficient(KePenZhang_JiSuan(flowProps.getdPf() , flowProps.getdDp(), flowProps.getdBeta(), gasProps.getdKappa(), flowProps.getdCoreType(), 0));
// flowProps.setdDExpCoefficient(0.9977);
// gasProps.dFpv=1.0195;
// gasProps.dHhvv=39.944;
// gasProps.dRD_Real=0.6368;
//迭代计算流量和流出系数
double conQvA = 0.0000031795 * (1530000.0D * gasProps.dRD_Real / (flowProps.getdDViscosity() * flowProps.getdOrificeD())) * flowProps.getdE() * Math.pow(flowProps.getdOrificeD(), 2) * gasProps.dFpv * flowProps.getdFG() * flowProps.getdDExpCoefficient() * flowProps.getdFT() * Math.sqrt(flowProps.getdPf() * flowProps.getdDp() / 1e6);
double[] XQv = new double[4];
double[] CQv = new double[4];
double[] dQv = new double[4];
double Qn = 0;
int n ;
XQv[0] = 1000000.0F;
boolean xhFlag=true;
_100000:
while(xhFlag) {
for (n = 1; n <= 2; n++) {
CQv[n] = C_JiSuan(flowProps.getdOrificeD(), flowProps.getdBeta(), XQv[n - 1], conQvA, flowProps.getdPtmode(), flowProps.getdCoreType(), 0);
XQv[n] = conQvA * CQv[n];
dQv[n] = XQv[n] - XQv[n - 1];
}
if (XQv[2] == XQv[1] || dQv[2] == dQv[1]) {
Qn = conQvA * flowProps.getdDViscosity() * flowProps.getdOrificeD() * CQv[2] / (1530000.0D * gasProps.dRD_Real);
//管道雷诺数
flowProps.setdRnPipe(XQv[2]);
//流出系数
flowProps.setdCd(CQv[2]);
}
if (Math.abs((conQvA - XQv[2] / CQv[1]) / conQvA) > 0.00000000000000005) {
XQv[0] = XQv[n - 1] - dQv[n - 1] * ((XQv[n - 1] - XQv[n - 2]) / (dQv[n - 1] - dQv[n - 2]));
//C# TO JAVA CONVERTER TODO TASK: There is no 'goto' in Java:
continue _100000;
}
else
{
xhFlag=false;
}
}
//孔板锐利度系数Bk
flowProps.setdOrificeSharpness(1);
if (flowProps.getdCoreType() == 0)
{
flowProps.setdBk((flowProps.getdOrificeSharpness() == 0) ? (BkTable(flowProps.getdOrificeRk(), flowProps.getdOrificeD(), 1)) : (flowProps.getdOrificeSharpness()));
}
else
{
flowProps.setdBk(1);
}
//管道粗糙度系数 Gme
flowProps.setdRoughNessPipe(CcdXsjs(flowProps.getdPipeType(), flowProps.getdPipeD(), flowProps.getdBeta(), flowProps.getdRnPipe()));
//修正后的流出系数
flowProps.setdCd(flowProps.getdCd() * flowProps.getdBk() * flowProps.getdRoughNessPipe());
// flowProps.setdCd(0.6039);
//标况体积流量 m³s
flowProps.setdVFlowb(Qn * flowProps.getdBk() * flowProps.getdRoughNessPipe());
//工况体积流量
flowProps.setdVFlowf(FlowConvert_BaseToWork(flowProps, gasProps));
//标况质量流量
flowProps.setdMFlowb(flowProps.getdVFlowb() * gasProps.dRhob);
//标况能量流量
flowProps.setdEFlowb(flowProps.getdVFlowb() * gasProps.dHhvv);
//管道内天然气流速
flowProps.setdVelocityFlow(flowProps.getdVFlowf() / (3.1415926 * Math.pow((flowProps.getdPipeD() / 2000), 2)));
//压力损失
flowProps.setdPressLost(YaLiSunShi(flowProps.getdCd(), flowProps.getdBeta(), flowProps.getdDp(), flowProps.getdCoreType()));
}
/**
* 计算管道绝对粗糙度 K (GB/T 21446-2008 附录C)
* @param flowProps
* @return 粗糙度修正系数 K (保留4位小数)
*/
public static double calculateK(FlowProps flowProps){
double Jdccd;
switch (flowProps.getdPipeType()) {
case 0:
Jdccd = 0.029F;
break;
case 1:
case 2:
case 3:
Jdccd = 0.075F;
break;
case 4:
Jdccd = 0.1F;
break;
case 5:
Jdccd = 0.15F;
break;
case 6:
Jdccd = 1;
break;
case 7:
Jdccd = 2.1F;
break;
case 8:
Jdccd = 0.04F;
break;
case 9:
Jdccd = 0.15F;
break;
case 10:
Jdccd = 0.13F;
break;
case 11:
Jdccd = 0.25F;
break;
default:
return switch (flowProps.getdPipeType()) {
case 0 -> 0.029F;
case 1, 2, 3 -> 0.075F;
case 4 -> 0.1F;
case 5,9 -> 0.15F;
case 6 -> 1;
case 7 -> 2.1F;
case 8 -> 0.04F;
case 10 -> 0.13F;
case 11 -> 0.25F;
default ->
// 处理未知类型可选
throw new IllegalArgumentException("未知的管道类型: ");
}
return Jdccd;
};
}
/**
@ -209,8 +73,38 @@ public class DpFlowCalc {
double dPipeD_corrected = dPipeD * (1 + 0.000001*dPipeMaterial * (flowProps.getdTf() - 293.15));
flowProps.setdPipeD(FormatUtil.format(dPipeD_corrected,Optional.of(2)));
// 新增喷嘴喉部直径热膨胀修正对应ISO 1932喷嘴
if (flowProps.getdCoreType() == 1) {
double nozzleMaterial = flowProps.getdOrificeMaterial(); // 喷嘴与孔板共用材料参数可单独扩展
double nozzleD = flowProps.getdNozzleD();
double nozzleD_corrected = nozzleD * (1 + 0.000001*nozzleMaterial * (flowProps.getdTf() - 293.15));
flowProps.setdNozzleD(FormatUtil.format(nozzleD_corrected, Optional.of(2)));
}
// 新增文丘里管喉部直径热膨胀修正
if (flowProps.getdCoreType() == 2) {
double venturiMaterial = flowProps.getdOrificeMaterial(); // 文丘里管与孔板共用材料参数可单独扩展
double venturiD = flowProps.getdVenturiD();
double venturiD_corrected = venturiD * (1 + 0.000001*venturiMaterial * (flowProps.getdTf() - 293.15));
flowProps.setdVenturiD(FormatUtil.format(venturiD_corrected, Optional.of(2)));
}
// 更新直径比β新增根据节流装置类型切换计算基准
double beta;
if (flowProps.getdCoreType() == 0) {
// 孔板孔径/管道内径
beta = flowProps.getdOrificeD() / flowProps.getdPipeD();
} else if (flowProps.getdCoreType() == 1) {
// 喷嘴喉部直径/管道内径
beta = flowProps.getdNozzleD() / flowProps.getdPipeD();
} else if (flowProps.getdCoreType() == 2) {
// 文丘里管喉部直径/管道内径
beta = flowProps.getdVenturiD() / flowProps.getdPipeD();
} else {
throw new IllegalArgumentException("不支持的节流装置类型,无法计算直径比β");
}
// 更新直径比β
flowProps.setdBeta( FormatUtil.format(flowProps.getdOrificeD() / flowProps.getdPipeD(),Optional.of(4)));
flowProps.setdBeta( FormatUtil.format(beta,Optional.of(4)));
}
/**
@ -241,14 +135,40 @@ public class DpFlowCalc {
/**
* 计算可膨胀系数εGB/T 21446-2008 (11)
*/
public static void calculateEpsilon(FlowProps flowProps, GasProps gasProps) {
double P1 = flowProps.getdPf(); // 上游绝对压力(Pa)
double deltaP = flowProps.getdDp(); // 差压(Pa)
public static void calculateEpsilon(FlowProps flowProps) {
double P1 = flowProps.getdPf();
double deltaP = flowProps.getdDp();
double beta = flowProps.getdBeta();
double kappa = flowProps.getdKappa();
double tau = FormatUtil.format((P1 - deltaP) / P1, Optional.of(4));
double epsilon;
switch (flowProps.getdCoreType()) {
case 0: // 孔板原有逻辑保留
epsilon = 1 - (0.351 + 0.256 * Math.pow(beta, 4) + 0.93 * Math.pow(beta, 8)) * (1 - Math.pow(tau, 1 / kappa));
break;
case 1: // ISO 932喷嘴新增符合GB/T 21446-2008附录B
if (flowProps.getdNozzleType() == 0) {
// 长径喷嘴
epsilon = 1 - (0.41 + 0.35 * Math.pow(beta, 4)) * (1 - Math.pow(tau, 1 / kappa)) / kappa;
} else {
// 短径喷嘴
epsilon = 1 - (0.39 + 0.38 * Math.pow(beta, 4)) * (1 - Math.pow(tau, 1 / kappa)) / kappa;
}
break;
case 2: // 经典文丘里管新增符合GB/T 21446-2008附录C
epsilon = switch (flowProps.getdVenturiType()) { // 粗铸收缩段
// 机械加工收缩段
case 0, 1, 2 -> // 粗焊铁板收缩段
1 - (0.386 + 0.318 * Math.pow(beta, 4)) * (1 - Math.pow(tau, 1 / kappa)) / kappa;
case 3 -> // 文丘里喷嘴
1 - (0.40 + 0.36 * Math.pow(beta, 4)) * (1 - Math.pow(tau, 1 / kappa)) / kappa;
default -> throw new IllegalArgumentException("未知的文丘里管类型");
};
break;
default:
throw new IllegalArgumentException("不支持的节流装置类型,无法计算可膨胀系数ε");
}
double tau = FormatUtil.format((P1 - deltaP) / P1, Optional.of(4)); // 压力比
double epsilon=1 - (0.351 + 0.256 * Math.pow(beta, 4) + 0.93 * Math.pow(beta, 8)) * (1 - Math.pow(tau, 1/kappa));
flowProps.setdDExpCoefficient(FormatUtil.format(epsilon, Optional.of(4)));
}
@ -281,6 +201,8 @@ public class DpFlowCalc {
*/
public static void iterativeFlowCalculation(FlowProps flowProps, GasProps gasProps) {
// 0. 单位转换
thermalExpansionCorrection(flowProps); // 热膨胀修正
double D = flowProps.getdPipeD() / 1000.0; // 管道内径(m)
double d = flowProps.getdOrificeD() / 1000.0; // 孔板孔径(m)
double beta = flowProps.getdBeta();
@ -288,6 +210,9 @@ public class DpFlowCalc {
double deltaP = flowProps.getdDp(); // 差压(Pa)
double Tf = flowProps.getdTf() ; // 工况温度(K)
flowProps.setdPb_M(gasProps.getdPb());
flowProps.setdTb_M(gasProps.getdTb());
flowProps.setdFpv(FormatUtil.format(gasProps.dFpv,Optional.of(4)));
@ -300,7 +225,7 @@ public class DpFlowCalc {
flowProps.setdKappa( calculateKappa(gasProps));
// flowProps.setdDViscosity( calculateDynamicViscosity(gasProps));
flowProps.setdDViscosity(FormatUtil.format( Dlndjs(flowProps.getdPf()/1e6,flowProps.getdTf()),Optional.of(5)));
calculateEpsilon(flowProps, gasProps);
calculateEpsilon(flowProps );
//
// flowProps.setdKappa(1.357);
// flowProps.setdBeta(0.5792);
@ -312,7 +237,7 @@ public class DpFlowCalc {
// 2. 初始雷诺数估算假设初始C=0.6
double C_initial = 0.6;
double C_initial = flowProps.getdCoreType() == 0 ? 0.6 : 0.99; // 喷嘴/文丘里初始C值更高
double Qf_initial = (C_initial * flowProps.getdE() * flowProps.getdDExpCoefficient() * Math.PI * Math.pow(d, 2) / 4)
* Math.sqrt(2 * deltaP / (gasProps.dRhof * (1 - Math.pow(beta, 4))));
flowProps.setdVFlowf(Qf_initial); // 初始工况流量(m³/s)
@ -323,14 +248,15 @@ public class DpFlowCalc {
double currentC = C_initial;
double currentReD = calculateReD(Qf_initial, D, gasProps.dRhof, flowProps.getdDViscosity());
int iter = 0;
double prevC=0;
double prevC;
// 4. 迭代循环
do {
prevC = currentC;
// 4.1 计算流出系数CGB/T 21446-2008 附录A
// currentC =FormatUtil.format( calculateCd(beta, currentReD, flowProps.getdPipeD(), flowProps.getdPtmode()),Optional.of(4));
currentC = calculateCd(beta, currentReD, flowProps.getdPipeD(), flowProps.getdPtmode());
currentC = calculateCd(beta, currentReD, flowProps.getdPipeD(), flowProps.getdPtmode(), flowProps.getdCoreType(),
flowProps.getdNozzleType(), flowProps.getdVenturiType() );
// 4.2 更新流量
// double Qf =FormatUtil.format ((currentC * flowProps.getdDExpCoefficient() * Math.PI * Math.pow(d, 2) / 4)
@ -354,15 +280,16 @@ public class DpFlowCalc {
double K = calculateK(flowProps); // 根据实际管道类型选择
double G_me = calculateRoughnessFactor(flowProps.getdPipeD(), K, currentC);
double C_corrected = FormatUtil.format(currentC * G_me, Optional.of(4));
// 喷嘴/文丘里管无需粗糙度修正仅孔板应用
double C_corrected = flowProps.getdCoreType() == 0
? FormatUtil.format(currentC * G_me, Optional.of(4))
: FormatUtil.format(currentC, Optional.of(4));
flowProps.setdCd(C_corrected);
flowProps.setdRoughNessPipe(G_me);
flowProps.setdRnPipe(currentReD);
// 6. 计算标况流量GB/T 21446-2008 (1)
double Qn = flowProps.getdVFlowf() * (flowProps.getdFpv()*flowProps.getdFpv() * P1 / flowProps.getdPb_M())
* (flowProps.getdTb_M()) / Tf;
@ -381,10 +308,6 @@ public class DpFlowCalc {
}
/**
* 计算天然气动力粘度Sutherland公式简化版适用于低压天然气
* @param gasProps 气体参数需包含温度密度组分
@ -417,8 +340,13 @@ public class DpFlowCalc {
/**
* 计算流出系数CGB/T 21446-2008 附录A
*/
public static double calculateCd(double beta, double ReD, double D_mm, int ptMode) {
public static double calculateCd(double beta, double ReD, double D_mm, int ptMode,
int coreType, int nozzleType, int venturiType) {
double Cd ;
double L1, L2;
switch (coreType) {
case 0: // 孔板原有逻辑保留
// 根据取压方式确定L1/L2角接取压
switch (ptMode) {
case 1: // 角接取压
@ -443,13 +371,46 @@ public class DpFlowCalc {
* (1 - 0.11 * A) * Math.pow(beta, 4) / (1 - Math.pow(beta, 4));
double term5 = -0.031 * (2 * L2 / (1 - beta) - 0.8 * Math.pow(2 * L2 / (1 - beta), 1.1))
* Math.pow(beta, 1.3);
double Cd = term1 + term2 + term3 + term4 + term5;
Cd = term1 + term2 + term3 + term4 + term5;
// 孔径<71.12mm修正
if (D_mm < 71.12) {
Cd += 0.011 * (0.75 - beta) * (2.8 - D_mm / 25.4);
}
break;
case 1: // ISO 932喷嘴新增
if (nozzleType == 0) {
// 长径喷嘴角接取压专用
Cd = 0.9975 - 0.00653 * Math.pow(beta, 0.5) * Math.pow(1e6 / ReD, 0.5);
// 管道内径修正
if (D_mm < 71.12) {
Cd += 0.0002 * (71.12 - D_mm) / 25.4;
}
} else {
// 短径喷嘴角接取压专用
Cd = 0.9965 - 0.0060 * Math.pow(beta, 0.5) * Math.pow(1e6 / ReD, 0.5);
}
break;
case 2: // 经典文丘里管新增
Cd = switch (venturiType) {
case 0 -> // 粗铸收缩段
0.984; // 雷诺数ReD>2e5时近似为常数
case 1 -> // 机械加工收缩段
0.995; // 雷诺数ReD>2e5时近似为常数
case 2 -> // 粗焊铁板收缩段
0.975; // 雷诺数ReD>2e5时近似为常数
case 3 -> // 文丘里喷嘴
0.990 - 0.005 * Math.pow(beta, 0.5) * Math.pow(1e6 / ReD, 0.2);
default -> throw new IllegalArgumentException("未知的文丘里管类型");
};
break;
default:
throw new IllegalArgumentException("不支持的节流装置类型无法计算流出系数C");
}
return FormatUtil.format(Cd,Optional.of(4));
}
//查表计算粘度μ
@ -629,510 +590,26 @@ public class DpFlowCalc {
s2 = Dlndjs_Dlnd_Data[m + 1][n] + (Dlndjs_Dlnd_Data[m + 1][n + 1] - Dlndjs_Dlnd_Data[m + 1][n]) * ky;
return (s1 + (s2 - s1) * kx) / 100000.0D;
}
//可膨胀系数计算
private double KePenZhang_JiSuan(double tempP_jy, double tempDp_Pa, double tempZjb, double tempDszs, int JIeliuType, int JiSuanBiaoZhun) // 求可膨胀系数
{
double returnValue = 0;
//0标准孔板
//1ISA1932喷嘴
//2长径喷嘴
//3文丘里喷嘴
//4粗铸收缩段经典文丘里管
//5机械加工收缩段经典文丘里管
//6粗焊铁板收缩段经典文丘里管
//7 1/4圆孔板
double tuo ;
switch (JIeliuType)
{
case 0: //孔板流量计算
switch (JiSuanBiaoZhun)
{
case 0: //6143-2004
tuo = (tempP_jy - tempDp_Pa) / (tempP_jy );
returnValue = 1 - (0.351 + 0.256 * Math.pow(tempZjb, 4) + 0.93 * Math.pow(tempZjb, 8)) * (1 - Math.pow(tuo, (1 / tempDszs)));
break;
case 1: //6143-1996
returnValue = 1 - (0.41 + 0.35 * Math.pow(tempZjb, 4)) * tempDp_Pa / ( tempP_jy * tempDszs);
break;
/**
* 压力损失计算适配多节流装置类型需在FlowController中补充
* @param Cd 流出系数
* @param beta 直径比
* @param dp 差压(Pa)
* @param coreType 节流装置类型
* @return 压力损失(Pa)
*/
// 该方法原在FlowController中此处补充扩展逻辑
public static double YaLiSunShi(double Cd, double beta, double dp, int coreType) {
return switch (coreType) {
case 0 -> // 孔板原有逻辑保留
dp * (1 - Math.pow(beta, 4)) / (Cd * Cd);
case 1 -> // 喷嘴新增
dp * 0.1; // 喷嘴压力损失约为差压的10%经验值
case 2 -> // 文丘里管新增
dp * 0.05; // 文丘里管压力损失约为差压的5%经验值
default -> throw new IllegalArgumentException("不支持的节流装置类型,无法计算压力损失");
};
}
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
switch (JiSuanBiaoZhun)
{
case 0:
//标准喷嘴 iso5167-2002
tuo = (tempP_jy - tempDp_Pa) / (tempP_jy );
returnValue = Math.pow((((tempDszs * Math.pow(tuo, (2 / tempDszs))) / (tempDszs - 1)) * ((1 - Math.pow(tempZjb, 4)) / (1 - Math.pow(tempZjb, 4) * Math.pow(tuo, (2 / tempDszs)))) * ((1 - Math.pow(tuo, ((tempDszs - 1) / tempDszs))) / (1 - tuo))), 0.5);
break;
case 1: //iso5167-93
returnValue = 1 - (0.41 + 0.35 * Math.pow(tempZjb, 4)) * tempDp_Pa / ( tempP_jy * tempDszs);
break;
}
break;
case 7: //1/4圆孔板
returnValue = 1 - (0.41 + 0.35 * Math.pow(tempZjb, 4)) * tempDp_Pa / ( tempP_jy * tempDszs);
break;
case 8: //锥形入口孔板
tuo = (tempP_jy - tempDp_Pa) / (tempP_jy );
returnValue = 1 - (0.351 + 0.256 * Math.pow(tempZjb, 4) + 0.93 * Math.pow(tempZjb, 8)) * (1 - Math.pow(tuo, (1 / tempDszs)));
tuo = (tempP_jy - tempDp_Pa) / (tempP_jy );
returnValue = 0.5 * (returnValue + Math.pow((((tempDszs * Math.pow(tuo, (2 / tempDszs))) / (tempDszs - 1)) * ((1 - Math.pow(tempZjb, 4)) / (1 - Math.pow(tempZjb, 4) * Math.pow(tuo, (2 / tempDszs)))) * ((1 - Math.pow(tuo, ((tempDszs - 1) / tempDszs))) / (1 - tuo))), 0.5));
break;
case 9: //偏心孔板
returnValue = 1 - (0.41 + 0.35 * Math.pow(tempZjb, 4)) * tempDp_Pa / ( tempP_jy * tempDszs);
break;
}
return returnValue;
}
//流出系数计算
public final double C_JiSuan(double tempGj, double tempZjb, double tempReD, double tempconQvA, int tempQyfs, int JieLiuType, int JiSuanBiaoZhun)
{
double returnValue = 0;
//流出系数计算函数
//输入直径比雷诺数取压方式节流装置类型计算采用标准
//输出:流出系数
//jieliutype
//0标准孔板
//1ISA1932喷嘴
//2长径喷嘴
//3文丘里喷嘴
//4粗铸收缩段经典文丘里管
//5机械加工收缩段经典文丘里管
//6粗焊铁板收缩段经典文丘里管
double L1 = 0;
double L2 = 0;
switch (JieLiuType)
{
case 0: //孔板
switch (tempQyfs)
{
case 0:
L1 = 25.4 / tempGj;
L2 = L1;
break;
case 1:
L1 = 0;
L2 = 0;
break;
case 2:
L1 = 1;
L2 = 0.47F;
break;
}
switch (JiSuanBiaoZhun)
{
case 0: //6143-2004
if (tempGj >= 71.12)
{
returnValue = 0.5961 + 0.0261 * Math.pow(tempZjb, 2) - 0.216 * Math.pow(tempZjb, 8) + 0.000521 * Math.pow((1000000.0D * tempZjb / tempReD), 0.7) + (0.0188 + 0.0063 * Math.pow((19000 * tempZjb / tempReD), 0.8)) * Math.pow(tempZjb, 3.5) * Math.pow((1000000.0D / tempReD), 0.3) + (0.043 + 0.08 * Math.exp(-10 * L1) - 0.123 * Math.exp(-7 * L1)) * (1 - 0.11 * Math.pow((19000 * tempZjb / tempReD), 0.8)) * (Math.pow(tempZjb, 4) * Math.pow((1 - Math.pow(tempZjb, 4)), (-1))) - 0.031 * (2 * L2 / (1 - tempZjb) - 0.8 * Math.pow((2 * L2 / (1 - tempZjb)), 1.1)) * Math.pow(tempZjb, 1.3);
}
else if (tempGj < 71.12)
{
returnValue = (0.5961 + 0.0261 * Math.pow(tempZjb, 2) - 0.216 * Math.pow(tempZjb, 8) + 0.000521 * Math.pow((1000000.0D * tempZjb / tempReD), 0.7) + (0.0188 + 0.0063 * Math.pow((19000 * tempZjb / tempReD), 0.8)) * Math.pow(tempZjb, 3.5) * Math.pow((1000000.0D / tempReD), 0.3) + (0.043 + 0.08 * Math.exp(-10 * L1) - 0.123 * Math.exp(-7 * L1)) * (1 - 0.11 * Math.pow((19000 * tempZjb / tempReD), 0.8)) * Math.pow(tempZjb, 4) * Math.pow((1 - Math.pow(tempZjb, 4)), (-1)) - 0.031 * (2 * L2 / (1 - tempZjb) - 0.8 * Math.pow((2 * L2 * (1 - tempZjb)), 1.1)) * Math.pow(tempZjb, 1.3) + 0.011 * (0.75 - tempZjb) * (2.8 - tempGj / 25.4));
}
break;
case 1: //6143-1996
if (0.09 * L1 >= 0.039)
{
returnValue = 0.5959 + 0.0312 * Math.pow(tempZjb, (2.1)) - 0.184 * Math.pow(tempZjb, 8) + 0.0029 * Math.pow(tempZjb, 2.5) * Math.pow((1000000.0D / tempReD), 0.75) + 0.039 * Math.pow(tempZjb, 4) * Math.pow((1 - Math.pow(tempZjb, 4)), (-1)) - 0.0337 * L1 * Math.pow(tempZjb, 3);
}
else if (0.09 * L1 < 0.039)
{
returnValue = (0.5959 + 0.0312 * Math.pow(tempZjb, (2.1)) - 0.184 * Math.pow(tempZjb, 8) + 0.0029 * Math.pow(tempZjb, 2.5) * Math.pow((1000000.0D / tempReD), 0.75) + 0.09 * L1 * Math.pow(tempZjb, 4) * Math.pow((1 - Math.pow(tempZjb, 4)), (-1)) - 0.0337 * L1 * Math.pow(tempZjb, 3));
}
break;
}
break;
case 1: //ISA1932喷嘴
returnValue = (0.99 - 0.2262 * Math.pow(tempZjb, 4.1) - (0.00175 * Math.pow(tempZjb, 2) - 0.0033 * Math.pow(tempZjb, 4.15)) * (1000000.0D / Math.pow(tempReD, 1.15)));
break;
case 2: //长径喷嘴
returnValue = (0.9965 - 0.00653 * Math.pow(tempZjb, 0.5) * Math.pow((1000000.0D / tempReD), 0.5));
break;
case 3: //文丘里喷嘴
returnValue = (0.9858 - 0.196 * Math.pow(tempZjb, 4.5));
break;
case 4: //粗铸收缩段经典文丘里管
returnValue = (0.984F);
break;
case 5: //机械加工收缩段经典文丘里管
returnValue = (0.995F);
break;
case 6: //粗焊铁板收缩段经典文丘里管
returnValue = (0.985F);
break;
case 7: //1/4圆孔板
returnValue = 0.73823 - 0.3309 * tempZjb - 1.1615 * Math.pow(tempZjb, 2) + 1.5084 * Math.pow(tempZjb, 3);
break;
case 8: //锥形入口孔板
returnValue = (0.734F);
break;
case 9: //偏心孔板
returnValue = 0.9355 - 1.6889 * tempZjb + 3.0428 * Math.pow(tempZjb, 2) - 1.7989 * Math.pow(tempZjb, 3);
break;
}
double tempRed1 ;
switch (JieLiuType)
{
case 0: //孔板流量计算
tempRed1 = tempconQvA * returnValue;
switch (JieLiuType)
{
case 0:
if (tempRed1 < (170 * Math.pow(tempZjb, 2) * tempGj))
{
JOptionPane.showMessageDialog(null, "雷诺数超过标准孔板的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
return returnValue;
}
break;
case 1:
if (tempZjb >= 0.1 & tempZjb <= 0.56)
{
if (tempRed1 < 5000)
{
JOptionPane.showMessageDialog(null, "雷诺数超过标准喷嘴的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
return returnValue;
}
}
if (tempZjb > 0.56)
{
if (tempRed1 < (16000 * Math.pow(tempZjb, 2) * tempGj))
{
JOptionPane.showMessageDialog(null, "雷诺数超过标准喷嘴的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
return returnValue;
}
}
break;
}
break;
case 1: //标准喷嘴
tempRed1 = tempconQvA * returnValue;
if (tempZjb >= 0.3 & tempZjb < 0.44)
{
if (tempRed1 < 70000 | tempRed1 > 10000000.0D)
{
JOptionPane.showMessageDialog(null, "雷诺数超过标准喷嘴的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
}
}
if (tempZjb >= 0.44 & tempZjb < 0.8)
{
if (tempRed1 < 20000 | tempRed1 > 10000000.0D)
{
JOptionPane.showMessageDialog(null, "雷诺数超过标准喷嘴的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
}
}
break;
case 2: //长径喷嘴
tempRed1 = tempconQvA * returnValue;
if (tempRed1 < 10000.0D | tempRed1 > 10000000.0D)
{
JOptionPane.showMessageDialog(null, "雷诺数超过长径喷嘴的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
}
break;
case 3: //文丘里喷嘴
tempRed1 = tempconQvA * returnValue;
if (tempRed1 < 150000.0D | tempRed1 > 2000000.0D)
{
JOptionPane.showMessageDialog(null, "雷诺数超过文丘里喷嘴的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
}
break;
case 4: //粗铸收缩段经典文丘里管
tempRed1 = tempconQvA * returnValue;
if (tempRed1 < 200000.0D | tempRed1 > 2000000.0D)
{
JOptionPane.showMessageDialog(null, "雷诺数超过粗铸收缩段经典文丘里管的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
return returnValue;
}
break;
case 5: //机械加工收缩段经典文丘里管
tempRed1 = tempconQvA * returnValue;
if (tempRed1 < 200000.0D | tempRed1 > 1000000.0D)
{
JOptionPane.showMessageDialog(null, "雷诺数超过机械加工收缩段经典文丘里管的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
}
break;
case 6: //粗焊铁板收缩段经典文丘里管
tempRed1 = tempconQvA * returnValue;
if (tempRed1 < 200000.0D | tempRed1 > 2000000.0D)
{
JOptionPane.showMessageDialog(null, "雷诺数超过粗焊铁板收缩段经典文丘里管的使用范围!停止计算!", "提示", JOptionPane.PLAIN_MESSAGE);
}
break;
//标准孔板
//ISA1932喷嘴
//长径喷嘴
//文丘里喷嘴
//粗铸收缩段经典文丘里管
//机械加工收缩段经典文丘里管
//粗焊铁板收缩段经典文丘里管
}
return returnValue;
}
private static double BkTable(double temPrk, double tempKj, int tempBkjsff) {
double[] BkTable_x = new double[10];
double[] BkTable_Y = new double[10];
//On Error Resume Next VBConversions Warning: On Error Resume Next not supported in C#
if (tempBkjsff == 1) {
double tempRkBiKj = temPrk / tempKj;
// static double[] x = new double[10]; //VBConversions Note: Static variable moved to class level and renamed BkTable_x. Local static variables are not supported in C#.
// static double[] Y = new double[10]; //VBConversions Note: Static variable moved to class level and renamed BkTable_Y. Local static variables are not supported in C#.
int i;
int xIndex = 0;
//If x(0) = 0 Then
BkTable_x[0] = 0.0004F;
BkTable_x[1] = 0.001F;
BkTable_x[2] = 0.002F;
BkTable_x[3] = 0.004F;
BkTable_x[4] = 0.006F;
BkTable_x[5] = 0.008F;
BkTable_x[6] = 0.01F;
BkTable_x[7] = 0.012F;
BkTable_x[8] = 0.014F;
BkTable_x[9] = 0.015F;
BkTable_Y[0] = 1;
BkTable_Y[1] = 1.005F;
BkTable_Y[2] = 1.012F;
BkTable_Y[3] = 1.022F;
BkTable_Y[4] = 1.032F;
BkTable_Y[5] = 1.04F;
BkTable_Y[6] = 1.048F;
BkTable_Y[7] = 1.055F;
BkTable_Y[8] = 1.062F;
BkTable_Y[9] = 1.065F;
//End If
if (tempRkBiKj <= 0.0004) {
return 1;
}
if (tempRkBiKj > 0.015) {
return 1.065F;
}
for (i = 0; i <= 8; i++) {
if (tempRkBiKj >= BkTable_x[i] && tempRkBiKj <= BkTable_x[i + 1]) {
xIndex = i;
break;
}
}
return BkTable_Y[xIndex] + (tempRkBiKj - BkTable_x[xIndex]) * (BkTable_Y[xIndex + 1] - BkTable_Y[xIndex]) / (BkTable_x[xIndex + 1] - BkTable_x[xIndex]);
}
return 0;
}
//管道粗糙度计算
private double CcdXsjs(double tempPipeType, double tempGj, double tempZjb, double TempRed)
{
double returnValue ;
//粗糙度系数计算
double Jdccd = 0; //绝对粗糙度
double Xdccd ; //相对粗糙度
//Dim CcdXs As single
double s1 ;
double s2 ;
double ky ;
double kx ;
int i ;
int m = 0;
int n = 0;
if (tempPipeType == 0)
{
Jdccd = 0.029F;}
else if (tempPipeType == 1)
{
Jdccd = 0.075F;
}
else if (tempPipeType == 2)
{
Jdccd = 0.075F;
}
else if (tempPipeType == 3)
{
Jdccd = 0.075F;
}
else if (tempPipeType == 4)
{
Jdccd = 0.1F;
}
else if (tempPipeType == 5)
{
Jdccd = 0.15F;
}
else if (tempPipeType == 6)
{
Jdccd = 1;
}
else if (tempPipeType == 7)
{
Jdccd = 2.1F;
}
else if (tempPipeType == 8)
{
Jdccd = 0.04F;
}
else if (tempPipeType == 9)
{
Jdccd = 0.15F;
}
else if (tempPipeType == 10)
{
Jdccd = 0.13F;
}
else if (tempPipeType == 11)
{
Jdccd = 0.25F;
}
Xdccd = tempGj / Jdccd;
if (Xdccd < 400)
{
JOptionPane.showMessageDialog(null, "粗糙度取得太高,粗略计算", "提示", JOptionPane.PLAIN_MESSAGE);
Xdccd = 400;
}
if (Xdccd >= 3400)
{
Xdccd = 3400;
}
if (Xdccd < 3200 & Math.pow(tempZjb, 2) > 0.1 & Math.pow(tempZjb, 2) < 0.64)
{
int[] Xdccdb = new int[10];
double[] Btf = new double[8];
double[][] CcdXsb = new double[10][8];
Xdccdb[0] = 400;
Xdccdb[1] = 800;
Xdccdb[2] = 1200;
Xdccdb[3] = 1600;
Xdccdb[4] = 2000;
Xdccdb[5] = 2400;
Xdccdb[6] = 2800;
Xdccdb[7] = 3200;
Xdccdb[8] = 3400;
Btf[0] = 0.1F;
Btf[1] = 0.2F;
Btf[2] = 0.3F;
Btf[3] = 0.4F;
Btf[4] = 0.5F;
Btf[5] = 0.6F;
Btf[6] = 0.64F;
CcdXsb[0][0] = 1.002;
CcdXsb[1][0] = 1;
CcdXsb[2][0] = 1;
CcdXsb[3][0] = 1;
CcdXsb[4][0] = 1;
CcdXsb[5][0] = 1;
CcdXsb[6][0] = 1;
CcdXsb[7][0] = 1;
CcdXsb[8][0] = 1;
CcdXsb[0][1] = 1.003;
CcdXsb[1][1] = 1.002;
CcdXsb[2][1] = 1.001;
CcdXsb[3][1] = 1;
CcdXsb[4][1] = 1;
CcdXsb[5][1] = 1;
CcdXsb[6][1] = 1;
CcdXsb[7][1] = 1;
CcdXsb[0][2] = 1.006;
CcdXsb[1][2] = 1.004;
CcdXsb[2][2] = 1.002;
CcdXsb[3][2] = 1.001;
CcdXsb[4][2] = 1;
CcdXsb[5][2] = 1;
CcdXsb[6][2] = 1;
CcdXsb[7][2] = 1;
CcdXsb[0][3] = 1.009;
CcdXsb[1][3] = 1.006;
CcdXsb[2][3] = 1.004;
CcdXsb[3][3] = 1.002;
CcdXsb[4][3] = 1.001;
CcdXsb[5][3] = 1;
CcdXsb[6][3] = 1;
CcdXsb[7][3] = 1;
CcdXsb[0][4] = 1.014;
CcdXsb[1][4] = 1.009;
CcdXsb[2][4] = 1.006;
CcdXsb[3][4] = 1.004;
CcdXsb[4][4] = 1.002;
CcdXsb[5][4] = 1.001;
CcdXsb[6][4] = 1;
CcdXsb[7][4] = 1;
CcdXsb[0][5] = 1.02;
CcdXsb[1][5] = 1.013;
CcdXsb[2][5] = 1.009;
CcdXsb[3][5] = 1.006;
CcdXsb[4][5] = 1.003;
CcdXsb[5][5] = 1.002;
CcdXsb[6][5] = 1;
CcdXsb[7][5] = 1;
CcdXsb[0][6] = 1.024;
CcdXsb[1][6] = 1.016;
CcdXsb[2][6] = 1.011;
CcdXsb[3][6] = 1.007;
CcdXsb[4][6] = 1.004;
CcdXsb[5][6] = 1.002;
CcdXsb[6][6] = 1.002;
CcdXsb[7][6] = 1;
for (i = 0; i <= 8; i++)
{
if (Xdccd >= Xdccdb[i] && Xdccd <= Xdccdb[i + 1])
{
m = i;
break;
}
}
for (i = 0; i <= 6; i++)
{
if (Math.pow(tempZjb, 2) >= Btf[i] && Math.pow(tempZjb, 2) <= Btf[i + 1])
{
n = i;
break;
}
}
ky = (Btf[n + 1] - Btf[n] != 0) ? ((Math.pow(tempZjb, 2) - Btf[n]) / (Btf[n + 1] - Btf[n])) : 0;
kx = (Xdccdb[m + 1] - Xdccdb[m] != 0) ? ((Xdccd - Xdccdb[m]) / (Xdccdb[m + 1] - Xdccdb[m])) : 0;
s1 = CcdXsb[m][n] + (CcdXsb[m][n + 1] - CcdXsb[m][n]) * ky;
s2 = CcdXsb[m + 1][n] + (CcdXsb[m + 1][n + 1] - CcdXsb[m + 1][n]) * ky;
returnValue = s1 + (s2 - s1) * kx;
returnValue = TempRed > 1000000.0 ? returnValue : ((returnValue - 1) * Math.pow((Math.log10(TempRed) / 2), 2) + 1);
}
else
{
returnValue = 1;
}
return returnValue;
}
}

View File

@ -14,7 +14,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import static com.ruoyi.caltools.controller.DpFlowCalc.iterativeFlowCalculation;
import static com.ruoyi.caltools.controller.DpFlowCalc.thermalExpansionCorrection;
@RestController
@RequestMapping("/flowCalTools")
@ -99,10 +98,15 @@ public class FlowController {
switch (flowProps.getdMeterType()) {
case 0: //差压式流量计
// 执行计算
thermalExpansionCorrection(flowProps); // 热膨胀修正
switch (flowProps.getdCoreType()) {
case 0: //孔板流量计算
iterativeFlowCalculation(flowProps, gasProps);
break;
case 1:
break;
}
//OFlowCal(gasProps,flowProps);
break;
case 1:// 速度式流量计
SdFlowCal(gasProps, flowProps);

View File

@ -4,7 +4,6 @@ public class FlowProps {
// 流量计算输入参数信息
private int dFlowCalbz; // 流量计算标准
private int dZcalbz; // 压缩因子计算标准
private int dCbtj; // 计量参比条件压力
private double dPb_M; // 计量参比条件压力
@ -25,6 +24,95 @@ public class FlowProps {
private int dPileDtempUint; // 温度单位
private double dPipeMaterial; // 管道材料
// FlowProps.java 中新增以下成员变量及 getter/setter
// ==================== ISO 1932 喷嘴专属参数 ====================
public double getdNozzleD() {
return dNozzleD;
}
public void setdNozzleD(double dNozzleD) {
this.dNozzleD = dNozzleD;
}
public double getdNozzleR() {
return dNozzleR;
}
public void setdNozzleR(double dNozzleR) {
this.dNozzleR = dNozzleR;
}
public double getdNozzleL1() {
return dNozzleL1;
}
public void setdNozzleL1(double dNozzleL1) {
this.dNozzleL1 = dNozzleL1;
}
public double getdVenturiD() {
return dVenturiD;
}
public void setdVenturiD(double dVenturiD) {
this.dVenturiD = dVenturiD;
}
public double getdVenturiTheta1() {
return dVenturiTheta1;
}
public void setdVenturiTheta1(double dVenturiTheta1) {
this.dVenturiTheta1 = dVenturiTheta1;
}
public double getdVenturiTheta2() {
return dVenturiTheta2;
}
public void setdVenturiTheta2(double dVenturiTheta2) {
this.dVenturiTheta2 = dVenturiTheta2;
}
public double getdVenturiLt() {
return dVenturiLt;
}
public void setdVenturiLt(double dVenturiLt) {
this.dVenturiLt = dVenturiLt;
}
public int getdVenturiType() {
return dVenturiType;
}
public void setdVenturiType(int dVenturiType) {
this.dVenturiType = dVenturiType;
}
/** 喷嘴喉部直径mm对应ISO 1932标准 */
private double dNozzleD;
/** 喷嘴入口圆弧半径mm标准要求 r≥0.2d */
private double dNozzleR;
/** 喷嘴总长度mm长径喷嘴L1≥0.6D短径喷嘴L1=0.3D */
private double dNozzleL1;
/** 喷嘴类型0-长径喷嘴1-短径喷嘴 */
private int dNozzleType;
// ==================== 经典文丘里管专属参数 ====================
/** 文丘里管喉部直径mm */
private double dVenturiD;
/** 收缩段锥角°标准范围15°~25° */
private double dVenturiTheta1;
/** 扩散段锥角°标准范围5°~15° */
private double dVenturiTheta2;
/** 喉部平直段长度mm标准Lt=0.5d~1.0d */
private double dVenturiLt;
/** 文丘里管类型0-粗铸收缩段1-机械加工收缩段2-粗焊铁板收缩段3-文丘里喷嘴 */
private int dVenturiType;
private double dOrificeD; // 孔板孔径
private int dOrificeUnit; // 长度单位
private double dOrificeDtemp; // 孔板内径参考温度
@ -77,199 +165,142 @@ public class FlowProps {
private double dPressLost; // 压力损失
private double dBeta; // 直径比
private double dKappa; // 等熵指数
private int dNozzleType; // 0圆环形喷嘴 2 圆柱形喉部文丘里喷嘴
private double dUpstreamRadius ;//
public double getdUpstreamRadius() {
return dUpstreamRadius;
}
public void setdUpstreamRadius(double dUpstreamRadius) {
this.dUpstreamRadius = dUpstreamRadius;
}
public int getdZcalbz() {
return dZcalbz;
}
public void setdZcalbz(int dZcalbz) {
this.dZcalbz = dZcalbz;
}
public int getdFlowCalbz() {
return dFlowCalbz;
}
public void setdFlowCalbz(int dFlowCalbz) {
this.dFlowCalbz = dFlowCalbz;
}
public int getdCbtj() {
return dCbtj;
}
public void setdCbtj(int dCbtj) {
this.dCbtj = dCbtj;
}
public double getdPb_M() {
return dPb_M;
}
public void setdPb_M(double dPb_M) {
this.dPb_M = dPb_M;
}
public double getdTb_M() {
return dTb_M;
}
public void setdTb_M(double dTb_M) {
this.dTb_M = dTb_M;
}
public double getdPb_E() {
return dPb_E;
}
public void setdPb_E(double dPb_E) {
this.dPb_E = dPb_E;
}
public double getdTb_E() {
return dTb_E;
}
public void setdTb_E(double dTb_E) {
this.dTb_E = dTb_E;
}
public double getdPatm() {
return dPatm;
}
public void setdPatm(double dPatm) {
this.dPatm = dPatm;
}
public int getdPatmUnit() {
return dPatmUnit;
}
public void setdPatmUnit(int dPatmUnit) {
this.dPatmUnit = dPatmUnit;
}
public String getdngComponents() {
return dngComponents;
}
public void setdngComponents(String dngComponents) {
this.dngComponents = dngComponents;
}
public int getdMeterType() {
return dMeterType;
}
public void setdMeterType(int dMeterType) {
this.dMeterType = dMeterType;
}
public int getdCoreType() {
return dCoreType;
}
public void setdCoreType(int dCoreType) {
this.dCoreType = dCoreType;
}
public int getdPtmode() {
return dPtmode;
}
public void setdPtmode(int dPtmode) {
this.dPtmode = dPtmode;
}
public int getdPipeType() {
return dPipeType;
}
public void setdPipeType(int dPipeType) {
this.dPipeType = dPipeType;
}
public double getdPipeD() {
return dPipeD;
}
public void setdPipeD(double dPipeD) {
this.dPipeD = dPipeD;
}
public int getdLenUnit() {
return dLenUnit;
}
public void setdLenUnit(int dLenUnit) {
this.dLenUnit = dLenUnit;
}
public double getdPipeDtemp() {
return dPipeDtemp;
}
public void setdPipeDtemp(double dPipeDtemp) {
this.dPipeDtemp = dPipeDtemp;
}
public int getdPileDtempUint() {
return dPileDtempUint;
}
public void setdPileDtempUint(int dPileDtempUint) {
this.dPileDtempUint = dPileDtempUint;
}
public double getdPipeMaterial() {
return dPipeMaterial;
}
public void setdPipeMaterial(double dPipeMaterial) {
this.dPipeMaterial = dPipeMaterial;
}
public double getdOrificeD() {
return dOrificeD;
}
public void setdOrificeD(double dOrificeD) {
this.dOrificeD = dOrificeD;
}
public int getdOrificeUnit() {
return dOrificeUnit;
}
public void setdOrificeUnit(int dOrificeUnit) {
this.dOrificeUnit = dOrificeUnit;
}
public double getdOrificeDtemp() {
return dOrificeDtemp;
}
public void setdOrificeDtemp(double dOrificeDtemp) {
this.dOrificeDtemp = dOrificeDtemp;
}