金币问题c语言程序,【求助】急请c语言高手帮忙解决程序问题(问题已经被我自己解决,金币送给自己啦)...

这段代码展示了如何在C++中使用Refprop.dll库来初始化并调用各种热力学函数,如饱和温度和密度计算。通过加载库文件,获取函数指针并设置流体属性,然后调用如SATPdll等函数来获取混合物的饱和状态数据。
摘要由CSDN通过智能技术生成

不好意思,这是程序后面部分:

RHOMOLL,double*   X,   double&   DRHODT);

void   (__stdcall   *FGCTYdll)(double&   TK,             double&   RHOMOLL,double*   X,   double&   FUGACITY);//   The   following   ifdef   block   is   the   standard   way   of   creating   macros   which   make   exporting

void   (__stdcall   *LIMITXdll)(char*   htyp,double&   TinK,double&   rhoin_Mol,double&   PinkPa,   double*   X,   double&   TminK,   double&   TmaxK,   double&   rhomaxMol,double&   PmaxkPa,   long&   ierr,char*   herr,long   lnhtyp,long   lnherr);

void   (__stdcall   *SETKTVdll)(long&   icomp,   long&   jcomp,   char*   hmodij,double&   fij,char*   hfmix,long&   ierr,char*   herr,long   Lengthhmodij,long   Lengthhfmix,long   LengthHERR);

void   (__stdcall   *GETKTVdll)(long&   icomp,   long&   jcomp,char*   hmodij,double&   fij,char*     hfmix,char*   hfij,char*   hbinp,char*   hmxrul,long   ln1,long   ln2,long   ln3,long   ln4,long   ln5);

void   (__stdcall   *GETFIJdll)(char*   hmodij,char*   fij,char*   hfij,char*   hmxrul,long   ln1,long   ln2,long   ln3);

//#pragma   argsused

#includeint   main(int   argc,   char*   argv[])

{

//   First   create   a   pointer   to   an   instance   of   the   library

//   Then   have   windows   load   the   library.

HINSTANCE   RefpropdllInstance;

RefpropdllInstance   =   LoadLibrary("Refprop.dll");

//   Then   get   pointers   to   the   actual   functions.

SETUPdll   =   (fp_SETUPDLLTYPE)   GetProcAddress(RefpropdllInstance,"SETUPdll");

INFOdll   =   (fp_INFOdllTYPE)   GetProcAddress(RefpropdllInstance,"INFOdll");

SATTdll   =   (fp_SATdllTYPE)   GetProcAddress(RefpropdllInstance,"SATTdll");

SATPdll   =   (fp_SATdllTYPE)   GetProcAddress(RefpropdllInstance,"SATPdll");

ENTROdll   =   (fp_ENTROENTHALdllTYPE)   GetProcAddress(RefpropdllInstance,"ENTROdll");

ENTHALdll   =   (fp_ENTROENTHALdllTYPE)   GetProcAddress(RefpropdllInstance,"ENTHALdll");

TDFLSHdll   =   (fp_TDPFLSHdllTYPE)   GetProcAddress(RefpropdllInstance,"TDFLSHdll");

TPFLSHdll   =   (fp_TDPFLSHdllTYPE)   GetProcAddress(RefpropdllInstance,"TPFLSHdll");

PDFLSHdll   =   (fp_TDPFLSHdllTYPE)   GetProcAddress(RefpropdllInstance,"PDFLSHdll");

DSFLSHdll   =   (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"DSFLSHdll");

DEFLSHdll   =   (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"DEFLSHdll");

PEFLSHdll   =   (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"PEFLSHdll");

DHFLSHdll   =   (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"DHFLSHdll");

PHFLSHdll   =   (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"PHFLSHdll");

PSFLSHdll   =   (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"PSFLSHdll");

THFLSHdll   =   (fp_TQHFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"THFLSHdll");

PQFLSHdll   =   (fp_TQHFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"PQFLSHdll");

TQFLSHdll   =   (fp_TQHFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"TQFLSHdll");

XMASSdll   =     (fp_MASSMOLEFRACTIONdllTYPE)GetProcAddress(RefpropdllInstance,"XMASSdll");

XMOLEdll   =     (fp_MASSMOLEFRACTIONdllTYPE)GetProcAddress(RefpropdllInstance,"XMOLEdll");

CRITPdll   =     (fp_CRITPdllTYPE)GetProcAddress(RefpropdllInstance,"CRITPdll");

PSFL1dll   =     (fp_PSFL1dllTYPE)GetProcAddress(RefpropdllInstance,"PSFL1dll");

TPRHOdll   =   (fp_TPRHOdllTYPE)GetProcAddress(RefpropdllInstance,"TPRHOdll");

PRESSdll   =   (fp_PRESSdllTYPE)GetProcAddress(RefpropdllInstance,"PRESSdll");

GIBBSdll   =   (fp_GIBBSdllTYPE)GetProcAddress(RefpropdllInstance,"GIBBSdll");

CVCPdll   =   (fp_CVCPdllTYPE)GetProcAddress(RefpropdllInstance,"CVCPdll");

THERMdll   =   (fp_THERMdllTYPE)GetProcAddress(RefpropdllInstance,"THERMdll");

THERM2dll   =   (fp_THERM2dllTYPE)GetProcAddress(RefpropdllInstance,"THERM2dll");

TRNPRPdll   =   (fp_TRNPRPdllTYPE)GetProcAddress(RefpropdllInstance,"TRNPRPdll");

DHDTdll   =   (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DHDTdll");

DPDDdll   =   (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DPDDdll");

DPDD2dll   =   (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DPDD2dll");

DPDTdll   =   (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DPDTdll");

DDDPdll   =   (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DDDPdll");

DDDTdll   =   (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DDDTdll");

FGCTYdll   =   (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"FGCTYdll");

LIMITXdll   =   (fp_LIMITXdllTYPE)GetProcAddress(RefpropdllInstance,"LIMITXdll");

SETKTVdll   =   (fp_SETKTVdllTYPE)GetProcAddress(RefpropdllInstance,"SETKTVdll");

GETKTVdll   =   (fp_GETKTVdllTYPE)GetProcAddress(RefpropdllInstance,"GETKTVdll");

GETFIJdll   =   (fp_GETFIJdllTYPE)GetProcAddress(RefpropdllInstance,"GETFIJdll");

//   Now   use   the   functions.

//   Refprop   variables   that   need   to   be   defined

//

//   nc   =   Number   of   components   in   the   mixture

//   x[NumberOfComponentsInMixtures]   =   Mole   fraction   of   each   component

//   ierr   =     An   integer   flag   defining   an   error

//   HFILES[]   =   a   character   array   defining   the   fluids   in   a   mixture

//   HRF[]   =   a   character   array   denoting   the   reference   state

//   HERR[]   =   a   character   array   for   storing   a   string   -   Error   message

//   HFMIX[]   a   character   array   defining   the   path   to   the   mixture   file

double   x[compsize]={0};

long   nc,ierr;

char   HFILES[refpropfluidpathlength+1],   HRF[lengthofreference+1],

HERR[errormessagelength+1],HFMIX[refpropcharlength+1];

nc   =   1;

x[0]   =   1.0;

//         Set   HFILES   to   the   path   of   the   R134a.fld   file.     Terminate   with   '\0'

//         Set   HFMIX   to   the   path   of   the   HMX.BNC   file.     Terminate   with   '\0'

//         Set   HRF   to   a   reference...DEF   in   this   case.     Terminate   with   '\0'

//         Set   HERR   to   a   default   error..."ok"   for   now.     Terminate   with   '\0'

strcpy(HFILES,"F:\\refprop7\\Fluids\\R134a.fld\0");

strcpy(HFMIX,"F:\\refprop7\\Fluids\\HMX.BNC\0");

strcpy(HRF,"DEF\0");

strcpy(HERR,"Ok\0");

//   Note,   the   directory   will   likely   be   different   on   other   machines

//   Call   SETUPdll   to   initialize   global   variables   in   Refprop

SETUPdll(nc,   HFILES,   HFMIX,   HRF,   ierr,   HERR,

refpropfluidpathlength,refpropcharlength,

lengthofreference,errormessagelength);

printf("%ld\n",ierr);

//   Create   variables   that   are   to   be

//   (a)   Used   to   call   the   SATPdll   function

//   (b)   Returned   by   the   SATPdll   function

double   XLIQ[compsize]={0.0};

double   XVAP[compsize]={0.0};

//   Some   values...

double   PkPa,TK,RHOF,RHOG;

long   KPH;

KPH   =   2;         //   Vapor

PkPa   =   101.325;

SATPdll(PkPa,x,KPH,TK,RHOF,RHOG,XLIQ,XVAP,ierr,HERR,errormessagelength);

printf("%f,%f,%f,%ld\n",RHOF,RHOG,TK,ierr);

//   Answers   from   the   Refprop   interface   program,   to   check   results

//   Tsat(101.325)   =   247.08   K

//   rhof   =   13.493.   mol/m^3

//   rhog   =   0.051533   mol/m^3

//   Now   try   a   mixture...say   R410a

nc   =   2;

x[0]   =   0.69762;

x[1]   =   0.30238;

//         Set   HFILES   to   the   mixture   of   R32   and   R125.     Terminate   with   '\0'

strcpy(HFILES,"F:\\refprop7\\fluids\\R32.fld|F:\\refprop7\\fluids\\R125.fld\0");

strcpy(HFMIX,"F:\\Refprop7\\Fluids\\HMX.BNC\0");

strcpy(HRF,"DEF\0");

strcpy(HERR,"Ok\0");

SETUPdll(nc,   HFILES,   HFMIX,   HRF,   ierr,   HERR,

refpropfluidpathlength,refpropcharlength,

lengthofreference,errormessagelength);

printf("%ld\n",ierr);

KPH   =   2;         //   Vapor

PkPa   =   101.325;

SATPdll(PkPa,x,KPH,TK,RHOF,RHOG,XLIQ,XVAP,ierr,HERR,errormessagelength);

printf("%f,%f,%f,%ld\n",RHOF,RHOG,TK,ierr);

//   For   vapor   (KPH   =   2)

//   Tsat(101.325)   =     221.74   K

//   rhof   =     18.594   mol/m^3

//   rhog   =     0.057501   mol/m^3

return   0;

FreeLibrary(RefpropdllInstance);

}

[Last edited by wanglin628 on 2009-4-22 at 20:32]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值