00001 #ifndef MELILITE_H
00002 #define MELILITE_H
00003
00004 #include "MeltsSolution.h"
00005 #include "BermanPhase.h"
00006
00019 class Melilite: public MeltsSolution {
00020 public:
00022 Melilite();
00024 virtual ~Melilite();
00026 const int NCOMP;
00028 const int AKERMANITE ;
00030 const int GEHLENITE;
00032 const int FEAKERMANITE;
00034 const int NAMELILITE;
00036 virtual double getGibbs();
00038 virtual double getMu(int i);
00040 virtual double getEnthalpy();
00042 virtual double getEntropy();
00044 virtual double getCp();
00046 virtual double getdCpdT();
00048 virtual double getVolume();
00050 virtual double getdVdT();
00052 virtual double getdVdP();
00054 virtual double getd2VdT2();
00056 virtual double getd2VdTdP();
00058 virtual double getd2VdP2();
00059 protected:
00061 virtual void init();
00063 static BermanData ssdata[];
00064 private:
00066 double lastTk;
00068 double lastPb;
00070 void updateDisorder(double tk,double pb);
00072 double gDisGh;
00074 double hDisGh;
00076 double sDisGh;
00078 double cpDisGh;
00080 double dcpdtDisGh;
00082 double vDisGh;
00084 double dvdtDisGh;
00086 double dvdpDisGh;
00088 double d2vdt2DisGh;
00090 double d2vdtdpDisGh;
00092 double d2vdp2DisGh;
00093 };
00094
00096
00098
00101 extern int testMel(int mask, double t, double p,int na,int nr,char **names,
00102 char **formulas,double *r,double *m);
00103
00106 extern void conMel(int inpMask,int outMask,double t,double p,
00107 double *e,double *m,double *r,double *x,double **dm,
00108 double ***d2m,double **dr,double ****d3m);
00109
00112 extern void actMel(int mask,double t,double p,double *x,
00113 double *a,double *mu,double **dr);
00114
00117 extern void gmixMel(int mask,double t,double p,double *x,
00118 double *gmix,double *dr,double **dr2,
00119 double ***dr3);
00120
00123 extern void hmixMel(int mask,double t,double p,double *x,
00124 double *hmix);
00127 extern void smixMel(int mask,double t,double p,double *x,
00128 double *smix,double *dr,double **dr2);
00129
00132 extern void cpmixMel(int mask,double t,double p,double *x,
00133 double *cpmix,double *dt,double *dr);
00134
00137 extern void vmixMel(int mask,double t,double p,double *x,
00138 double *vmix,double *dr,double **dr2,
00139 double *dt,double *dp,double *dt2,
00140 double *dtdp,double *dp2,double *drdt,
00141 double *drdp);
00142
00143 #endif
00144