ESyS-Particle  4.0.1
BasicParticle.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 __BASICPARTICLE_H
00014 #define __BASICPARTICLE_H
00015 
00016 // -- project includes --
00017 #include "Foundation/vec3.h"
00018 
00019 // --- STL includes ---
00020 #include <map>
00021 #include <utility>
00022 
00023 using std::map;
00024 using std::pair;
00025 using std::make_pair;
00026 
00027 namespace esys
00028 {
00029   namespace lsm
00030   {
00031     class SimpleParticleData;
00032   }
00033 }
00034 
00044 class CBasicParticle
00045 {
00046 protected:
00047   Vec3 m_pos; 
00048   double m_rad; 
00049   int m_global_id;
00050   int m_tag;
00051 
00052 public:
00053   static const CBasicParticle INVALID;
00054 
00055   CBasicParticle();
00056   CBasicParticle(const Vec3 &pos, double radius, int id=-1, int tag=-1);
00057   CBasicParticle(const esys::lsm::SimpleParticleData &data);
00058 
00059   inline virtual ~CBasicParticle(){}
00060 
00061   inline Vec3 & getPPos() {return m_pos;}
00062   inline Vec3 getPos() const {return m_pos;}
00063   inline void setPos(const Vec3 &pos) {m_pos = pos;}
00064   inline double getRad() const {return m_rad;}
00065   inline int getID() const {return m_global_id;}
00066   inline void setID(int id) {m_global_id = id;}
00067 
00068   inline void moveBy(Vec3 v){m_pos+=v;} 
00069   inline void moveTo(Vec3 v){m_pos=v;} 
00070   inline void setRad(double r){m_rad=r;}
00071 
00073   inline void setTag(int t){m_tag=t;}
00074   inline int getTag() const {return m_tag;}
00075   inline bool isValid() const {return (getID() >= 0);}
00076 };
00077 ostream& operator<<(ostream&,const CBasicParticle&);
00078 
00079 #endif //__BASICPARTICLE_H