1016 lines
38 KiB
Java
1016 lines
38 KiB
Java
package com.ruoyi.ngCalTools.controller;
|
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.ngCalTools.model.FlowProps;
|
|
import com.ruoyi.ngCalTools.model.GasProps;
|
|
import com.ruoyi.ngCalTools.service.DetailService;
|
|
import com.ruoyi.ngCalTools.service.GBT11062Service;
|
|
import com.ruoyi.ngCalTools.service.ThermService;
|
|
import com.ruoyi.system.controller.UnitConvert;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import javax.swing.*;
|
|
import java.lang.reflect.Field;
|
|
import java.text.DecimalFormat;
|
|
|
|
@RestController
|
|
@RequestMapping("/flowCalcTools")
|
|
public class FlowController {
|
|
|
|
private final UnitConvert unitConvert;
|
|
public ThermService thermService;
|
|
public DetailService detailService;
|
|
public GBT11062Service gbt11062Service;
|
|
public GasController gasController;
|
|
public FlowController(UnitConvert unitConvert,GasController gasController) {
|
|
this.unitConvert = unitConvert;
|
|
this.gasController=gasController;
|
|
}
|
|
@PostMapping("/flowCalc")
|
|
public AjaxResult flowCalc(@RequestBody FlowProps flowProps) {
|
|
GasProps gasProps = new GasProps();
|
|
thermService = new ThermService();
|
|
detailService = new DetailService();
|
|
gbt11062Service = new GBT11062Service();
|
|
|
|
//大气压力转换成Pa
|
|
double tempPatm = unitConvert.ConvertUniter("pressure", flowProps.getdPatm(), flowProps.getdPatmUnit(), 0);
|
|
//压力转换成Pa
|
|
double tempPf = unitConvert.ConvertUniter("pressure", flowProps.getdPf(), flowProps.getdPfUnit(), 0);
|
|
|
|
//压力转换成Pa
|
|
double tempDP = unitConvert.ConvertUniter("pressure", flowProps.getdDp(), flowProps.getdDpUnit(), 0);
|
|
//温度转换成K
|
|
double tempTf = unitConvert.ConvertUniter("temperature", flowProps.getdTf(), flowProps.getdTfUnit(), 2);
|
|
if (flowProps.getdPfType() == 0) //0是表压
|
|
{
|
|
gasProps.dPf = tempPatm + tempPf;
|
|
flowProps.setdPf(tempPatm + tempPf);
|
|
} else {
|
|
gasProps.dPf = tempPf;
|
|
flowProps.setdPf(tempPf);
|
|
}
|
|
gasProps.dTf = tempTf;
|
|
flowProps.setdDp(tempDP);
|
|
flowProps.setdTf(tempTf);
|
|
|
|
gasProps.dCbtj = flowProps.getdCbtj();
|
|
String[] stringArray = flowProps.getdngComponents().split("_");
|
|
double[] doubleArray = new double[stringArray.length]; // 遍历字符串数组,将每个元素转换为 double 类型
|
|
for (int i = 0; i < stringArray.length; i++) {
|
|
try {
|
|
doubleArray[i] = Double.parseDouble(stringArray[i]) / 100;
|
|
} catch (NumberFormatException e) {
|
|
// 处理转换异常
|
|
System.err.println("无法将字符串 " + stringArray[i] + " 转换为 double 类型: " + e.getMessage());
|
|
}
|
|
}
|
|
gasProps.adMixture = doubleArray;
|
|
gasController.ngCalcVoid(flowProps, gasProps); //计算临界流函数所有参数都计算了
|
|
|
|
//计算流量
|
|
switch (flowProps.getdMeterType()) {
|
|
case 0: //差压式流量计
|
|
OFlowCal(gasProps, flowProps);
|
|
break;
|
|
case 1:// 速度式流量计
|
|
break;
|
|
case 2: //容积式流量计
|
|
break;
|
|
case 3:// 临界流函数流量计
|
|
break;
|
|
}
|
|
Object[] resultArray = {flowProps, gasProps};
|
|
return AjaxResult.success(resultArray);
|
|
}
|
|
|
|
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(), flowProps.getdTf(), 2, 1));
|
|
// 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;
|
|
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 = 0;
|
|
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()));
|
|
}
|
|
|
|
|
|
//压力损失计算
|
|
public final double YaLiSunShi(double tempLiuChuXiShu, double tempZjb, double tempDp, int JieLiuZhuangZhi)
|
|
{
|
|
double ylss = 0;
|
|
switch (JieLiuZhuangZhi)
|
|
{
|
|
case 0:
|
|
ylss = (tempDp * (Math.sqrt(1 - tempZjb) - tempLiuChuXiShu * Math.pow(tempZjb, 2)) / (Math.sqrt(1 - tempZjb) + tempLiuChuXiShu * Math.pow(tempZjb, 2)));
|
|
break;
|
|
case 1:
|
|
ylss = (tempDp * (Math.sqrt(1 - tempZjb) - tempLiuChuXiShu * Math.pow(tempZjb, 2)) / (Math.sqrt(1 - tempZjb) + tempLiuChuXiShu * Math.pow(tempZjb, 2)));
|
|
break;
|
|
case 2:
|
|
ylss = (tempDp * (Math.sqrt(1 - tempZjb) - tempLiuChuXiShu * Math.pow(tempZjb, 2)) / (Math.sqrt(1 - tempZjb) + tempLiuChuXiShu * Math.pow(tempZjb, 2)));
|
|
break;
|
|
}
|
|
return ylss;
|
|
}
|
|
//查表计算粘度μ
|
|
// VBConversions Note: Former VB static variables moved to class level because they aren't supported in C#.
|
|
private final double[][] Dlndjs_Dlnd_Data = new double[8][11];
|
|
private final double[] Dlndjs_Dlnd_T = new double[8];
|
|
private final double[] Dlndjs_Dlnd_P = new double[11];
|
|
|
|
public final double Dlndjs(double tempP_jy, double tempT, int PU, int TU)
|
|
{
|
|
// static double[,] Dlnd_Data = new double[8, 11]; //VBConversions Note: Static variable moved to class level and renamed Dlndjs_Dlnd_Data. Local static variables are not supported in C#.
|
|
// static double[] Dlnd_T = new double[8]; //VBConversions Note: Static variable moved to class level and renamed Dlndjs_Dlnd_T. Local static variables are not supported in C#.
|
|
// static double[] Dlnd_P = new double[11]; //VBConversions Note: Static variable moved to class level and renamed Dlndjs_Dlnd_P. Local static variables are not supported in C#.
|
|
double s1 = 0;
|
|
double s2 = 0;
|
|
double ky = 0;
|
|
double kx = 0;
|
|
int i = 0;
|
|
int m = 0;
|
|
int n = 0;
|
|
//On Error Resume Next VBConversions Warning: On Error Resume Next not supported in C#
|
|
Dlndjs_Dlnd_T[0] = -15 + 273.15;
|
|
Dlndjs_Dlnd_T[1] = 0 + 273.15;
|
|
Dlndjs_Dlnd_T[2] = 15 + 273.15;
|
|
Dlndjs_Dlnd_T[3] = 30 + 273.15;
|
|
Dlndjs_Dlnd_T[4] = 45 + 273.15;
|
|
Dlndjs_Dlnd_T[5] = 60 + 273.15;
|
|
Dlndjs_Dlnd_T[6] = 75 + 273.15;
|
|
Dlndjs_Dlnd_T[7] = 90 + 273.15;
|
|
|
|
Dlndjs_Dlnd_P[0] = 0.1F;
|
|
Dlndjs_Dlnd_P[1] = 1;
|
|
Dlndjs_Dlnd_P[2] = 2;
|
|
Dlndjs_Dlnd_P[3] = 3;
|
|
Dlndjs_Dlnd_P[4] = 4;
|
|
Dlndjs_Dlnd_P[5] = 5;
|
|
Dlndjs_Dlnd_P[6] = 6;
|
|
Dlndjs_Dlnd_P[7] = 7;
|
|
Dlndjs_Dlnd_P[8] = 8;
|
|
Dlndjs_Dlnd_P[9] = 9;
|
|
Dlndjs_Dlnd_P[10] = 10;
|
|
Dlndjs_Dlnd_Data[0][0] = 976;
|
|
Dlndjs_Dlnd_Data[1][0] = 1027;
|
|
Dlndjs_Dlnd_Data[2][0] = 1071;
|
|
Dlndjs_Dlnd_Data[3][0] = 1123;
|
|
Dlndjs_Dlnd_Data[4][0] = 1167;
|
|
Dlndjs_Dlnd_Data[5][0] = 1213;
|
|
Dlndjs_Dlnd_Data[6][0] = 1260;
|
|
Dlndjs_Dlnd_Data[7][0] = 1303;
|
|
Dlndjs_Dlnd_Data[0][1] = 991;
|
|
Dlndjs_Dlnd_Data[1][1] = 1040;
|
|
Dlndjs_Dlnd_Data[2][1] = 1082;
|
|
Dlndjs_Dlnd_Data[3][1] = 1135;
|
|
Dlndjs_Dlnd_Data[4][1] = 1178;
|
|
Dlndjs_Dlnd_Data[5][1] = 1224;
|
|
Dlndjs_Dlnd_Data[6][1] = 1270;
|
|
Dlndjs_Dlnd_Data[7][1] = 1312;
|
|
Dlndjs_Dlnd_Data[0][2] = 1014;
|
|
Dlndjs_Dlnd_Data[1][2] = 1063;
|
|
Dlndjs_Dlnd_Data[2][2] = 1106;
|
|
Dlndjs_Dlnd_Data[3][2] = 1153;
|
|
Dlndjs_Dlnd_Data[4][2] = 1196;
|
|
Dlndjs_Dlnd_Data[5][2] = 1239;
|
|
Dlndjs_Dlnd_Data[6][2] = 1281;
|
|
Dlndjs_Dlnd_Data[7][2] = 1323;
|
|
Dlndjs_Dlnd_Data[0][3] = 1044;
|
|
Dlndjs_Dlnd_Data[1][3] = 1091;
|
|
Dlndjs_Dlnd_Data[2][3] = 1127;
|
|
Dlndjs_Dlnd_Data[3][3] = 1174;
|
|
Dlndjs_Dlnd_Data[4][3] = 1216;
|
|
Dlndjs_Dlnd_Data[5][3] = 1257;
|
|
Dlndjs_Dlnd_Data[6][3] = 1297;
|
|
Dlndjs_Dlnd_Data[7][3] = 1338;
|
|
Dlndjs_Dlnd_Data[0][4] = 1073;
|
|
Dlndjs_Dlnd_Data[1][4] = 1118;
|
|
Dlndjs_Dlnd_Data[2][4] = 1149;
|
|
Dlndjs_Dlnd_Data[3][4] = 1195;
|
|
Dlndjs_Dlnd_Data[4][4] = 1236;
|
|
Dlndjs_Dlnd_Data[5][4] = 1275;
|
|
Dlndjs_Dlnd_Data[6][4] = 1313;
|
|
Dlndjs_Dlnd_Data[7][4] = 1352;
|
|
Dlndjs_Dlnd_Data[0][5] = 1114;
|
|
Dlndjs_Dlnd_Data[1][5] = 1151;
|
|
Dlndjs_Dlnd_Data[2][5] = 1180;
|
|
Dlndjs_Dlnd_Data[3][5] = 1224;
|
|
Dlndjs_Dlnd_Data[4][5] = 1261;
|
|
Dlndjs_Dlnd_Data[5][5] = 1297;
|
|
Dlndjs_Dlnd_Data[6][5] = 1333;
|
|
Dlndjs_Dlnd_Data[7][5] = 1372;
|
|
Dlndjs_Dlnd_Data[0][6] = 1156;
|
|
Dlndjs_Dlnd_Data[1][6] = 1185;
|
|
Dlndjs_Dlnd_Data[2][6] = 1211;
|
|
Dlndjs_Dlnd_Data[3][6] = 1253;
|
|
Dlndjs_Dlnd_Data[4][6] = 1287;
|
|
Dlndjs_Dlnd_Data[5][6] = 1320;
|
|
Dlndjs_Dlnd_Data[6][6] = 1352;
|
|
Dlndjs_Dlnd_Data[7][6] = 1391;
|
|
Dlndjs_Dlnd_Data[0][7] = 1207;
|
|
Dlndjs_Dlnd_Data[1][7] = 1230;
|
|
Dlndjs_Dlnd_Data[2][7] = 1250;
|
|
Dlndjs_Dlnd_Data[3][7] = 1289;
|
|
Dlndjs_Dlnd_Data[4][7] = 1318;
|
|
Dlndjs_Dlnd_Data[5][7] = 1346;
|
|
Dlndjs_Dlnd_Data[6][7] = 1374;
|
|
Dlndjs_Dlnd_Data[7][7] = 1412;
|
|
Dlndjs_Dlnd_Data[0][8] = 1261;
|
|
Dlndjs_Dlnd_Data[1][8] = 1276;
|
|
Dlndjs_Dlnd_Data[2][8] = 1289;
|
|
Dlndjs_Dlnd_Data[3][8] = 1324;
|
|
Dlndjs_Dlnd_Data[4][8] = 1350;
|
|
Dlndjs_Dlnd_Data[5][8] = 1373;
|
|
Dlndjs_Dlnd_Data[6][8] = 1396;
|
|
Dlndjs_Dlnd_Data[7][8] = 1432;
|
|
Dlndjs_Dlnd_Data[0][9] = 1331;
|
|
Dlndjs_Dlnd_Data[1][9] = 1331;
|
|
Dlndjs_Dlnd_Data[2][9] = 1335;
|
|
Dlndjs_Dlnd_Data[3][9] = 1366;
|
|
Dlndjs_Dlnd_Data[4][9] = 1385;
|
|
Dlndjs_Dlnd_Data[5][9] = 1403;
|
|
Dlndjs_Dlnd_Data[6][9] = 1424;
|
|
Dlndjs_Dlnd_Data[7][9] = 1456;
|
|
Dlndjs_Dlnd_Data[0][10] = 1405;
|
|
Dlndjs_Dlnd_Data[1][10] = 1389;
|
|
Dlndjs_Dlnd_Data[2][10] = 1383;
|
|
Dlndjs_Dlnd_Data[3][10] = 1409;
|
|
Dlndjs_Dlnd_Data[4][10] = 1421;
|
|
Dlndjs_Dlnd_Data[5][10] = 1435;
|
|
Dlndjs_Dlnd_Data[6][10] = 1451;
|
|
Dlndjs_Dlnd_Data[7][10] = 1482;
|
|
|
|
if (tempT < Dlndjs_Dlnd_T[0])
|
|
{
|
|
tempT = Dlndjs_Dlnd_T[0];
|
|
}
|
|
if (tempT > Dlndjs_Dlnd_T[7])
|
|
{
|
|
tempT = Dlndjs_Dlnd_T[7];
|
|
}
|
|
if (tempP_jy < Dlndjs_Dlnd_P[0])
|
|
{
|
|
tempP_jy = Dlndjs_Dlnd_P[0];
|
|
}
|
|
if (tempP_jy > Dlndjs_Dlnd_P[10])
|
|
{
|
|
tempP_jy = Dlndjs_Dlnd_P[10];
|
|
}
|
|
|
|
for ( i = 0; i <= 6; i++)
|
|
{
|
|
if (tempT >= Dlndjs_Dlnd_T[i] && tempT <= Dlndjs_Dlnd_T[i + 1])
|
|
{
|
|
m = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
for (i = 0; i <= 9; i++)
|
|
{
|
|
if (tempP_jy >= Dlndjs_Dlnd_P[i] && tempP_jy <= Dlndjs_Dlnd_P[i + 1])
|
|
{
|
|
n = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (Dlndjs_Dlnd_P[n + 1] - Dlndjs_Dlnd_P[n] != 0)
|
|
{
|
|
ky = (tempP_jy - Dlndjs_Dlnd_P[n]) / (Dlndjs_Dlnd_P[n + 1] - Dlndjs_Dlnd_P[n]);
|
|
}
|
|
else
|
|
{
|
|
ky = 0;
|
|
}
|
|
if (Dlndjs_Dlnd_T[m + 1] - Dlndjs_Dlnd_T[m] != 0)
|
|
{
|
|
kx = (tempT - Dlndjs_Dlnd_T[m]) / (Dlndjs_Dlnd_T[m + 1] - Dlndjs_Dlnd_T[m]);
|
|
}
|
|
else
|
|
{
|
|
kx = 0;
|
|
}
|
|
s1 = Dlndjs_Dlnd_Data[m][n] + (Dlndjs_Dlnd_Data[m][n + 1] - Dlndjs_Dlnd_Data[m][n]) * ky;
|
|
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 = 0;
|
|
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;
|
|
|
|
}
|
|
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 = 0;
|
|
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 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 = 0;
|
|
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 = 0;
|
|
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 = 0;
|
|
//粗糙度系数计算
|
|
double Jdccd = 0; //绝对粗糙度
|
|
double Xdccd = 0; //相对粗糙度
|
|
//Dim CcdXs As single
|
|
double s1 = 0;
|
|
double s2 = 0;
|
|
double ky = 0;
|
|
double kx = 0;
|
|
int i = 0;
|
|
int m = 0;
|
|
int n = 0;
|
|
if (tempPipeType == 0)
|
|
{
|
|
Jdccd = 0.029F;
|
|
|
|
Jdccd = 0.075F;
|
|
}
|
|
else if (tempPipeType == 2)
|
|
{
|
|
Jdccd = 0.075F;
|
|
|
|
Jdccd = 0.075F;
|
|
}
|
|
else if (tempPipeType == 4)
|
|
{
|
|
Jdccd = 0.1F;
|
|
|
|
Jdccd = 0.15F;
|
|
}
|
|
else if (tempPipeType == 6)
|
|
{
|
|
Jdccd = 1;
|
|
|
|
Jdccd = 2.1F;
|
|
}
|
|
else if (tempPipeType == 8)
|
|
{
|
|
Jdccd = 0.04F;
|
|
|
|
Jdccd = 0.15F;
|
|
}
|
|
else if (tempPipeType == 10)
|
|
{
|
|
Jdccd = 0.13F;
|
|
|
|
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[8][0] = 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[8][0] = 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[8][0] = 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[8][0] = 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[8][0] = 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;
|
|
CcdXsb[8][0] = 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;
|
|
}
|
|
|
|
// #########################################################################
|
|
// ######################'流量转换 标况转工况##############################
|
|
// ########################################################################
|
|
public static double FlowConvert_BaseToWork(FlowProps flowProps, GasProps gasProps)
|
|
{
|
|
double tempPn = 0;
|
|
double tempTn = 0;
|
|
|
|
try
|
|
{
|
|
|
|
if (gasProps.dZf == 0 || gasProps.dZb == 0)
|
|
{
|
|
return 0.0;
|
|
}
|
|
|
|
|
|
switch (gasProps.dCbtj)
|
|
{
|
|
case 2:
|
|
tempPn = 101325;
|
|
tempTn = 273.15;
|
|
break;
|
|
|
|
case 1:
|
|
tempPn = 101325;
|
|
tempTn = 288.15;
|
|
break;
|
|
|
|
case 0:
|
|
tempPn = 101325;
|
|
tempTn = 293.15;
|
|
break;
|
|
|
|
case 3:
|
|
tempPn = 10155981;
|
|
tempTn = 288.7055555;
|
|
break;
|
|
}
|
|
|
|
|
|
flowProps.setdVFlowf(flowProps.getdVFlowb() * (tempPn * flowProps.getdTf() * gasProps.dZf) / (flowProps.getdPf() * tempTn * gasProps.dZb));
|
|
return flowProps.getdVFlowf();
|
|
// WARNING: ErrDo: is not supported
|
|
}
|
|
catch (RuntimeException exc)
|
|
{
|
|
return 0.0;
|
|
|
|
}
|
|
}
|
|
|
|
// #########################################################################
|
|
// ######################流量转换工况转标况##############################
|
|
// ########################################################################
|
|
public static double FlowConvert_WorkToBase(FlowProps flowProps, GasProps gasProps)
|
|
{
|
|
double tempPn = 0;
|
|
double tempTn = 0;
|
|
|
|
// WARNING: On Error GOTO ErrDo is not supported
|
|
try
|
|
{
|
|
|
|
switch (gasProps.dCbtj)
|
|
{
|
|
case 2:
|
|
tempPn = 101325;
|
|
tempTn = 273.15;
|
|
break;
|
|
|
|
case 1:
|
|
tempPn = 101325;
|
|
tempTn = 288.15;
|
|
break;
|
|
|
|
case 0:
|
|
tempPn = 101325;
|
|
tempTn = 293.15;
|
|
break;
|
|
|
|
case 3:
|
|
tempPn = 0.10155981;
|
|
tempTn = 288.7055555;
|
|
break;
|
|
}
|
|
flowProps.setdVFlowb(flowProps.getdVFlowf() * (flowProps.getdPf() * tempTn * gasProps.dZb) / (tempPn * flowProps.getdTf() * gasProps.dZf));
|
|
return flowProps.getdVFlowb();
|
|
// WARNING: ErrDo: is not supported
|
|
}
|
|
catch (RuntimeException exc)
|
|
{
|
|
return 0.0;
|
|
}
|
|
|
|
}
|
|
}
|