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";
102 console.
Warning() <<
"No force applied to wall in CEWallInteractionGroup::applyForce, which will not converge. If ramping the force, start with a nonzero value.\n";
115 iter!=m_interactions.end();
117 k_local+=
iter->getStiffness();
121 m_k_global=this->m_comm->sum_all(k_local);
128 iter!=m_interactions.end();
133 F_local+=(f_i*O_f)*O_f;
139 double fgx=this->m_comm->sum_all(F_local.
X());
140 double fgy=this->m_comm->sum_all(F_local.
Y());
141 double fgz=this->m_comm->sum_all(F_local.
Z());
150 this->m_wall->moveBy(d*O_f);
156 this->m_wall->moveBy(d*O_f);
159 }
while((it<50)&&(ef>1e-3));
162 console.
Warning() <<
"applyForce doesn't converge, global stiffness: " << m_k_global <<
" applied force: " << F <<
" wall normal: " << this->m_wall->getNormal() <<
"\n";
168 ostream& operator<<(ostream& ost,const CEWallInteractionGroup<T>& IG)
170 ost <<
"CEWallInteractionGroup" << endl << flush;
171 ost << *(IG.m_wall) << endl << flush;
CWall * m_wall
the wall
Definition: WallIG.h:33
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
VEC3_INLINE double & Y()
Definition: vec3.h:120
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
base class for all walls
Definition: Wall.h:39
parrallel particle storage array with neighborsearch and variable exchange
Definition: SubLattice.h:61
VEC3_INLINE double norm() const
Definition: vec3.hpp:211
Abstract Base class for a group of interactions between particles and a wall.
Definition: WallIG.h:30
Interaction group parameters for CEWallInteractionGroups.
Definition: brokenEWallInteractionGroup.h:32
double getSpringConst() const
Definition: ElasticInteraction.h:36
BasicCon & Warning(bool h=true)
set verbose level of next message to "wrn"
Definition: console.cpp:272
abstract base class for communicator
Definition: comm.h:46
virtual void applyForce(const Vec3 &)
Definition: brokenEWallInteractionGroup.hpp:102
BasicCon & XDebug(bool h=true)
set verbose level of next message to "xdg"
Definition: console.cpp:316
unbonded elastic interaction between a particle and a wall
Definition: EWallInteraction.h:30
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
CEWallInteractionGroup(TML_Comm *)
Definition: brokenEWallInteractionGroup.hpp:21
virtual void calcForces()
Definition: brokenEWallInteractionGroup.hpp:42
virtual void Update(ParallelParticleArray< T > *)
Definition: brokenEWallInteractionGroup.hpp:57
double m_k
Elastic modulus.
Definition: brokenEWallInteractionGroup.h:59
VEC3_INLINE Vec3 unit() const
Definition: vec3.hpp:225