00001 #ifndef _MY_FlashData_
00002 #define _MY_FlashData_
00003 #include "globals.h"
00004 #include "vecdouble.h"
00005 class FlashDataArray;
00006
00011 class FlashData
00012 {
00013 friend class FlashDataArray;
00014 private:
00015 protected:
00016 double *m_phaseCompositions;
00017 unsigned n_phases,n_comps;
00018 bool m_Del;
00019 public:
00020 FlashData(unsigned n_phases,unsigned n_comps,double *mem);
00021 FlashData(unsigned n_phases,unsigned n_comps);
00022 FlashData(const FlashData &data);
00023
00024
00025
00026 ~FlashData();
00027 void allocateOwnMemory();
00028 double getMoles(unsigned phase,unsigned comp) const;
00029 void setMoles(unsigned phase,unsigned comp,const double& value);
00030 void zeroEntries();
00031 double getPhaseTotalMoles(unsigned n_phase) const;
00032 double getTotalMoles() const;
00033 unsigned getNPhases() const{return n_phases;}
00034 unsigned getNComponents() const{return n_comps;}
00035 void multiply(VecDouble &B,const VecDouble &X) const;
00036 void getPhasesTotalMoles(VecDouble &phases) const;
00037 void getPhaseConcentrationsAndTotalMoles(Matrix &phasesC, VecDouble &phases) const;
00038 void getMixtureComposition(VecDouble &vComp, double &nT);
00039 void getTotalComponentsMoles(VecDouble &totalComponentsMoles) const;
00040 void getPhasesDensities(VecDouble &vDensities,const VecDouble &componentsMolarMass,const VecDouble &phasesVol);
00041 const double* getData() const;
00042 void setData(double *);
00043 void setData(FlashData &data);
00044
00045 void print(std::ostream &out=std::cout);
00046 void deepCopy(const FlashData &data);
00047 void operator = (const FlashData &data);
00048 };
00049
00050 #endif