Converted REFPROP to use REDXdll to get reducing state (thanks to email from Eric Lemmon)

Signed-off-by: Ian Bell <ian.h.bell@gmail.com>
This commit is contained in:
Ian Bell
2014-12-10 00:54:03 -05:00
parent 19353c764c
commit 1fc2fda58e
2 changed files with 15 additions and 16 deletions

View File

@@ -186,6 +186,7 @@ static char default_reference_state[] = "DEF";
QMASSdll_POINTER QMASSdll;
QMOLEdll_POINTER QMOLEdll;
RESIDUALdll_POINTER RESIDUALdll;
REDXdll_POINTER REDXdll;
RMIX2dll_POINTER RMIX2dll;
SATDdll_POINTER SATDdll;
SATEdll_POINTER SATEdll;
@@ -316,6 +317,7 @@ double setFunctionPointers()
PUREFLDdll = (PUREFLDdll_POINTER) getFunctionPointer(PUREFLDdll_NAME);
RESIDUALdll = (RESIDUALdll_POINTER) getFunctionPointer(RESIDUALdll_NAME);
RMIX2dll = (RMIX2dll_POINTER) getFunctionPointer(RMIX2dll_NAME);
REDXdll = (REDXdll_POINTER) getFunctionPointer(REDXdll_NAME);
QMASSdll = (QMASSdll_POINTER) getFunctionPointer(QMASSdll_NAME);
QMOLEdll = (QMOLEdll_POINTER) getFunctionPointer(QMOLEdll_NAME);
SATDdll = (SATDdll_POINTER) getFunctionPointer(SATDdll_NAME);
@@ -718,24 +720,14 @@ long double REFPROPMixtureBackend::calc_rhomolar_critical(){
return static_cast<long double>(dcrit_mol_L*1000);
};
long double REFPROPMixtureBackend::calc_T_reducing(){
if (mole_fractions.size() != 1){throw ValueError("calc_T_reducing only valid for one component");};
long ierr = 0, i, i1 = 0, i2 = 1, i3 = 0;
char herr[255], h[255], input[] = "tz";
double Tz;
std::vector<double> z(255);
PASSCMNdll(input, &i1, &i2, &i3, h,&i,&Tz,&(z[0]),&ierr,herr,255,255,255);
if (ierr > 0) { throw ValueError(format("%s",herr).c_str()); } //else if (ierr < 0) {set_warning(format("%s",herr).c_str());}
return static_cast<long double>(Tz);
double rhored_mol_L = 0, Tr = 0;
REDXdll(&(mole_fractions[0]), &Tr, &rhored_mol_L);
return static_cast<long double>(Tr);
};
long double REFPROPMixtureBackend::calc_rhomolar_reducing(){
if (mole_fractions.size() != 1){throw ValueError("calc_rhomolar_reducing only valid for one component");};
long ierr = 0, i = 0, i1 = 0, i2 = 1, i3 = 0;
char herr[255] = "", h[255] = "", input[255] = "rhoz";
double rhored_mol_L;
std::vector<double> z(20);
PASSCMNdll(input, &i1, &i2, &i3, h, &i, &rhored_mol_L,&(z[0]),&ierr,herr,255,255,255);
if (ierr > 0) { throw ValueError(format("%s",herr).c_str()); } //else if (ierr < 0) {set_warning(format("%s",herr).c_str());}
return static_cast<long double>(rhored_mol_L*1000);
double rhored_mol_L = 0, Tr = 0;
REDXdll(&(mole_fractions[0]), &Tr, &rhored_mol_L);
return static_cast<long double>(rhored_mol_L*1000);
};
long double REFPROPMixtureBackend::calc_Ttriple(){
if (mole_fractions.size() != 1){throw ValueError("calc_Ttriple cannot be evaluated for mixtures");}

View File

@@ -92,6 +92,7 @@
# define QMASSdll QMASSdll
# define QMOLEdll QMOLEdll
# define RESIDUALdll RESIDUALdll
# define REDXdll REDXdll
# define RMIX2dll RMIX2dll
# define SATDdll SATDdll
# define SATEdll SATEdll
@@ -213,6 +214,7 @@
# define QMOLEdll qmoledll_
# define RESIDUALdll residualdll_
# define RMIX2dll rmix2dll_
# define REDXdll redxdll_
# define SATDdll satddll_
# define SATEdll satedll_
# define SATHdll sathdll_
@@ -323,6 +325,7 @@
# define QMASSdll qmassdll_
# define QMOLEdll qmoledll_
# define RESIDUALdll residualdll_
# define REDXdll redxdll_
# define RMIX2dll rmix2dll_
# define SATDdll satddll_
# define SATEdll satedll_
@@ -432,6 +435,7 @@
# define QMASSdll qmassdll
# define QMOLEdll qmoledll
# define RESIDUALdll residualdll
# define REDXdll redxdll
# define RMIX2dll rmix2dll
# define SATDdll satddll
# define SATEdll satedll
@@ -553,6 +557,7 @@
#define QMASSdll_NAME FUNCTION_NAME(QMASSdll)
#define QMOLEdll_NAME FUNCTION_NAME(QMOLEdll)
#define RESIDUALdll_NAME FUNCTION_NAME(RESIDUALdll)
#define REDXdll_NAME FUNCTION_NAME(REDXdll)
#define RMIX2dll_NAME FUNCTION_NAME(RMIX2dll)
#define SATDdll_NAME FUNCTION_NAME(SATDdll)
#define SATEdll_NAME FUNCTION_NAME(SATEdll)
@@ -671,6 +676,7 @@ extern "C" {
typedef void (CALLCONV QMASSdll_TYPE)(double *,double *,double *,double *,double *,double *,double *,double *,long *,char*,long );
typedef void (CALLCONV QMOLEdll_TYPE)(double *,double *,double *,double *,double *,double *,double *,double *,long *,char*,long );
typedef void (CALLCONV RESIDUALdll_TYPE)(double *,double *,double *,double *,double *,double *,double *,double *,double *,double *,double *);
typedef void (CALLCONV REDXdll_TYPE)(double *,double *,double *);
typedef void (CALLCONV RMIX2dll_TYPE)(double *,double *);
typedef void (CALLCONV SATDdll_TYPE)(double *,double *,long *,long *,double *,double *,double *,double *,double *,double *,long *,char*,long );
typedef void (CALLCONV SATEdll_TYPE)(double *,double *,long *,long *,long *,double *,double *,double *,long *,double *,double *,double *,long *,char*,long );
@@ -884,6 +890,7 @@ extern "C" {
typedef QMASSdll_TYPE * QMASSdll_POINTER;
typedef QMOLEdll_TYPE * QMOLEdll_POINTER;
typedef RESIDUALdll_TYPE * RESIDUALdll_POINTER;
typedef REDXdll_TYPE * REDXdll_POINTER;
typedef RMIX2dll_TYPE * RMIX2dll_POINTER;
typedef SATDdll_TYPE * SATDdll_POINTER;
typedef SATEdll_TYPE * SATEdll_POINTER;