00001 #include "vector.h"
00002 #include "matrix.h"
00003
00004 class HomogData
00005 {
00006 public:
00007
00008 HomogData();
00009 HomogData(double *PhaseMatrix);
00010 HomogData(const double iE_m, const double inu_m, const double if_m,
00011 const double iE_i, const double inu_i, const double iHirsch);
00012
00013 ~HomogData(void){};
00014
00015 void Voigt(void);
00016 void Reuss(void);
00017 void Hirsch(void);
00018 void Hansen(void);
00019 void Counto(void);
00020 void MoriTanaka(void);
00021 void MT_mtrx(double *PhaseMatrix, int NumRows, int MatrixRow);
00022 void SelfConsistent(void);
00023 void SCS(double *PhaseMatrix, int NumRows);
00024 void Voigt(double *PhaseMatrix, int NumRows);
00025 void Reuss(double *PhaseMatrix, int NumRows);
00026 void HashinShtrikman(void);
00027 void WalpoleMulti(double *PhaseMatrix, int NumRows);
00028 void KusterToksoz(void);
00029 void HerveZaoui(double *PhaseMatrix, int NumRows);
00030
00031 double E_m;
00032 double nu_m;
00033 double f_m;
00034 double k_m;
00035 double mu_m;
00036
00037 double E_i;
00038 double nu_i;
00039 double f_i;
00040 double k_i;
00041 double mu_i;
00042
00043 double E_hmg;
00044 double nu_hmg;
00045 double k_hmg, k_hmg_2;
00046 double mu_hmg, mu_hmg_2;
00047
00048 double E_hmg_2;
00049 double nu_hmg_2;
00050
00051 double H_chi;
00052
00053 double temp1, temp2, temp3, temp4;
00054
00055 private:
00056 double alpha_m;
00057 double beta_m;
00058
00059 void ENuToKMu( const double oE, const double onu, double &ok, double &omu );
00060 void KMuToENu( const double ok, const double omu, double &oE, double &onu );
00061 void Swap(double &A, double &B);
00062 double Lambda(double *PhaseMatrixKMu, int NumRows, double mu);
00063 double Gamma(double *PhaseMatrixKMu, int NumRows, double k);
00064 double Zeta(double k, double mu);
00065 void fillJ(matrix &J, double r, const vector &mu, const vector &k, int phase);
00066 void fillL(matrix &L, double r, const vector &mu, const vector &k, int phase);
00067 };
00068