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 ESYS_LSMSIMPLEPARTICLEDATA_H 00014 #define ESYS_LSMSIMPLEPARTICLEDATA_H 00015 00016 #include "Foundation/vec3.h" 00017 00018 #include <iostream> 00019 00020 namespace esys 00021 { 00022 namespace lsm 00023 { 00027 class SimpleParticleData 00028 { 00029 public: 00030 typedef int Id; 00031 typedef int Tag; 00032 00033 inline SimpleParticleData(); 00034 00035 inline SimpleParticleData(Id id, Tag tag, const Vec3 &position, double radius); 00036 00037 inline SimpleParticleData(const Vec3 &position, double radius, Id id, Tag tag); 00038 00039 inline SimpleParticleData(const SimpleParticleData &p); 00040 00041 inline SimpleParticleData &operator=(const SimpleParticleData &p); 00042 00043 inline bool operator==(const SimpleParticleData &particleData) const; 00044 00045 inline Id getId() const; 00046 00047 inline void setId(const Id &id); 00048 00049 inline Id getID() const; 00050 00051 inline void setID(const Id &id); 00052 00053 inline const Vec3 &getPosition() const; 00054 00055 inline void setPosition(const Vec3 &pos); 00056 00057 inline Tag getTag() const; 00058 00059 inline void setTag(const Tag &tag); 00060 00061 inline double getRadius() const; 00062 00063 inline void setRadius(const double &r); 00064 00065 inline void setMass(double mass); 00066 00067 inline double getMass() const; 00068 00069 inline double get2dMass() const; 00070 00071 inline double get3dMass() const; 00072 00073 inline void read(std::istream &istream); 00074 00075 inline void write(std::ostream &write) const; 00076 00077 private: 00078 Id m_id; 00079 Tag m_tag; 00080 Vec3 m_position; 00081 double m_radius; 00082 double m_mass; 00083 }; 00084 inline std::istream &operator>>(std::istream &iStream, SimpleParticleData &particleData); 00085 inline std::ostream &operator<<(std::ostream &oStream, const SimpleParticleData &particleData); 00086 00087 }; 00088 }; 00089 00090 #include "Geometry/SimpleParticleData.hpp" 00091 00092 #endif