47 console.
XDebug() <<
"calculating " << m_bonded_interactions.size() <<
" bonded wall forces\n" ;
48 console.
XDebug() <<
"calculating " << m_elastic_interactions.size() <<
" elastic wall forces\n" ;
52 it!=m_bonded_interactions.end();
57 it!=m_elastic_interactions.end();
73 console.
XDebug() <<
"CBWallInteractionGroup<T>::applyForce: F = " << F <<
"\n";
79 it!=m_bonded_interactions.end();
82 K+=it->getStiffness();
86 it!=m_elastic_interactions.end();
89 K+=it->getStiffness();
93 double K_global=this->m_comm->sum_all(K);
98 console.
XDebug() <<
"CBWallInteractionGroup<T>::applyForce: unitF = " << O_f <<
"\n";
105 iter!=m_bonded_interactions.end();
110 F_local+=(f_i*O_f)*O_f;
116 iter!=m_elastic_interactions.end();
121 F_local+=(f_i*O_f)*O_f;
126 double fgx=this->m_comm->sum_all(F_local.
X());
127 double fgy=this->m_comm->sum_all(F_local.
Y());
128 double fgz=this->m_comm->sum_all(F_local.
Z());
132 d=((F+F_global)*O_f)/K_global;
134 <<
"CBWallInteractionGroup<T>::applyForce: iteration " << it <<
", d = " << fabs(d) <<
"\n";
138 <<
"CBWallInteractionGroup<T>::applyForce: moving wall by " << d*O_f <<
"\n";
139 this->m_wall->moveBy(d*O_f);
141 }
while((it<10)&&(fabs(d)>10e-6));
143 <<
"CBWallInteractionGroup<T>::applyForce: d = " << fabs(d)
144 <<
", num iterations = " << it <<
"\n";
160 m_bonded_interactions.erase(m_bonded_interactions.begin(),m_bonded_interactions.end());
161 this->m_inner_count=0;
168 if(((*iter)->getTag() & m_mask )== (m_tag & m_mask)){
169 bool iflag=PPA->
isInInner((*iter)->getPos());
171 this->m_inner_count+=(iflag ? 1 : 0);
176 m_elastic_interactions.erase(m_elastic_interactions.begin(),m_elastic_interactions.end());
181 if(((*iter)->getTag() & m_mask )!=(m_tag & m_mask )){
182 bool iflag=PPA->
isInInner((*iter)->getPos());
184 this->m_inner_count+=(iflag ? 1 : 0);
187 console.
XDebug() <<
"end CBWallInteractionGroup::Update()\n";
191 ostream& operator<<(ostream& ost,const CBWallInteractionGroup<T>& IG)
193 ost <<
"CBWallInteractionGroup" << endl << flush;
194 ost << *(IG.m_wall) << endl << flush;
CWall * m_wall
the wall
Definition: WallIG.h:33
virtual void Update(ParallelParticleArray< T > *)
Definition: BWallInteractionGroup.hpp:153
CBWallInteractionGroup(TML_Comm *)
Definition: BWallInteractionGroup.hpp:20
ParticleListHandle getParticlesAtPlane(Vec3 o, Vec3 n)
Get list of particles along a plane. Forwards to NTable::getParticlesAtPlane.
Definition: pp_array.h:191
virtual bool isInInner(const Vec3 &)
Definition: pp_array.hpp:208
VEC3_INLINE double & Z()
Definition: vec3.h:121
int m_mask
Definition: BWallInteractionGroup.h:75
VEC3_INLINE double & Y()
Definition: vec3.h:120
double m_k
spring constant
Definition: BWallInteractionGroup.h:73
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
virtual void applyForce(const Vec3 &)
Definition: BWallInteractionGroup.hpp:71
bonded elastic interaction between a particle and a wall
Definition: BWallInteraction.h:29
base class for all walls
Definition: Wall.h:39
parrallel particle storage array with neighborsearch and variable exchange
Definition: SubLattice.h:61
Interaction group parameters for CBWallInteractionGroups.
Definition: BWallInteractionGroup.h:38
Abstract Base class for a group of interactions between particles and a wall.
Definition: WallIG.h:30
int getMask() const
Definition: BWallInteractionGroup.h:48
double getSpringConst() const
Definition: ElasticInteraction.h:36
int m_inner_count
Definition: WallIG.h:35
int getTag() const
Definition: BWallInteractionGroup.h:47
abstract base class for communicator
Definition: comm.h:46
BasicCon & XDebug(bool h=true)
set verbose level of next message to "xdg"
Definition: console.cpp:316
virtual void calcForces()
Definition: BWallInteractionGroup.hpp:44
unbonded elastic interaction between a particle and a wall
Definition: EWallInteraction.h:30
int m_tag
Definition: BWallInteractionGroup.h:74
VEC3_INLINE double & X()
Definition: vec3.h:119
Template class for a handle/ref. counted pointer.
Definition: handle.h:26
NeighborTable< T >::particlelist::iterator ParticleListIterator
Definition: pp_array.h:80
VEC3_INLINE Vec3 unit() const
Definition: vec3.hpp:225