GasFlowMeter/User/NG/NGCal.h

114 lines
4.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*************************************************************************
* <20>ļ<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