116 lines
4.2 KiB
C
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
|