• Main Page
  • Classes
  • Files
  • File List

Solution.h

00001 /* Solution class header file
00002  * Generic class to deal with phases which are solutions
00003  * Victor Kress
00004  */
00005 
00006 #ifndef SOLUTION_H
00007 #define SOLUTION_H
00008 
00009 #include "Phase.h"
00010 
00020 class Solution: public Phase {
00021  public:
00023   Solution();
00025   virtual ~Solution();
00026 
00027   // persistent phase properties //////
00029   int getNcomp(void);
00031   virtual double getMW(int i);
00033   virtual double getMW();   // overrides Phase
00037   virtual int getCompNo(char *lab);
00040   virtual const char *getCompName(int i);
00043   virtual const char *getCompFormula(int i);
00044 
00045   // setting methods ///////////////////
00047   virtual void setTk(double ltk); //overrides Phase
00049   virtual void setPa(double lpa); //overrides Phase
00052   virtual void setMoles(double m)  throw(PhaseError *);
00054   virtual void setMass(double w);
00056   virtual void setComps(double *rawcomps);
00059   virtual void setCompWeights(double *wt);
00062   virtual void setCompWtPct(double *wt);
00065   virtual void setElements(double *ele) throw(PhaseError *);
00071   virtual void resetTPbounds(double lowTbound,double hiTbound,
00072                              double lowPbound,double hiPbound);
00073 
00074   // getting methods //////////////////
00076   double getMoles();
00078   double getMass();
00080   virtual void getComps(double *rawcomps);
00082   virtual void getCompWeights(double *wt);
00084   virtual void getCompWtPct(double *wt);
00086   virtual void getElements(double *ele);
00090   virtual void getAddElements(double *ele,double mol);
00091 
00093   virtual double getGibbs();     // overrides Phase
00095   virtual double getMu0(int icomp);
00098   virtual void getMu0(double *m0);
00100   virtual double getMu(int i);
00103   virtual void getMu(double *m);
00105   virtual double getActivity(int icomp);
00108   virtual void getActivity(double *a);
00110   virtual double getdMudX(int i,int j);
00112   virtual double getdMudP(int i);
00115   virtual void getdGdm(double *dgdm);
00119   virtual void getd2Gdm2(double **d2gdm2);
00123   virtual void getd3Gdm3(double ***d3gdm3);
00126   virtual void getHessian(double **h);
00130   virtual double** getHessian();
00132   virtual double getGmix();
00133 
00134   // Enthalpy and derivatives //////////////
00136   virtual double getEnthalpy();
00137 
00138   // Entropy and derivatives ///////////////
00140   virtual double getEntropy();
00144   virtual void getdSdm(double *dsdm);
00148   virtual void getd2Sdm2(double **d2sdm2);
00150   virtual double getSmix();
00151 
00152   // Cp and derivatives ///////////////////
00154   virtual double getCp();
00156   virtual double getdCpdT();
00158   virtual void getdCpdm(double *dcpdm);
00159 
00160   // Volume and derivatives ///////////////
00162   virtual double getVolume();
00164   virtual void getdVdm(double *dvdm);
00166   virtual void getd2Vdm2(double **d2vdm2);
00168   virtual double getdVdT();
00170   virtual double getdVdP();
00172   virtual double getd2VdT2();
00174   virtual double getd2VdTdP();
00176   virtual double getd2VdP2();
00178   virtual void getd2VdmdT(double *d2vdmdt);
00180   virtual void getd2VdmdP(double *d2vdmdp);
00181 
00182   // utility functions ///////////
00185   virtual int isStable();
00187   virtual void testHessian(double step);
00189   virtual void update();
00191   virtual void printAll();
00192 
00193  protected:
00195   int nspec;
00197   int lcomp;
00199   int lspec;
00201   int *indx;
00203   double *comps; 
00205   Phase **ss;
00207   double **hessian;
00209   double **A,**v,*w;
00211   virtual void index();
00215   virtual void init();
00218   virtual int initElOxArrays();
00219 };
00220 
00221 #endif
00222 
00223 
00224 
00225 
00226 

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