45 console.
XDebug() <<
"calculating " << m_interactions.size() <<
" elastic wall forces\n" ;
49 it != m_interactions.end();
63 <<
"CEWallInteractionGroup::Update: wall origin = " << this->m_wall->getOrigin()
64 <<
", wall normal = " << this->m_wall->getNormal() <<
"\n" ;
68 m_interactions.erase(m_interactions.begin(),m_interactions.end());
69 this->m_inner_count=0;
76 bool iflag=PPA->
isInInner((*iter)->getPos());
78 this->m_inner_count+=(iflag ? 1 : 0);
96 double par=F.
unit()*this->m_wall->getNormal().
unit();
98 console.
Warning() <<
"Force not parallel to wall normal in CEWallInteractionGroup::applyForce : " << F <<
" vs. " << this->m_wall->getNormal() <<
"\n";
111 iter!=m_interactions.end();
113 k_local+=
iter->getStiffness();
117 m_k_global=this->m_comm->sum_all(k_local);
124 iter!=m_interactions.end();
129 F_local+=(f_i*O_f)*O_f;
135 double fgx=this->m_comm->sum_all(F_local.
X());
136 double fgy=this->m_comm->sum_all(F_local.
Y());
137 double fgz=this->m_comm->sum_all(F_local.
Z());
146 this->m_wall->moveBy(d*O_f);
152 this->m_wall->moveBy(d*O_f);
155 }
while((it<50)&&(ef>1e-3));
158 console.
Warning() <<
"applyForce doesn't converge, global stiffness: " << m_k_global <<
" applied force: " << F <<
" wall normal: " << this->m_wall->getNormal() <<
"\n";
164 ostream& operator<<(ostream& ost,const CEWallInteractionGroup<T>& IG)
166 ost <<
"CEWallInteractionGroup" << endl << flush;
167 ost << *(IG.m_wall) << endl << flush;