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

115 lines
3.7 KiB
C
Raw Normal View History

/*************************************************************************
* <EFBFBD>ļ<EFBFBD>: aga10.h
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: aga10.c<EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>ͺͶ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>: ver 1.7 2002.11.17
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: W.B. Peterson
* <EFBFBD>޶<EFBFBD>:
* <EFBFBD><EFBFBD>Ȩ (c) 2002 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD>
**************************************************************************/
#ifndef _AGA10_H
#define _AGA10_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 AGA10_INITIALIZED 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
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define NUMBEROFCOMPONENTS 21
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><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><EFBFBD>P<EFBFBD><50>T */
#define P_MAX 1.379e8 /* <20><><EFBFBD><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><EFBFBD>(K) ~= 392 F */
#define T_MIN 143.0 /* <20><><EFBFBD><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><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ݽṹ */
typedef struct tagAGA10STRUCT
{
long lStatus; /* <20><><EFBFBD><EFBFBD>״̬ */
int bForceUpdate; /* ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> */
double adMixture[NUMBEROFCOMPONENTS]; /* Ħ<><C4A6><EFBFBD><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><EFBFBD> */
double dMrx; /* <20><><EFBFBD><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>ܶ<EFBFBD> */
double dRD_Real; /* <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
double dHo; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
double dH; /* <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(J/kg) */
double dS; /* <20><>ʵ<EFBFBD><CAB5><EFBFBD><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>λ<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>*/
} AGA10STRUCT;
/* <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><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><EFBFBD>ԭ<EFBFBD><D4AD> */
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD> */
int AGA10_Init(void); /* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> */
int AGA10_UnInit(void); /* <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> */
/* <20><><EFBFBD><EFBFBD>VOS<4F><53><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>ԭ<EFBFBD><D4AD> */
double SOS(AGA10STRUCT *);
/* C*<2A><><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>ԭ<EFBFBD><D4AD> */
double Crit(AGA10STRUCT *, double);
#endif