GasFlowMeter/User/NG 带注释/Detail.h

116 lines
4.2 KiB
C

/*************************************************************************
* 文件: detail.h
* 描述: 'Detail' 类的头文件
* 实现部分请参见 'detail.c'
* 版本: ver 1.7 2002.11.17
* 作者: W.B. Peterson
* 修订记录:
* 版权所有 (c) 2002 美国天然气协会
**************************************************************************/
#ifndef _DETAIL_H
#define _DETAIL_H
#include "NGCal.h"
#include <stdbool.h> // 添加bool类型支持
// 使用结构体替代C++类
typedef struct Detail
{
// 私有成员数据
int iNCC; // 组分数目
int aiCID[21]; // 组分ID
// 五个历史变量用于提高重复计算时的效率
double dOldMixID; // 上一次计算的混合物ID
double dOldPb; // 上一次计算的Pb
double dOldTb; // 上一次计算的Tb
double dOldPf; // 上一次计算的Pf
double dOldTf; // 上一次计算的Tf
// 表4第1列中的EOS参数
double adAn[58];
double adUn[58];
// 表5中的特征参数
double dMri[21]; // 第i组分的分子量
double dEi[21]; // 第i组分的特征能量参数
double dKi[21]; // 第i组分的尺寸参数 - m^3/kg-mol ^1/3
double dGi[21]; // 第i组分的取向参数
double dQi[21]; // 第i组分的四极参数
double dFi[21]; // 第i组分的高温参数
double dSi[21]; // 第i组分的偶极参数
double dWi[21]; // 第i组分的缔合参数
double dEij[21][21]; // 维里系数能量二元相互作用参数
double dUij[21][21]; // 共形能量的二元相互作用参数
double dKij[21][21]; // 尺寸的二元相互作用参数
double dGij[21][21]; // 取向的二元相互作用参数
double adTable6Eij[21][21]; // 表6常数
double adTable6Uij[21][21]; // 表6常数
double adTable6Kij[21][21]; // 表6常数
double adTable6Gij[21][21]; // 表6常数
double adTable5Qi[21]; // 表5常数
double adTable5Fi[21]; // 表5常数
double adTable5Si[21]; // 表5常数
double adTable5Wi[21]; // 表5常数
double adTableHhvMol[4][21]; //GB/T11062 摩尔高位发热量
double adTableLhvMol[4][21]; //GB/T11062 摩尔低位发热量
double dXi[21]; // 第i组分的摩尔分数
double dPCalc; // 由pdetail()计算的压力
double dT; // 当前温度
double dP; // 当前压力
double dRhoTP; // 在T和P下的摩尔密度
double dB; // 第二维里系数B
double adBcoef[18]; // 计算B的18个系数
double adFn[58]; // 密度系数的函数
double fx[58]; // 用于3个导数的修改系数
double dU; // 混合物能量参数
double dKp3; // 混合物尺寸参数的立方
double dW; // 混合物取向参数
double dQp2; // 混合物四极参数的平方
double dF; // 高温参数
double dRho; // 摩尔密度
double dRhoL; // 用于braket函数的低密度
double dRhoH; // 用于braket函数的高密度
double dPRhoL; // 用于braket函数的低压
double dPRhoH; // 用于braket函数的高压
// 公共变量,也用于高级流体性质计算
double dZ; // 当前压缩因子
double ddZdT; // Z对T的一阶偏导数
double dd2ZdT2; // Z对T的二阶偏导数
double ddZdD; // Z对摩尔密度的一阶偏导数
double ddBdT; // B对T的一阶偏导数
double dd2BdT2; // B对T的二阶偏导数
} Detail;
// 构造函数和析构函数
Detail* Detail_Construct(void);
void Detail_Destroy(Detail* pDetail);
// 私有方法
int Detail_compositionchange(Detail* pDetail, AGA10STRUCT* pAGA10);
void Detail_table(Detail* pDetail);
void Detail_paramdl(Detail* pDetail);
void Detail_chardl(Detail* pDetail, AGA10STRUCT* pAGA10);
void Detail_bvir(Detail* pDetail);
void Detail_temp(Detail* pDetail);
void Detail_braket(Detail* pDetail, AGA10STRUCT* pAGA10);
void Detail_pdetail(Detail* pDetail, double dRho);
void Detail_ddetail(Detail* pDetail, AGA10STRUCT* pAGA10);
void Detail_relativedensity(Detail* pDetail, AGA10STRUCT* pAGA10);
// 公共方法
double Detail_zdetail(Detail* pDetail, double dRho);
double Detail_dZdT(Detail* pDetail, double dRho);
double Detail_d2ZdT2(Detail* pDetail, double dRho);
double Detail_dZdD(Detail* pDetail, double dRho);
void Detail_Run(Detail* pDetail, AGA10STRUCT* pAGA10);
#endif