• Main Page
  • Classes
  • Files
  • File List

Phase.h

00001 /* Phase header file
00002  * Generic phase class.  Parent to all phases.
00003  * Revised with added setting methods and general components 7/1/04
00004  * Victor Kress
00005  */
00006 #ifndef PHASE_H
00007 #define PHASE_H
00008 
00009 #include "Chem.h"
00010 #include "PhaseExceptions.h"
00011 
00025 class Phase {
00026  public:
00028   Phase(void);
00030   virtual ~Phase();
00031 
00032   // persistent phase properties //////
00034   char *name; 
00036   char *formula;
00038   virtual int getNcomp(void);
00040   virtual double getMW(void);
00044   virtual int getCompNo(char *lab);
00049   virtual const char *getCompName(int i);
00054   virtual const char *getCompFormula(int i);
00056   virtual int getGenericNcomp(void);
00060   virtual char *getGenericCompFormula(int icomp);
00062   virtual int isOxide();
00063 
00064   // setting methods ////////////////////
00066   virtual void setTk(double ltk);
00068   virtual void setPa(double lpa);
00070   virtual void setMoles(double lm) throw(PhaseError *);
00072   virtual void setMass(double w);
00075   virtual void setComps(double *rawcomps);
00078   virtual void setCompWeights(double *wt);
00081   virtual void setCompWtPct(double *wt);
00084   virtual void setGenericCompWts(double *wt) throw(PhaseError *);
00087   virtual void setElements(double *ele) throw(PhaseError *);
00093   virtual void resetTPbounds(double lowTbound,double hiTbound,
00094                              double lowPbound,double hiPbound);
00095 
00096   // getting methods /////
00098   virtual double getTk();
00100   virtual double getPa();
00102   virtual double getMoles();
00104   virtual double getMass();
00106   virtual double getDensity();
00108   virtual void getComps(double *rawcomps);
00110   virtual void getCompWeights(double *wt);
00112   virtual void getCompWtPct(double *wt);
00114   virtual void getGenericCompWts(double *wt);
00116   virtual void getElements(double *ele);
00119   virtual void getAddElements(double *ele,double mol);
00120 
00121  // Gibbs and derivatives
00123   virtual double getGibbs();
00127   virtual double getMu0(int i);
00130   virtual void getMu0(double *m0);
00135   virtual double getMu(int i);
00138   virtual void getMu(double *m);
00141   virtual double getActivity(int icomp);
00144   virtual void getActivity(double *a);
00147   virtual double getdMudX(int i,int j);
00149   virtual double getdMudP(int i);
00152   virtual void getdGdm(double *dgdm);
00156   virtual void getd2Gdm2(double **d2gdm2);
00160   virtual void getd3Gdm3(double ***d3gdm3);
00163   virtual double getGmix();
00166   virtual void getHessian(double **h);
00167 
00168   // Enthalpy and derivatives
00170   virtual double getEnthalpy();
00172   virtual double getHmix();
00173 
00174   // Entropy and derivatives
00176   virtual double getEntropy();
00179   virtual void getdSdm(double *dsdm);
00183   virtual void getd2Sdm2(double **d2sdm2);
00185   virtual double getSmix();
00186 
00187   // Cp and derivatives
00189   virtual double getCp();
00191   virtual double getdCpdT();
00193   virtual void getdCpdm(double *dcpdm);
00194 
00195   // Volume and derivatives
00197   virtual double getVolume();
00199   virtual void getdVdm(double *dvdm);
00201   virtual void getd2Vdm2(double **d2vdm2);
00203   virtual double getdVdT();
00205   virtual double getdVdP();
00207   virtual double getd2VdT2();
00209   virtual double getd2VdTdP();
00211   virtual double getd2VdP2();
00213   virtual void getd2VdmdT(double *d2vdmdt);
00215   virtual void getd2VdmdP(double *d2vdmdp);
00217   virtual double getVmix();
00218 
00219   // utilities //////
00222   virtual int isStable();
00224   virtual void printAll();
00226   virtual void update();
00227 
00228  protected:
00230   int ncomp;
00232   double *elarray;
00234   Stoich eleStoich;
00236   Stoich oxStoich;
00241   virtual void init();
00243   double tk;
00245   double pa;
00247   double nmoles;
00249   double mw; 
00251   const double R;
00253   const double tr;
00255   const double pr;
00257   double lowT;
00259   double highT;
00261   double lowP;
00263   double highP;
00265   virtual void checkT(double) throw(PhaseError *);
00267   virtual void checkP(double) throw(PhaseError *);
00269   virtual void checkX(double *) throw(PhaseError *);
00271   int updated;
00272 };
00273 
00274 #endif

Generated on Fri Aug 6 2010 13:30:28 for phases by  doxygen 1.7.1