• Main Page
  • Classes
  • Files
  • File List

Rock.h

00001 /*$Id: Rock.h,v 1.23 2006/01/21 22:24:07 ghiorso Exp $*/
00002 
00003 #ifndef ROCK_H
00004 #define ROCK_H
00005 #include "silmin.h"
00006 
00014 class Rock {
00015  public:
00017   Rock(void);
00019   virtual ~Rock(void);
00020 
00021   // mode variables //////////////////////////////
00023   const int fo2_none;
00025   const int fo2_hm;
00027   const int fo2_nno;
00029   const int fo2_qfm;
00031   const int fo2_iw;
00032 
00033   // setting methods //////////////////////////////////
00035   virtual void setTk(double ltk);
00037   virtual void setPa(double lpa);
00039   virtual void setlogfo2(int mode,double delta);
00041   virtual void supressPhase(int iphase);
00043   virtual void enablePhase(int iphase);
00045   virtual void setIsenthalpic(int i);
00047   virtual void setIsentropic(int i);
00049   virtual void setIsochoric(int i);
00051   virtual void setBulkCompM(double *bc);
00053   virtual void setBulkCompW(double *bc);
00055   virtual void fractionateSolids(double scale);
00057   virtual void setVolume(double v);
00059   virtual void setEnthalpy(double h);
00061   virtual void setEntropy(double s);
00062 
00063   // getting methods //////////////////////////////////
00065   virtual double getTk();
00067   virtual double getPa();
00069   virtual int getNcomp();
00071   virtual int getNLiqComp();
00073   virtual int getNSolPhases();
00075   virtual const char *getSolPhaseName(int iphase);
00080   virtual const char *getSolPhaseFormula(int iphase, int instance);
00084   virtual const char *getSolPhaseFormula(int iphase);
00086   virtual int getNSolComp(int i);
00091   virtual const char *getSolPhaseCompName(int iphase,int icomp);
00096   virtual const char *getSolPhaseCompFormula(int iphase,int icomp);
00098   virtual const char *getCompName(int i);
00100   virtual const char *getLiqCompName(int i);
00102   virtual void getLiqComp(double *lx);
00104   virtual void getLiqCompWt(double *lx);
00106   virtual void getLiqMu(double *lmu);
00108   virtual void getLiqActivity(double *lact);
00110   int getNSatSolid();
00112   void getSatSolidList(int *ilist);
00118   virtual int getSolComp(int iphase,int instance,double *sx);
00123   virtual int getSolComp(int iphase,double *sx);
00129   virtual int getSolCompWt(int iphase,int instance,double *sx);
00134   virtual int getSolCompWt(int iphase,double *sx);
00140   virtual int getSolMu(int iphase,int instance,double *smu);
00145   virtual int getSolMu(int iphase,double *smu);
00152   virtual double getAffinity(int iphase, double *x);
00157   virtual int getSolVbar(int iphase,int instance,double *svbar);
00161   virtual int getSolVbar(int iphase,double *svbar);
00163   virtual double getlogfo2();
00165   virtual double getlogfo2(int mode);
00167   virtual void getBulkCompM(double *bc);
00169   virtual void getBulkCompW(double *bc);
00171   virtual double getLiquidMass();
00173   virtual double getSolidMass();
00178   virtual double getSolPhaseMass(int iphase,int instance);
00182   virtual double getSolPhaseMass(int iphase);
00184   virtual double getVolume();
00186   virtual double getSolidGibbsFreeEnergy();
00188   virtual double getSolidEnthalpy();
00190   virtual double getSolidEntropy();
00192   virtual double getSolidHeatCapacity();
00194   virtual double getSolidVolume();
00199   virtual double getSolidGibbsFreeEnergy(int iphase, int instance);
00203   virtual double getSolidGibbsFreeEnergy(int iphase);
00208   virtual double getSolidEnthalpy(int iphase, int instance);
00212   virtual double getSolidEnthalpy(int iphase);
00217   virtual double getSolidEntropy(int iphase, int instance);
00221   virtual double getSolidEntropy(int iphase);
00226   virtual double getSolidHeatCapacity(int iphase, int instance);
00230   virtual double getSolidHeatCapacity(int iphase);
00235   virtual double getSolidVolume(int iphase, int instance);
00239   virtual double getSolidVolume(int iphase);
00244   virtual double getSoliddVdT(int iphase, int instance);
00248   virtual double getSoliddVdT(int iphase);
00253   virtual double getSoliddVdP(int iphase, int instance);
00257   virtual double getSoliddVdP(int iphase);
00259   virtual double getDeltaOxygen();
00261   virtual double getOxygenGibbsFreeEnergy();
00263   virtual double getOxygenEnthalpy();
00265   virtual double getOxygenEntropy();
00267   virtual double getOxygenHeatCapacity();
00269   virtual double getOxygenVolume();
00271   virtual double getLiquidGibbsFreeEnergy();
00273   virtual double getLiquidEnthalpy();
00275   virtual double getLiquidEntropy();
00277   virtual double getLiquidHeatCapacity();
00279   virtual double getLiquidVolume();
00281   virtual double getLiquiddVdT();
00283   virtual double getLiquiddVdP();
00285   virtual double getLiquidViscosity();
00286 
00287   // utility methods ////////////////////////////////////////////////
00289   virtual int getPhaseNo(const char *lab);
00291   virtual int isSingleComponent(int iphase);
00293   virtual int getNumberCoexistPhase(int iphase);
00295   virtual int findRockLiquidus();
00297   virtual int equilibrateRock();
00298 
00299  protected:
00301   virtual int init(void);
00303   int nphase;
00305   int *phasedex;
00307   int stateinit;
00309   virtual int initializeState();
00311   virtual void equilibrateError(int err);
00313   virtual void findLiquidusError(int err);
00315   virtual void liquify();
00317   virtual void printSilminStateStructure(SilminState *pt);
00319   SilminState *silminState;
00321   static int staticinit;
00323   static int threadCount;
00325   static const int maxThreads = 25;
00328   static int *threadPool;
00330   int curThread;
00332   static int mutexLock;
00334   ThermoData *liquidCur;
00336   ThermoData *solidsCur;
00338   ThermoData *oxygenCur;
00339  private:
00341   double *mSol,*mLiq,*r,*x;
00342 };
00343 #endif
00344 
00345 
00346 
00347 
00348 
00349 

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