GasFlowMeter/User/NG/NGCal.h

114 lines
4.6 KiB
C
Raw Normal View History

/*************************************************************************
* <EFBFBD>ļ<EFBFBD>: NGCal.h
**************************************************************************/
#ifndef _NGCal_H
#define _NGCal_H
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* ״̬<D7B4><CCAC> */
#define NORMAL 9000
#define NGCal_NGCal 9001
#define MEMORY_ALLOCATION_ERROR 9002
#define GENERAL_CALCULATION_FAILURE 9003
#define MAX_NUM_OF_ITERATIONS_EXCEEDED 9004
#define NEGATIVE_DENSITY_DERIVATIVE 9005
#define MAX_DENSITY_IN_BRAKET_EXCEEDED 9006
#define FLOW_CALC_ERROR 9007
#define FLOW_CALC_DIEDAI_ERROR 9008
/* <20><><EFBFBD><EFBFBD><EFBFBD> */
#define NUMBEROFCOMPONENTS 21
#define M_PI 3.14159265897932
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> */
#define MAX_NUM_OF_ITERATIONS 100
/* Ĭ<><C4AC><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD> */
#define P_CHG_TOL 0.001 /* 0.001 Pa */
#define T_CHG_TOL 0.001 /* 0.001 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><50>T */
#define P_MAX 1.379e8 /* <20><><EFBFBD>ѹ<EFBFBD><D1B9>(Pa) ~= 20,000 psi */
#define P_MIN 0.0 /* <20><>Сѹ<D0A1><D1B9> = 0 */
#define T_MAX 473.15 /* <20><><EFBFBD><EFBFBD><EFBFBD>(K) ~= 392 F */
#define T_MIN 143.0 /* <20><><EFBFBD><EFBFBD><EFBFBD>(K) ~= -200 F */
/* ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define RGASKJ 8.314510e-3 /* <20><>λ: kJ mol^-1 K^-1 */
#define RGAS 8.314510 /* <20><>λ: J mol^-1 K^-1 */
/* <20><>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ */
typedef struct tagNGParSTRUCT
{
long lStatus; /* <20><><EFBFBD><EFBFBD>״̬ */
int bForceUpdate; /* ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> */
double adMixture[21]; /* Ħ<><C4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
int dCbtj; /* <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> 0 101.325MPa 20<32>棻1:101325MPa<50><61>15<31>棻2:101325MPa<50><61>0<EFBFBD><30> */
double dPb; /* <20><>ͬ<EFBFBD><CDAC>׼ѹ<D7BC><D1B9>(Pa) */
double dTb; /* <20><>ͬ<EFBFBD><CDAC>׼<EFBFBD><EFBFBD>(K) */
double dPf; /* <20><><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>(Pa) */
double dTf; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(K) */
/* AGA 8 Detail<69><6C><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
double dMrx; /* <20><><EFBFBD><EFBFBD><EFBFBD>Ħ<EFBFBD><C4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
double dZb; /* <20><>ͬ<EFBFBD><CDAC>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ѹ<EFBFBD><D1B9>ϵ<EFBFBD><CFB5> */
double dZf; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ѹ<EFBFBD><D1B9>ϵ<EFBFBD><CFB5> */
double dFpv; /* <20><>ѹ<EFBFBD><D1B9>ϵ<EFBFBD><CFB5> */
double dDb; /* <20><>ͬ<EFBFBD><CDAC>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Ħ<EFBFBD><C4A6><EFBFBD>ܶ<EFBFBD>(moles/dm3) */
double dDf; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Ħ<EFBFBD><C4A6><EFBFBD>ܶ<EFBFBD>(moles/dm3) */
double dRhob; /* <20><>ͬ<EFBFBD><CDAC>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>(kg/m3) */
double dRhof; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>(kg/m3) */
double dRD_Ideal; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD> */
double dRD_Real; /* <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
double dHo; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
double dH; /* <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(J/kg) */
double dS; /* <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(J/kg-mol.K) */
double dCpi; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嶨ѹ<E5B6A8><D1B9><EFBFBD><EFBFBD>(J/kg-mol.K) */
double dCp; /* <20><>ʵ<EFBFBD><CAB5><EFBFBD>嶨ѹ<E5B6A8><D1B9><EFBFBD><EFBFBD>(J/kg-mol.K) */
double dCv; /* <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><E5B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(J/kg-mol.K) */
double dk; /* <20><><EFBFBD>ȱ<EFBFBD> */
double dKappa; /* <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ĸkappa<70><61>ʾ */
double dSOS; /* <20><><EFBFBD><EFBFBD>(m/s) */
double dCstar; /* <20>ٽ<EFBFBD><D9BD><EFBFBD>ϵ<EFBFBD><CFB5>C* */
/*11062 <20><><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
double dHhvMol; /*<2A><>λĦ<CEBB><C4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
double dLhvMol; /*<2A><>λĦ<CEBB><C4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
} NGParSTRUCT;
/* <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ö<EFBFBD><C3B6> */
enum gascomp {
XiC1=0, XiN2, XiCO2, XiC2, XiC3,
XiH2O, XiH2S, XiH2, XiCO, XiO2,
XiIC4, XiNC4, XiIC5, XiNC5, XiNC6,
XiNC7, XiNC8, XiNC9, XiNC10, XiHe, XiAr
};
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD> */
int NGCal_Init(NGParSTRUCT * ptNGPar); /* <20><>ʼ<EFBFBD><CABC> */
int NGCal_UnInit(void); /* <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> */
/* <20><><EFBFBD><EFBFBD>VOS<4F><53><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>ԭ<EFBFBD><D4AD> */
double SOS(NGParSTRUCT *);
/* C*<2A><><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>ԭ<EFBFBD><D4AD> */
double Crit(NGParSTRUCT *, double);
#endif