/************************************************************************* * 文件: 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 // 添加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