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