15 inline el::base::type::ostream_t& operator<<(el::base::type::ostream_t& os, const vector<T>& vec) {
17 for (
auto iter = vec.cbegin(); iter != vec.cend(); ++iter) {
19 if (iter != vec.cend() - 1) { os <<
" "; }
26 template<
typename precision>
28 :
Particle(dim, precision(1.0), precision(1.0))
31 template<
typename precision>
39 assert(this->
_pos.size() ==
dim);
40 assert(this->
_vel.size() ==
dim);
43 template<
typename precision>
47 template<
typename precision>
53 template<
typename precision>
58 template<
typename precision>
64 template<
typename precision>
69 template<
typename precision>
75 template<
typename precision>
81 template<
typename precision>
87 template<
typename precision>
90 return this->_charge / this->_mass;
93 template<
typename precision>
96 this->_charge = charge;
99 template<
typename precision>
105 template<
typename precision>
109 os <<
"Particle(pos=" << this->_pos <<
", vel=" << this->_vel <<
")";
110 os.unsetf(ios_base::floatfield);
114 template<
typename precision>
115 inline el::base::type::ostream_t& operator<<(el::base::type::ostream_t& os, const shared_ptr<Particle<precision>>& sp_particle)
117 sp_particle->log(os);
ParticleComponent< precision > & pos()
Particle(const size_t dim=3)
ParticleComponent< precision > & vel()
void set_charge(const precision &charge)
const precision charge() const
ParticleComponent< precision > _pos
const precision alpha() const
virtual void log(el::base::type::ostream_t &os) const
vector< precision > ParticleComponent
void set_mass(const precision &mass)
const precision mass() const
ParticleComponent< precision > _vel