mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-02-12 06:44:59 -05:00
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:
@@ -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");}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user