00001 /* SulfLiq header file 00002 * $Id: SulfLiq.h,v 1.24 2007/11/21 01:48:30 kress Exp $ 00003 * by Victor Kress 00004 */ 00005 00006 #ifndef SULFLIQ_H 00007 #define SULFLIQ_H 00008 00009 00010 #include "Phase.h" 00011 #include "SpecSolNID.h" 00012 #include "VinetEOS.h" 00013 00021 struct SLSSData { 00023 char *name; 00025 char *formula; 00027 double mw; 00029 double g0; 00031 double s; 00033 double cp; 00035 double ge1300; 00037 double v1300; 00039 double dvdt; 00041 double dvdp; 00043 double d2vdpdt; 00044 }; 00045 00053 class SLSSPhase: public Phase { 00054 public: 00056 SLSSPhase(SLSSData *ldat); 00058 virtual double getGibbs(); 00060 virtual double getEnthalpy(); 00062 virtual double getEntropy(); 00064 virtual double getCp(); 00066 virtual double getdCpdT(); 00068 virtual double getVolume(); 00070 virtual double getdVdT(); 00072 virtual double getd2VdT2(); 00074 virtual double getdVdP(); 00076 virtual double getd2VdTdP(); 00078 virtual double getd2VdP2(); 00080 SLSSData *dat; 00082 const double STR; 00083 protected: 00085 VinetEOS Vinet; 00087 virtual void update(); 00088 }; 00089 00098 class SulfLiq: public SpecSolNID { 00099 public: 00100 // public variables //////////////////////////////// 00102 const int NCOMP; 00104 const int NSPEC; 00106 const int ODEX; 00108 const int SDEX; 00110 const int FDEX; 00112 const int NDEX; 00114 const int CDEX; 00116 const int WUDEX; 00118 const int HMDEX; 00120 const int BUDEX; 00122 const int TTDEX; 00124 const int MIDEX; 00126 const int DJDEX; 00128 const int OPDEX; 00130 const int NSDEX; 00132 const int CVDEX; 00134 const int TEDEX; 00136 const double STR; 00137 // creation/distruction //////////////////////////////// 00139 SulfLiq(); 00141 virtual ~SulfLiq(); 00142 00143 // setting methods //////////////////////////////////// 00145 virtual void setTk(double ltk); 00147 virtual void setPa(double lpq); 00155 virtual int setFugacity(double logfo2,double logfs2,int verbose); 00157 virtual int setFugacity(double logfo2,double logfs2); 00159 virtual int setlogfo2(double logfo2); 00161 virtual int setlogfs2(double logfs2); 00162 00163 // getting methods /////////////////////////////////// 00165 double getVolume(); 00167 double getdVdT(); 00169 double getlogfo2(); 00171 double getlogfs2(); 00172 00173 protected: 00175 virtual void init(); 00177 Phase *po2; 00179 Phase *ps2; 00181 static double allstoich[15][5]; 00182 }; 00183 00184 #endif 00185 00186 00187 00188 00189 00190 00191 00192 00193 00194 00195 00196 00197 00198 00199