14 #ifndef MODEL_DAMPING_HPP
15 #define MODEL_DAMPING_HPP
17 #include "Model/Damping.h"
43 m_force=
Vec3(0.0,0.0,0.0);
56 m_vref=param.getVRef();
57 m_visc=param.getVisc();
58 m_dt=param.getTimeStep();
59 m_maxiter=param.getMaxIter();
60 m_force=
Vec3(0.0,0.0,0.0);
73 m_vref=param->getVRef();
74 m_visc=param->getVisc();
75 m_dt=param->getTimeStep();
76 m_maxiter=param->getMaxIter();
77 m_force=
Vec3(0.0,0.0,0.0);
102 Vec3 v=m_p->getVel();
104 Vec3 frc=m_p->getForce();
106 double s=m_p->getInvMass();
107 double mass=m_p->getMass();
110 while((error*error>s_limit2) & (count<m_maxiter)){
113 v_rel=v-m_vref+s*m_dt*(frc-v_rel*m_visc*mass);
114 error=(v_rel-v_old).norm2();
116 if(count>=m_maxiter){
118 v_rel=
Vec3(0.0,0.0,0.0);
120 m_force=-1.0*m_visc*v_rel*mass;
121 m_p->applyForce(m_force,m_p->getPos());
123 m_E_diss=m_visc*v_rel*v*m_dt;
136 if(name==
"dissipated_energy"){
140 cerr <<
"ERROR - invalid name for interaction scalar access function" << endl;
157 cerr <<
"ERROR - invalid name for interaction scalar access function" << endl;
177 cerr <<
"ERROR - invalid name for interaction vector access function" << endl;
207 int tag1=m_p->getTag();
209 return ((tag1 & mask)==(tag & mask));
220 res.push_back(m_p->getID());