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 namespace esys 00014 { 00015 namespace lsm 00016 { 00017 //=============================================================================== 00018 SimpleParticleData::SimpleParticleData() 00019 : m_id(-1), 00020 m_tag(-1), 00021 m_position(), 00022 m_radius(0.0), 00023 m_mass(0.0) 00024 { 00025 setMass(get3dMass()); 00026 } 00027 00028 SimpleParticleData::SimpleParticleData( 00029 Id id, 00030 Tag tag, 00031 const Vec3 &position, 00032 double radius 00033 ) 00034 : m_id(id), 00035 m_tag(tag), 00036 m_position(position), 00037 m_radius(radius), 00038 m_mass(0.0) 00039 { 00040 setMass(get3dMass()); 00041 } 00042 00043 SimpleParticleData::SimpleParticleData( 00044 const Vec3 &position, 00045 double radius, 00046 Id id, 00047 Tag tag 00048 ) 00049 : m_id(id), 00050 m_tag(tag), 00051 m_position(position), 00052 m_radius(radius), 00053 m_mass(0.0) 00054 { 00055 setMass(get3dMass()); 00056 } 00057 00058 SimpleParticleData::SimpleParticleData(const SimpleParticleData &p) 00059 : m_id(p.m_id), 00060 m_tag(p.m_tag), 00061 m_position(p.m_position), 00062 m_radius(p.m_radius), 00063 m_mass(p.m_mass) 00064 { 00065 } 00066 00067 SimpleParticleData &SimpleParticleData::operator=(const SimpleParticleData &p) 00068 { 00069 m_id = p.m_id; 00070 m_tag = p.m_tag; 00071 m_position = p.m_position; 00072 m_radius = p.m_radius; 00073 m_mass = p.m_mass; 00074 00075 return *this; 00076 } 00077 00078 bool SimpleParticleData::operator==( 00079 const SimpleParticleData &particleData 00080 ) const 00081 { 00082 return 00083 ( 00084 (getId() == particleData.getId()) 00085 && 00086 (getPosition() == particleData.getPosition()) 00087 && 00088 (getRadius() == particleData.getRadius()) 00089 && 00090 (getTag() == particleData.getTag()) 00091 ); 00092 } 00093 00094 SimpleParticleData::Id SimpleParticleData::getId() const 00095 { 00096 return m_id; 00097 } 00098 00099 void SimpleParticleData::setId(const Id &id) 00100 { 00101 m_id = id; 00102 } 00103 00104 void SimpleParticleData::setID(const Id &id) 00105 { 00106 setId(id); 00107 } 00108 00109 SimpleParticleData::Id SimpleParticleData::getID() const 00110 { 00111 return getId(); 00112 } 00113 00114 const Vec3 &SimpleParticleData::getPosition() const 00115 { 00116 return m_position; 00117 } 00118 00119 void SimpleParticleData::setPosition(const Vec3 &pos) 00120 { 00121 m_position = pos; 00122 } 00123 00124 SimpleParticleData::Tag SimpleParticleData::getTag() const 00125 { 00126 return m_tag; 00127 } 00128 00129 void SimpleParticleData::setTag(const SimpleParticleData::Tag &tag) 00130 { 00131 m_tag = tag; 00132 } 00133 00134 double SimpleParticleData::getRadius() const 00135 { 00136 return m_radius; 00137 } 00138 00139 void SimpleParticleData::setRadius(const double &r) 00140 { 00141 m_radius = r; 00142 } 00143 00144 void SimpleParticleData::setMass(double mass) 00145 { 00146 m_mass = mass; 00147 } 00148 00149 double SimpleParticleData::getMass() const 00150 { 00151 return m_mass; 00152 } 00153 00154 double SimpleParticleData::get2dMass() const 00155 { 00156 return m_radius*m_radius; 00157 } 00158 00159 double SimpleParticleData::get3dMass() const 00160 { 00161 return m_radius*m_radius*m_radius; 00162 } 00163 00164 void SimpleParticleData::read(std::istream &istream) 00165 { 00166 istream 00167 >> m_position 00168 >> m_radius 00169 >> m_id 00170 >> m_tag; 00171 } 00172 00173 void SimpleParticleData::write(std::ostream &oStream) const 00174 { 00175 const char delim = ' '; 00176 oStream 00177 << getPosition() << delim 00178 << getRadius() << delim 00179 << getId() << delim 00180 << getTag(); 00181 } 00182 00183 std::istream &operator>>(std::istream &iStream, SimpleParticleData &particleData) 00184 { 00185 particleData.read(iStream); 00186 return iStream; 00187 } 00188 00189 std::ostream &operator<<(std::ostream &oStream, const SimpleParticleData &particleData) 00190 { 00191 particleData.write(oStream); 00192 return oStream; 00193 } 00194 }; 00195 };