ESyS-Particle
4.0.1
|
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