35 #ifndef GranOO_SPH_Particle_hpp
36 #define GranOO_SPH_Particle_hpp
52 GRANOO_CLASS_DEFAULT_COLOR(.8, .0, .1, 1.);
60 GRANOO_ACCESS(h,
double,
_h);
61 GRANOO_ACCESS(radius ,
double,
_radius );
62 GRANOO_ACCESS(density ,
double,
_density );
63 GRANOO_ACCESS(pressure ,
double,
_pressure );
78 void update_pressure(
const double gazStiffness,
const double gazdensity);
83 virtual std::string
info()
const;
87 virtual std::ostream&
write_ascii (std::ostream& out)
const;
88 virtual std::istream&
read_ascii (std::istream& in);
93 template<
class Archive>
void serialize(Archive&,
const unsigned int);
110 inline std::vector<Interaction>&
122 interaction_.emplace_back(&part, part.get_position() - get_position());
125 template<
class Kernel>
void
134 const double hh = part2->get_h();
144 template<
class Kernel>
void
151 const double pressure2 = part2->get_pressure();
152 const double mass2 = part2->
get_mass();
153 const double rho2 = part2->get_density();
155 const double h = part2->get_h();
157 force() -= ((pressure1 + pressure2) / 2.) * (mass2/rho2) * n;
161 template<
class Kernel>
void
168 const double h = get_h();
169 const double mu = part2->get_viscosity();
171 const double mass = part2->
get_mass();
172 const double rho = part2->get_density();
173 force() += mu*(u2-u1)*(mass/rho)* Kernel::lk_visc(h, vec);
177 template<
class Archive>
180 ar & boost::serialization::base_object<Physic::Node>(*
this);
194 GRANOO_CLASS_DECLARE_TPL(SPH::Particle);
Definition: PropClass.hpp:47
Definition: SetOf.hpp:346
Definition: Vector.hpp:75
Definition: Particle.hpp:49
void update_density()
Definition: Particle.hpp:126
virtual std::ostream & write_ascii(std::ostream &out) const
Definition: Particle.cpp:102
std::vector< Interaction > interaction_
Definition: Particle.hpp:102
double _pressure
Definition: Particle.hpp:100
size_t neighbour_number() const
Definition: Particle.hpp:106
double _h
Definition: Particle.hpp:97
double _viscosity
Definition: Particle.hpp:101
void update_pressure(const double gazStiffness, const double gazdensity)
Definition: Particle.hpp:140
std::vector< Interaction > & get_interaction()
Definition: Particle.hpp:111
void clear_interaction()
Definition: Particle.hpp:116
void apply_pressure_force()
Definition: Particle.hpp:145
double _radius
Definition: Particle.hpp:98
void add_interaction(Particle &part)
Definition: Particle.hpp:121
Particle()
Definition: Particle.cpp:65
virtual ~Particle()
Definition: Particle.cpp:69
virtual void draw()
Definition: Particle.cpp:116
virtual std::string info() const
Definition: Particle.cpp:88
void set_mass(double)
Definition: Particle.cpp:78
friend class boost::serialization::access
Definition: Particle.hpp:92
double _mass
Definition: Particle.hpp:96
double get_bounding_radius() const
Definition: Particle.cpp:83
double get_mass() const
Definition: Particle.cpp:73
void serialize(Archive &, const unsigned int)
Definition: Particle.hpp:179
double _density
Definition: Particle.hpp:99
void apply_viscous_force()
Definition: Particle.hpp:162
virtual std::istream & read_ascii(std::istream &in)
Definition: Particle.cpp:109
Definition: Common.hpp:198