12 #include "Foundation/console.h"
21 template<
class ParticleType,
class IType>
26 this->m_update_timestamp=0;
32 template<
class ParticleType,
class IType>
45 template <
class ParticleType,
class IType>
54 case 0: res=m_edge_int_set.find(make_pair(v[0],v[1]))!=m_edge_int_set.end();
break;
55 case 1: res=m_corner_int_set.find(make_pair(v[0],v[1]))!=m_corner_int_set.end();
break;
56 default: console.
Error() <<
"wrong value in argument of Mesh2D_PIS::isIn !!\n";
break;
66 template<
class ParticleType,
class IType>
69 console.
XDebug() <<
"Mesh2D_PIS_NE calculating " << m_edge_interactions.size() <<
" line forces , "
70 << m_corner_interactions.size() <<
"corner forces\n";
73 for(
typename std::vector<typename IType::EdgeIntType>::iterator tri_iter=m_edge_interactions.begin();
74 tri_iter!=m_edge_interactions.end();
76 tri_iter->calcForces();
79 for(
typename std::vector<typename IType::CornerIntType>::iterator corner_iter=m_corner_interactions.begin();
80 corner_iter!=m_corner_interactions.end();
82 corner_iter->calcForces();
89 template<
class ParticleType,
class IType>
92 console.
XDebug() <<
"Mesh2D_PIS_NE::update\n";
97 if(this->m_update_timestamp != this->m_ppa->getTimeStamp()){
98 console.
XDebug() <<
"Mesh2D_PIS_NE doing update\n";
100 m_edge_interactions.clear();
101 m_corner_interactions.clear();
102 m_edge_int_set.clear();
103 m_corner_int_set.clear();
107 Mesh2D::edge_iterator ed_iter = this->m_mesh->edges_begin();
108 ed_iter != this->m_mesh->edges_end();
111 typename ParallelParticleArray<ParticleType>::ParticleListHandle plh =
114 typename ParallelParticleArray<ParticleType>::ParticleListIterator p_iter=plh->begin();
118 bool iflag = this->m_ppa->isInInner((*p_iter)->getPos());
119 m_edge_interactions.push_back(
typename IType::EdgeIntType(*p_iter,&(*ed_iter),m_param,iflag));
125 Mesh2D::corner_iterator co_iter = this->m_mesh->corners_begin();
126 co_iter != this->m_mesh->corners_end();
129 typename ParallelParticleArray<ParticleType>::ParticleListHandle plh=
132 typename ParallelParticleArray<ParticleType>::ParticleListIterator p_iter=plh->begin();
136 bool iflag = this->m_ppa->isInInner((*p_iter)->getPos());
137 m_corner_interactions.push_back(
typename IType::CornerIntType(*p_iter,&(*co_iter),m_param,iflag));
142 this->m_update_timestamp = this->m_ppa->getTimeStamp();
144 console.
XDebug() <<
"end ElasticMesh2DIG<T>::Update\n";