天然气组分计算api完成

This commit is contained in:
廖德云 2025-02-24 23:59:43 +08:00
parent e35df8935d
commit e31d6f8593
6 changed files with 1081 additions and 1040 deletions

View File

@ -2,7 +2,9 @@ package com.ruoyi.ngCalTools.controller;
// GasController.java
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ngCalTools.model.GasProps;
import com.ruoyi.ngCalTools.model.FlowProps;
import com.ruoyi.ngCalTools.service.DetailService;
import com.ruoyi.ngCalTools.service.GBT11062Service;
import com.ruoyi.ngCalTools.service.ThermService;
@ -19,20 +21,56 @@ public class GasController {
public GBT11062Service gbt11062Service;
@PostMapping ("/calculate")
public GasProps calculateProperties(@RequestBody GasProps tempPar) {
Zcal(tempPar, 0);
return tempPar;
@PostMapping ("/flowCalc")
public FlowProps flowCalc(@RequestBody FlowProps flowProps) {
GasProps gasProps=new GasProps();
AjaxResult ajaxResult=new AjaxResult();
return ( flowProps);
}
@PostMapping ("/ngCalc")
public GasProps ngCalc(@RequestBody FlowProps flowProps) {
thermService=new ThermService();
detailService=new DetailService();
gbt11062Service=new GBT11062Service();
GasProps gasProps=new GasProps();
gasProps.dPf=flowProps.getdPf()*1000000;
gasProps.dTf=flowProps.getdTf()+273.15;
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;
Crit(gasProps,0); //计算临界流函数所有参数都计算了
return gasProps;
}
public int NG_Cal_Init() {
//create object for calculating density
if (null == detailService) {
if (null == (detailService=new DetailService())) {
return GasConstants.MEMORY_ALLOCATION_ERROR;
}
//create object for calculating thermodynamic properties
if (null == thermService) {
if (null == (thermService=new ThermService())) {
return GasConstants.MEMORY_ALLOCATION_ERROR;
}
@ -70,7 +108,6 @@ return tempPar;
gasProps.dCstar = 0;
return gasProps.dSOS;
}
public double Crit(GasProps gasProps, double dPlenumVelocity)
{
//variables local to function
@ -174,22 +211,7 @@ return tempPar;
return gasProps.dZf;
}
double Cperf(GasProps gasProps)
{
double k, root, exponent;
k = gasProps.dKappa; root = 2.0 / (k + 1.0);
exponent = (k + 1.0) / (k - 1.0);
return (Math.sqrt(k * Math.pow(root, exponent)));
}
double CRi(GasProps gasProps)
{
return (Cperf(gasProps) / Math.sqrt(gasProps.dZf));
}
}

View File

@ -4,6 +4,447 @@ public class GasProps {
// corresponds to the control group in meter classes
public int lStatus; // calculation status 计算状态
public boolean bForceUpdate; // 执行全部计算的标志 signal to perform full calculation
public double[] getAdMixture() {
return adMixture;
}
public void setAdMixture(double[] adMixture) {
this.adMixture = adMixture;
}
public int getlStatus() {
return lStatus;
}
public void setlStatus(int lStatus) {
this.lStatus = lStatus;
}
public boolean isbForceUpdate() {
return bForceUpdate;
}
public void setbForceUpdate(boolean bForceUpdate) {
this.bForceUpdate = bForceUpdate;
}
public double[] getAdMixtureV() {
return adMixtureV;
}
public void setAdMixtureV(double[] adMixtureV) {
this.adMixtureV = adMixtureV;
}
public double[] getAdMixtureD() {
return adMixtureD;
}
public void setAdMixtureD(double[] adMixtureD) {
this.adMixtureD = adMixtureD;
}
public int getdCbtj() {
return dCbtj;
}
public void setdCbtj(int dCbtj) {
this.dCbtj = dCbtj;
}
public double getdPb() {
return dPb;
}
public void setdPb(double dPb) {
this.dPb = dPb;
}
public double getdTb() {
return dTb;
}
public void setdTb(double dTb) {
this.dTb = dTb;
}
public double getdPf() {
return dPf;
}
public void setdPf(double dPf) {
this.dPf = dPf;
}
public double getdTf() {
return dTf;
}
public void setdTf(double dTf) {
this.dTf = dTf;
}
public double getdMrx() {
return dMrx;
}
public void setdMrx(double dMrx) {
this.dMrx = dMrx;
}
public double getdZb() {
return dZb;
}
public void setdZb(double dZb) {
this.dZb = dZb;
}
public double getdZf() {
return dZf;
}
public void setdZf(double dZf) {
this.dZf = dZf;
}
public double getdFpv() {
return dFpv;
}
public void setdFpv(double dFpv) {
this.dFpv = dFpv;
}
public double getdDb() {
return dDb;
}
public void setdDb(double dDb) {
this.dDb = dDb;
}
public double getdDf() {
return dDf;
}
public void setdDf(double dDf) {
this.dDf = dDf;
}
public double getdRhob() {
return dRhob;
}
public void setdRhob(double dRhob) {
this.dRhob = dRhob;
}
public double getdRhof() {
return dRhof;
}
public void setdRhof(double dRhof) {
this.dRhof = dRhof;
}
public double getdRD_Ideal() {
return dRD_Ideal;
}
public void setdRD_Ideal(double dRD_Ideal) {
this.dRD_Ideal = dRD_Ideal;
}
public double getdRD_Real() {
return dRD_Real;
}
public void setdRD_Real(double dRD_Real) {
this.dRD_Real = dRD_Real;
}
public double getdHo() {
return dHo;
}
public void setdHo(double dHo) {
this.dHo = dHo;
}
public double getdH() {
return dH;
}
public void setdH(double dH) {
this.dH = dH;
}
public double getdS() {
return dS;
}
public void setdS(double dS) {
this.dS = dS;
}
public double getdCpi() {
return dCpi;
}
public void setdCpi(double dCpi) {
this.dCpi = dCpi;
}
public double getdCp() {
return dCp;
}
public void setdCp(double dCp) {
this.dCp = dCp;
}
public double getdCv() {
return dCv;
}
public void setdCv(double dCv) {
this.dCv = dCv;
}
public double getDk() {
return dk;
}
public void setDk(double dk) {
this.dk = dk;
}
public double getdKappa() {
return dKappa;
}
public void setdKappa(double dKappa) {
this.dKappa = dKappa;
}
public double getdSOS() {
return dSOS;
}
public void setdSOS(double dSOS) {
this.dSOS = dSOS;
}
public double getdCstar() {
return dCstar;
}
public void setdCstar(double dCstar) {
this.dCstar = dCstar;
}
public double getdHhvMol() {
return dHhvMol;
}
public void setdHhvMol(double dHhvMol) {
this.dHhvMol = dHhvMol;
}
public double getdLhvMol() {
return dLhvMol;
}
public void setdLhvMol(double dLhvMol) {
this.dLhvMol = dLhvMol;
}
public double getdHhvv() {
return dHhvv;
}
public void setdHhvv(double dHhvv) {
this.dHhvv = dHhvv;
}
public double getdLhvv() {
return dLhvv;
}
public void setdLhvv(double dLhvv) {
this.dLhvv = dLhvv;
}
public double getdHhvm() {
return dHhvm;
}
public void setdHhvm(double dHhvm) {
this.dHhvm = dHhvm;
}
public double getdLhvm() {
return dLhvm;
}
public void setdLhvm(double dLhvm) {
this.dLhvm = dLhvm;
}
public double getdZb11062() {
return dZb11062;
}
public void setdZb11062(double dZb11062) {
this.dZb11062 = dZb11062;
}
public double getdRhob11062() {
return dRhob11062;
}
public void setdRhob11062(double dRhob11062) {
this.dRhob11062 = dRhob11062;
}
public double getdRhof11062() {
return dRhof11062;
}
public void setdRhof11062(double dRhof11062) {
this.dRhof11062 = dRhof11062;
}
public double getdRD_Ideal11062() {
return dRD_Ideal11062;
}
public void setdRD_Ideal11062(double dRD_Ideal11062) {
this.dRD_Ideal11062 = dRD_Ideal11062;
}
public double getdRD_Real11062() {
return dRD_Real11062;
}
public void setdRD_Real11062(double dRD_Real11062) {
this.dRD_Real11062 = dRD_Real11062;
}
public double getdWobbeIndex() {
return dWobbeIndex;
}
public void setdWobbeIndex(double dWobbeIndex) {
this.dWobbeIndex = dWobbeIndex;
}
public double getPc() {
return Pc;
}
public void setPc(double pc) {
Pc = pc;
}
public double getTC() {
return TC;
}
public void setTC(double TC) {
this.TC = TC;
}
public double getBzsx() {
return Bzsx;
}
public void setBzsx(double bzsx) {
Bzsx = bzsx;
}
public double getBzxx() {
return Bzxx;
}
public void setBzxx(double bzxx) {
Bzxx = bzxx;
}
public double getTotalC() {
return TotalC;
}
public void setTotalC(double totalC) {
TotalC = totalC;
}
public double getC2() {
return C2;
}
public void setC2(double c2) {
C2 = c2;
}
public double getC2j() {
return C2j;
}
public void setC2j(double c2j) {
C2j = c2j;
}
public double getC3j() {
return C3j;
}
public void setC3j(double c3j) {
C3j = c3j;
}
public double getC4j() {
return C4j;
}
public void setC4j(double c4j) {
C4j = c4j;
}
public double getC5j() {
return C5j;
}
public void setC5j(double c5j) {
C5j = c5j;
}
public double getC6j() {
return C6j;
}
public void setC6j(double c6j) {
C6j = c6j;
}
public double getC3C4() {
return C3C4;
}
public void setC3C4(double c3C4) {
C3C4 = c3C4;
}
public String getDngComponents() {
return dngComponents;
}
public void setDngComponents(String dngComponents) {
this.dngComponents = dngComponents;
}
public double[] adMixture; // 气体摩尔组成 Composition in mole fraction
public double[] adMixtureV; // 气体体积组成 Composition in mole fraction
public double[] adMixtureD; // 气体质量组成 Composition in mole fraction
@ -64,445 +505,6 @@ public class GasProps {
public double C3C4; // C3C4组分含量 (kg/m3)
public String dngComponents; //组分的组合字符串 从前端传过来
// Getters and Setters
public String getDngComponents() {
return dngComponents;
}
public void setDngComponents(String dngComponents) {
this.dngComponents = dngComponents;
}
public int getLStatus() {
return lStatus;
}
public void setLStatus(int lStatus) {
this.lStatus = lStatus;
}
public boolean isBForceUpdate() {
return bForceUpdate;
}
public void setBForceUpdate(boolean bForceUpdate) {
this.bForceUpdate = bForceUpdate;
}
public double[] getAdMixture() {
return adMixture;
}
public void setAdMixture(double[] adMixture) {
this.adMixture = adMixture;
}
public double[] getAdMixtureV() {
return adMixtureV;
}
public void setAdMixtureV(double[] adMixtureV) {
this.adMixtureV = adMixtureV;
}
public double[] getAdMixtureD() {
return adMixtureD;
}
public void setAdMixtureD(double[] adMixtureD) {
this.adMixtureD = adMixtureD;
}
public int getDCbtj() {
return dCbtj;
}
public void setDCbtj(int dCbtj) {
this.dCbtj = dCbtj;
}
public double getDPb() {
return dPb;
}
public void setDPb(double dPb) {
this.dPb = dPb;
}
public double getDTb() {
return dTb;
}
public void setDTb(double dTb) {
this.dTb = dTb;
}
public double getDPf() {
return dPf;
}
public void setDPf(double dPf) {
this.dPf = dPf;
}
public double getDTf() {
return dTf;
}
public void setDTf(double dTf) {
this.dTf = dTf;
}
public double getDMrx() {
return dMrx;
}
public void setDMrx(double dMrx) {
this.dMrx = dMrx;
}
public double getDZb() {
return dZb;
}
public void setDZb(double dZb) {
this.dZb = dZb;
}
public double getDZf() {
return dZf;
}
public void setDZf(double dZf) {
this.dZf = dZf;
}
public double getDFpv() {
return dFpv;
}
public void setDFpv(double dFpv) {
this.dFpv = dFpv;
}
public double getDDb() {
return dDb;
}
public void setDDb(double dDb) {
this.dDb = dDb;
}
public double getDDf() {
return dDf;
}
public void setDDf(double dDf) {
this.dDf = dDf;
}
public double getDRhob() {
return dRhob;
}
public void setDRhob(double dRhob) {
this.dRhob = dRhob;
}
public double getDRhof() {
return dRhof;
}
public void setDRhof(double dRhof) {
this.dRhof = dRhof;
}
public double getDRD_Ideal() {
return dRD_Ideal;
}
public void setDRD_Ideal(double dRD_Ideal) {
this.dRD_Ideal = dRD_Ideal;
}
public double getDRD_Real() {
return dRD_Real;
}
public void setDRD_Real(double dRD_Real) {
this.dRD_Real = dRD_Real;
}
public double getDHo() {
return dHo;
}
public void setDHo(double dHo) {
this.dHo = dHo;
}
public double getDH() {
return dH;
}
public void setDH(double dH) {
this.dH = dH;
}
public double getDS() {
return dS;
}
public void setDS(double dS) {
this.dS = dS;
}
public double getDCpi() {
return dCpi;
}
public void setDCpi(double dCpi) {
this.dCpi = dCpi;
}
public double getDCp() {
return dCp;
}
public void setDCp(double dCp) {
this.dCp = dCp;
}
public double getDCv() {
return dCv;
}
public void setDCv(double dCv) {
this.dCv = dCv;
}
public double getDk() {
return dk;
}
public void setDk(double dk) {
this.dk = dk;
}
public double getDKappa() {
return dKappa;
}
public void setDKappa(double dKappa) {
this.dKappa = dKappa;
}
public double getDSOS() {
return dSOS;
}
public void setDSOS(double dSOS) {
this.dSOS = dSOS;
}
public double getDCstar() {
return dCstar;
}
public void setDCstar(double dCstar) {
this.dCstar = dCstar;
}
public double getDHhvMol() {
return dHhvMol;
}
public void setDHhvMol(double dHhvMol) {
this.dHhvMol = dHhvMol;
}
public double getDLhvMol() {
return dLhvMol;
}
public void setDLhvMol(double dLhvMol) {
this.dLhvMol = dLhvMol;
}
public double getDHhvv() {
return dHhvv;
}
public void setDHhvv(double dHhvv) {
this.dHhvv = dHhvv;
}
public double getDLhvv() {
return dLhvv;
}
public void setDLhvv(double dLhvv) {
this.dLhvv = dLhvv;
}
public double getDHhvm() {
return dHhvm;
}
public void setDHhvm(double dHhvm) {
this.dHhvm = dHhvm;
}
public double getDLhvm() {
return dLhvm;
}
public void setDLhvm(double dLhvm) {
this.dLhvm = dLhvm;
}
public double getDZb11062() {
return dZb11062;
}
public void setDZb11062(double dZb11062) {
this.dZb11062 = dZb11062;
}
public double getDRhob11062() {
return dRhob11062;
}
public void setDRhob11062(double dRhob11062) {
this.dRhob11062 = dRhob11062;
}
public double getDRhof11062() {
return dRhof11062;
}
public void setDRhof11062(double dRhof11062) {
this.dRhof11062 = dRhof11062;
}
public double getDRD_Ideal11062() {
return dRD_Ideal11062;
}
public void setDRD_Ideal11062(double dRD_Ideal11062) {
this.dRD_Ideal11062 = dRD_Ideal11062;
}
public double getDRD_Real11062() {
return dRD_Real11062;
}
public void setDRD_Real11062(double dRD_Real11062) {
this.dRD_Real11062 = dRD_Real11062;
}
public double getDWobbeIndex() {
return dWobbeIndex;
}
public void setDWobbeIndex(double dWobbeIndex) {
this.dWobbeIndex = dWobbeIndex;
}
public double getPc() {
return Pc;
}
public void setPc(double pc) {
this.Pc = pc;
}
public double getTC() {
return TC;
}
public void setTC(double tc) {
this.TC = tc;
}
public double getBzsx() {
return Bzsx;
}
public void setBzsx(double bzsx) {
this.Bzsx = bzsx;
}
public double getBzxx() {
return Bzxx;
}
public void setBzxx(double bzxx) {
this.Bzxx = bzxx;
}
public double getTotalC() {
return TotalC;
}
public void setTotalC(double totalC) {
this.TotalC = totalC;
}
public double getC2() {
return C2;
}
public void setC2(double c2) {
this.C2 = c2;
}
public double getC2j() {
return C2j;
}
public void setC2j(double c2j) {
this.C2j = c2j;
}
public double getC3j() {
return C3j;
}
public void setC3j(double c3j) {
this.C3j = c3j;
}
public double getC4j() {
return C4j;
}
public void setC4j(double c4j) {
this.C4j = c4j;
}
public double getC5j() {
return C5j;
}
public void setC5j(double c5j) {
this.C5j = c5j;
}
public double getC6j() {
return C6j;
}
public void setC6j(double c6j) {
this.C6j = c6j;
}
public double getC3C4() {
return C3C4;
}
public void setC3C4(double c3c4) {
this.C3C4 = c3c4;
}
}

View File

@ -6,7 +6,7 @@ import org.springframework.stereotype.Service;
@Service
public class DetailService {
private static final int NUMBER_OF_COMPONENTS = 21;
private static final double RGASKJ = 8.314510e-3;
// 成员变量转换
@ -124,7 +124,22 @@ public class DetailService {
public double dd2BdT2;
// 其他成员变量...
// 构造函数
public DetailService()
{
//initialize history-sensitive variables
dOldMixID = 0.0; // mixture ID from previous calc
dOldPb = 0.0; // base pressure from previous calc
dOldTb = 0.0; // base temperature from previous calc
dOldPf = 0.0; // flowing pressure from previous calc
dOldTf = 0.0; // flowing temperature from previous calc
//initialize gas component array used within this class
for (int i = 0; i < GasConstants.NUMBEROFCOMPONENTS; i++) dXi[i] = 0;
// function table() populates tables of static constants
table();
}
public void run(GasProps gasProps) {
// 实现转换后的逻辑
@ -132,7 +147,7 @@ public class DetailService {
int i;
// Check for gas composition change
gasProps.bForceUpdate = gasProps.bForceUpdate || compositionChange(gasProps);
gasProps.bForceUpdate = (gasProps.bForceUpdate || compositionChange(gasProps));
// assign component IDs and values
if (gasProps.bForceUpdate) {
@ -224,10 +239,9 @@ public class DetailService {
private boolean compositionChange(GasProps gasProps) {
double dMixID = 0.0;
for (int i = 0; i < NUMBER_OF_COMPONENTS; i++) {
dMixID += ((i + 2) * gasProps.getAdMixture()[i]);
}
if (dMixID != dOldMixID) {
for (int i = 0; i < GasConstants.NUMBEROFCOMPONENTS; i++) {
dMixID += ((i + 2) * gasProps.adMixture[i]);
}if (dMixID != dOldMixID) {
dOldMixID = dMixID;
return true;
}
@ -238,10 +252,10 @@ public class DetailService {
int j, k;
// table 5 parameters; declared locally to this function
double[] adTable5Mri = new double[GasConstants.NUMBEROFCOMPONENTS];
double[] adTable5Ei = new double[GasConstants.NUMBEROFCOMPONENTS];
double[] adTable5Ki = new double[GasConstants.NUMBEROFCOMPONENTS];
double[] adTable5Gi = new double[GasConstants.NUMBEROFCOMPONENTS];
double[] adTable5Mri;
double[] adTable5Ei;
double[] adTable5Ki;
double[] adTable5Gi;
// 初始化adTable5Mri数组
adTable5Mri = new double[]{16.0430, 28.0135, 44.0100, 30.0700, 44.0970, 18.0153, 34.0820, 2.0159, 28.0100, 31.9988, 58.1230, 58.1230, 72.1500, 72.1500, 86.1770, 100.2040, 114.2310, 128.2580, 142.2850, 4.0026, 39.9480};

View File

@ -51,88 +51,88 @@ public class GBT11062Service {
double dMair = 28.9626;
double dZair = 0;
DetailService detailService;
public void Run(GasProps ptAGA10) {
public void Run(GasProps gasProps) {
for (int i = 0; i < GasConstants.NUMBEROFCOMPONENTS; i++) dXi[i] = 0;
iNCC = -1;
for (i = 0; i < GasConstants.NUMBEROFCOMPONENTS; i++) {
if (ptAGA10.adMixture[i] > 0.0) {
if (gasProps.adMixture[i] > 0.0) {
iNCC = iNCC + 1;
aiCID[iNCC] = i;
dXi[iNCC] = ptAGA10.adMixture[i];
dXi[iNCC] = gasProps.adMixture[i];
}
}
iNCC = iNCC + 1;
for (i = 0; i < GasConstants.NUMBEROFCOMPONENTS; i++) {
if (ptAGA10.adMixture[i] != 0) {
ptAGA10.Pc += adTablePc[i] * ptAGA10.adMixture[i];
ptAGA10.TC += adTableTc[i] * ptAGA10.adMixture[i];
if (gasProps.adMixture[i] != 0) {
gasProps.Pc += adTablePc[i] * gasProps.adMixture[i];
gasProps.TC += adTableTc[i] * gasProps.adMixture[i];
if (adTableBzsx[i] != 0) {
ptAGA10.Bzsx += ptAGA10.adMixture[i] / adTableBzsx[i];
ptAGA10.Bzxx += ptAGA10.adMixture[i] / adTableBzxx[i];
gasProps.Bzsx += gasProps.adMixture[i] / adTableBzsx[i];
gasProps.Bzxx += gasProps.adMixture[i] / adTableBzxx[i];
}
if (i >= 10 & i <= 18) {
ptAGA10.C4j += ptAGA10.adMixture[i] * adTableMri[i];
gasProps.C4j += gasProps.adMixture[i] * adTableMri[i];
}
if (i >= 12 & i <= 18) {
ptAGA10.C5j += ptAGA10.adMixture[i] * adTableMri[i];
gasProps.C5j += gasProps.adMixture[i] * adTableMri[i];
}
if (i >= 14 & i <= 18) {
ptAGA10.C6j += ptAGA10.adMixture[i] * adTableMri[i];
gasProps.C6j += gasProps.adMixture[i] * adTableMri[i];
}
if (i == 3) {
ptAGA10.C2 += ptAGA10.adMixture[i] * adTableMri[i];
gasProps.C2 += gasProps.adMixture[i] * adTableMri[i];
}
switch (ptAGA10.dCbtj) {
switch (gasProps.dCbtj) {
case 2:
ptAGA10.dZb11062 += adTableSqrtbj[0][i] * ptAGA10.adMixture[i];
ptAGA10.dHhvMol += adTableHhvMol[0][i] * ptAGA10.adMixture[i];
ptAGA10.dLhvMol += adTableLhvMol[0][i] * ptAGA10.adMixture[i];
gasProps.dZb11062 += adTableSqrtbj[0][i] * gasProps.adMixture[i];
gasProps.dHhvMol += adTableHhvMol[0][i] * gasProps.adMixture[i];
gasProps.dLhvMol += adTableLhvMol[0][i] * gasProps.adMixture[i];
dZair = 0.99941;
break;
case 1:
ptAGA10.dZb11062 += adTableSqrtbj[1][i] * ptAGA10.adMixture[i];
ptAGA10.dHhvMol += adTableHhvMol[1][i] * ptAGA10.adMixture[i];
ptAGA10.dLhvMol += adTableLhvMol[1][i] * ptAGA10.adMixture[i];
gasProps.dZb11062 += adTableSqrtbj[1][i] * gasProps.adMixture[i];
gasProps.dHhvMol += adTableHhvMol[1][i] * gasProps.adMixture[i];
gasProps.dLhvMol += adTableLhvMol[1][i] * gasProps.adMixture[i];
dZair = 0.99958;
break;
case 0:
ptAGA10.dZb11062 += adTableSqrtbj[2][i] * ptAGA10.adMixture[i];
ptAGA10.dHhvMol += adTableHhvMol[2][i] * ptAGA10.adMixture[i];
ptAGA10.dLhvMol += adTableLhvMol[2][i] * ptAGA10.adMixture[i];
gasProps.dZb11062 += adTableSqrtbj[2][i] * gasProps.adMixture[i];
gasProps.dHhvMol += adTableHhvMol[2][i] * gasProps.adMixture[i];
gasProps.dLhvMol += adTableLhvMol[2][i] * gasProps.adMixture[i];
dZair = 0.99963;
break;
}
}
}
ptAGA10.Bzsx = 1 / ptAGA10.Bzsx;
ptAGA10.Bzxx = 1 / ptAGA10.Bzxx;
ptAGA10.dZb11062 = 1 - ptAGA10.dZb11062 * ptAGA10.dZb11062;
ptAGA10.dHhvm = ptAGA10.dHhvMol / ptAGA10.dMrx;
ptAGA10.dLhvm = ptAGA10.dLhvMol / ptAGA10.dMrx;
ptAGA10.dHhvv = ptAGA10.dHhvMol * ptAGA10.dPb / ptAGA10.dTb / 8314.510 / ptAGA10.dZb11062;
ptAGA10.dLhvv = ptAGA10.dLhvMol * ptAGA10.dPb / ptAGA10.dTb / 8314.510 / ptAGA10.dZb11062;
ptAGA10.dRD_Ideal11062 = ptAGA10.dMrx / dMair;
ptAGA10.dRD_Real11062 = ptAGA10.dRD_Ideal11062 * dZair / ptAGA10.dZb11062;
gasProps.Bzsx = 1 / gasProps.Bzsx;
gasProps.Bzxx = 1 / gasProps.Bzxx;
gasProps.dZb11062 = 1 - gasProps.dZb11062 * gasProps.dZb11062;
gasProps.dHhvm = gasProps.dHhvMol / gasProps.dMrx;
gasProps.dLhvm = gasProps.dLhvMol / gasProps.dMrx;
gasProps.dHhvv = gasProps.dHhvMol * gasProps.dPb / gasProps.dTb / 8314.510 / gasProps.dZb11062;
gasProps.dLhvv = gasProps.dLhvMol * gasProps.dPb / gasProps.dTb / 8314.510 / gasProps.dZb11062;
gasProps.dRD_Ideal11062 = gasProps.dMrx / dMair;
gasProps.dRD_Real11062 = gasProps.dRD_Ideal11062 * dZair / gasProps.dZb11062;
ptAGA10.dRhob11062 = ptAGA10.dMrx * ptAGA10.dPb / 8314.51 / ptAGA10.dTb / ptAGA10.dZb11062;
ptAGA10.dRhof11062 = ptAGA10.dMrx * ptAGA10.dPf / 8314.51 / ptAGA10.dTf / ptAGA10.dZf;
ptAGA10.dWobbeIndex = ptAGA10.dHhvv / Math.sqrt(ptAGA10.dRD_Real11062);
ptAGA10.C3j = ptAGA10.C4j + ptAGA10.adMixture[4] * adTableMri[4];
ptAGA10.C2j = ptAGA10.C3j + ptAGA10.adMixture[3] * adTableMri[3];
ptAGA10.C3C4 = ptAGA10.adMixture[4] * adTableMri[4] + ptAGA10.adMixture[10] * adTableMri[10] + ptAGA10.adMixture[11] * adTableMri[11];
ptAGA10.TotalC = ptAGA10.C2j + ptAGA10.adMixture[0] * adTableMri[0];
gasProps.dRhob11062 = gasProps.dMrx * gasProps.dPb / 8314.51 / gasProps.dTb / gasProps.dZb11062;
gasProps.dRhof11062 = gasProps.dMrx * gasProps.dPf / 8314.51 / gasProps.dTf / gasProps.dZf;
gasProps.dWobbeIndex = gasProps.dHhvv / Math.sqrt(gasProps.dRD_Real11062);
gasProps.C3j = gasProps.C4j + gasProps.adMixture[4] * adTableMri[4];
gasProps.C2j = gasProps.C3j + gasProps.adMixture[3] * adTableMri[3];
gasProps.C3C4 = gasProps.adMixture[4] * adTableMri[4] + gasProps.adMixture[10] * adTableMri[10] + gasProps.adMixture[11] * adTableMri[11];
gasProps.TotalC = gasProps.C2j + gasProps.adMixture[0] * adTableMri[0];
ptAGA10.TotalC = ptAGA10.TotalC * ptAGA10.dPb / 8314.51 / ptAGA10.dTb / ptAGA10.dZb11062;
ptAGA10.C2 = ptAGA10.C2 * ptAGA10.dPb / 8314.51 / ptAGA10.dTb / ptAGA10.dZb11062;
ptAGA10.C3C4 = ptAGA10.C3C4 * ptAGA10.dPb / 8314.51 / ptAGA10.dTb / ptAGA10.dZb11062;
ptAGA10.C2j = ptAGA10.C2j * ptAGA10.dPb / 8314.51 / ptAGA10.dTb / ptAGA10.dZb11062;
ptAGA10.C3j = ptAGA10.C3j * ptAGA10.dPb / 8314.51 / ptAGA10.dTb / ptAGA10.dZb11062;
ptAGA10.C4j = ptAGA10.C4j * ptAGA10.dPb / 8314.51 / ptAGA10.dTb / ptAGA10.dZb11062;
ptAGA10.C5j = ptAGA10.C5j * ptAGA10.dPb / 8314.51 / ptAGA10.dTb / ptAGA10.dZb11062;
ptAGA10.C6j = ptAGA10.C6j * ptAGA10.dPb / 8314.51 / ptAGA10.dTb / ptAGA10.dZb11062;
gasProps.TotalC = gasProps.TotalC * gasProps.dPb / 8314.51 / gasProps.dTb / gasProps.dZb11062;
gasProps.C2 = gasProps.C2 * gasProps.dPb / 8314.51 / gasProps.dTb / gasProps.dZb11062;
gasProps.C3C4 = gasProps.C3C4 * gasProps.dPb / 8314.51 / gasProps.dTb / gasProps.dZb11062;
gasProps.C2j = gasProps.C2j * gasProps.dPb / 8314.51 / gasProps.dTb / gasProps.dZb11062;
gasProps.C3j = gasProps.C3j * gasProps.dPb / 8314.51 / gasProps.dTb / gasProps.dZb11062;
gasProps.C4j = gasProps.C4j * gasProps.dPb / 8314.51 / gasProps.dTb / gasProps.dZb11062;
gasProps.C5j = gasProps.C5j * gasProps.dPb / 8314.51 / gasProps.dTb / gasProps.dZb11062;
gasProps.C6j = gasProps.C6j * gasProps.dPb / 8314.51 / gasProps.dTb / gasProps.dZb11062;
}

View File

@ -54,13 +54,14 @@ public class ThermService {
{0.0, 4.9680, 0.0, 100.0, 0.0, 100.0, 0.0, 100.0, 0.0, 100.0, 0.0},
{0.0, 4.9680, 0.0, 100.0, 0.0, 100.0, 0.0, 100.0, 0.0, 100.0, 0.0}
};
public void calculateThermodynamicProperties(GasProps gasProps) {
// 实现热力学计算逻辑
double cp = calculateCpiMolar(gasProps);
gasProps.setDCpi(cp * 1000 / gasProps.getDMrx());
// 其他计算...
public ThermService()
{
// initialize 3 history-sensitive variables
dSi = 0.0;
dTold = 0.0;
dMrxold = 0.0;
}
public void Run(GasProps gasProps, DetailService detailService)
{
//local variables
@ -86,7 +87,7 @@ public class ThermService {
gasProps.dKappa = (c * gasProps.dRhof) / gasProps.dPf;
return;
}
private double calculateCpiMolar(GasProps gasProps) {
private double CpiMolar(GasProps gasProps) {
double cp = 0.0;
double Cpx;
double DT, FT, HT, JT;
@ -213,7 +214,7 @@ public class ThermService {
double Hinc = 0.0;
double Sinc = 0.0;
double Smixing = 0.0;
double Cp = calculateCpiMolar(gasProps);
double Cp = CpiMolar(gasProps);
double Si;
gasProps.dHo = Ho(gasProps);