ESyS-Particle  4.0.1
ThermParticle.h
00001 
00002 //                                                         //
00003 // Copyright (c) 2003-2011 by The University of Queensland //
00004 // Earth Systems Science Computational Centre (ESSCC)      //
00005 // http://www.uq.edu.au/esscc                              //
00006 //                                                         //
00007 // Primary Business: Brisbane, Queensland, Australia       //
00008 // Licensed under the Open Software License version 3.0    //
00009 // http://www.opensource.org/licenses/osl-3.0.php          //
00010 //                                                         //
00012 
00013 #ifndef __THERMPARTICLE_H
00014 #define __THERMPARTICLE_H
00015 
00016 // -- project includes --
00017 #include "Foundation/vec3.h"
00018 
00019 // --- STL includes ---
00020 #include <map>
00021 #include <utility>
00022 
00023 
00024 using std::map;
00025 using std::pair;
00026 using std::make_pair;
00027 
00031 class CThermParticle
00032 {
00033 protected:
00034 
00035   double m_temperature ;
00036   double m_temperature_ini ;
00037   double m_Cp    ;
00038 //  double m_density ;//   ???
00039   double m_heat_frict ;
00040   double m_heat_trans ;
00041   double m_therm_expansion0 ;
00042   double m_therm_expansion1 ;
00043   double m_therm_expansion2 ;
00044   double m_rad_ini ;    
00045 
00046 public:
00047 //  static const CBasicParticle INVALID;
00048 
00049   CThermParticle();
00050   CThermParticle(double rad_ini);
00051   CThermParticle(double temperature, 
00052                  double m_temperature_ini,
00053                  double Cp, 
00054                  double heat_frict, 
00055                  double heat_trans,
00056                  double therm_expansion0, 
00057                  double therm_expansion1, 
00058                  double therm_expansion2,
00059                  double rad_ini);
00060 //  CThermParticle(const esys::lsm::SimpleParticleData &data);
00061 
00062   virtual ~CThermParticle(){};
00063 /*
00064   inline Vec3 & getPPos() {return m_pos;}
00065   inline Vec3 getPos() const {return m_pos;}
00066   inline double getRad() const {return m_rad;}
00067   inline int getID() const {return m_global_id;}
00068 
00069   inline void moveBy(Vec3 v){m_pos+=v;} //!< move relative to current position
00070   inline void moveTo(Vec3 v){m_pos=v;} //!< move absolute
00071   inline void setRad(double r){m_rad=r;}
00072 
00074   inline void setTag(int t){m_tag=t;}
00075   inline int getTag() const {return m_tag;}
00076   inline bool isValid() const {return (getID() >= 0);}
00077 };
00078 */
00079 
00080   inline void setTemperature(double t){m_temperature=t;}
00081   inline double getTemperature() const {return m_temperature;}
00082 
00083   inline void setEquilibTemperature(double t){m_temperature_ini=t;}
00084   inline double getEquilibTemperature() const {return m_temperature_ini;}
00085 
00086   inline void setEquilibRadius(double r){m_rad_ini=r;}
00087   inline double getEquilibRadius() const {return m_rad_ini;}
00088 
00089 //  inline void setCp(double t){m_Cp = t;}
00090   inline double getCp() const {return m_Cp;}
00091   inline void setCp(double cp) {m_Cp = cp;}
00092 
00093   inline double getThermExpansion0() const {return m_therm_expansion0 ;}
00094   inline void setThermExpansion0(double te0) {m_therm_expansion0 = te0;}
00095 
00096   inline double getThermExpansion1() const {return m_therm_expansion1 ;}
00097   inline void setThermExpansion1(double te1) {m_therm_expansion1 = te1;}
00098 
00099   inline double getThermExpansion2() const {return m_therm_expansion2 ;}
00100   inline void setThermExpansion2(double te2) {m_therm_expansion2 = te2;}
00101 //  void integrate_therm(double) ;
00102 //  void zeroHeat() ;
00103 //  void applyHeatTrans(const double) ;
00104   friend ostream& operator<<(ostream& ost,const CThermParticle& p);
00105 };
00106 
00107 ostream& operator<<(ostream&,const CThermParticle&);
00108 
00109 #endif //__THERMPARTICLE_H