47 throw Exception(
"ForkBlocPoint::getFirstNode : error no branches !");
48 return _nodes.front()->getFirstNode();
54 throw Exception(
"ForkBlocPoint::getLastNode : error no branches !");
55 return _nodes.front()->getLastNode();
61 for(std::list<AbstractPoint *>::const_iterator it=
_nodes.begin();it!=
_nodes.end();it++)
62 ret+=(*it)->getMaxLevelOfParallelism();
69 for(std::list<AbstractPoint *>::const_iterator it=
_nodes.begin();it!=
_nodes.end();it++)
71 (*it)->getWeightRegardingDPL(&localWeight);
79 std::vector< std::pair<const PartDefinition *, const ComplexWeight *> > parts;
80 std::vector< int> nbCoresPerShot;
81 std::vector<std::size_t> v;
82 std::vector<ComplexWeight> nodesWeight(
_nodes.size());
84 for(std::list<AbstractPoint *>::const_iterator it=
_nodes.begin();it!=
_nodes.end();it++,ii++)
87 (*it)->getWeightRegardingDPL(
w);
88 parts.push_back(std::pair<const PartDefinition *, const ComplexWeight *>(pd,
w));
89 nbCoresPerShot.push_back((*it)->getMaxLevelOfParallelism());
92 std::vector<AbstractPoint *> nodes2(
_nodes.begin(),
_nodes.end());
96 std::vector< YACS::BASES::AutoRefCnt<PartDefinition> > pds(pg->
partition(parts,nbCoresPerShot));
98 for(std::vector<std::size_t>::const_iterator iter=v.begin();iter!=v.end();iter++,ii++)
99 nodes2[*iter]->partitionRegardingDPL(pds[ii],zeMap);
105 std::size_t sz(
_nodes.size()),ii(0);
106 std::string ret(
"[");
107 std::vector<std::string> elts(sz);
108 for(std::list<AbstractPoint *>::const_iterator it=
_nodes.begin();it!=
_nodes.end();it++,ii++)
109 elts[ii]=(*it)->getRepr();
110 std::sort(elts.begin(),elts.end());
112 for(std::list<AbstractPoint *>::const_iterator it=
_nodes.begin();it!=
_nodes.end();it++,ii++)
134 AbstractPoint *ret(it->expandNonSimpleCaseOn(pathologicalPt,uncatchedNodes));
void setFather(AbstractPoint *father)
void deepCopyFrom(const BlocPoint &other)
std::list< AbstractPoint * > _nodes
void addWeight(const ComplexWeight *other)
Base class for all composed nodes.
Node * getFirstNode() override
std::string getRepr() const
void getWeightRegardingDPL(ComplexWeight *weight)
void partitionRegardingDPL(const PartDefinition *pd, std::map< ComposedNode *, YACS::BASES::AutoRefCnt< PartDefinition > > &zeMap) const
AbstractPoint * deepCopy(AbstractPoint *father) const override
int getMaxLevelOfParallelism() const
AbstractPoint * expandNonSimpleCaseOn(NotSimpleCasePoint *pathologicalPt, const std::set< Node * > &uncatchedNodes) override
void accept(PointVisitor *pv) override
Node * getLastNode() override
Base class for all nodes.
const PlayGround * getPlayGround() const
std::vector< YACS::BASES::AutoRefCnt< PartDefinition > > partition(const std::vector< std::pair< const PartDefinition *, const ComplexWeight * > > &parts, const std::vector< int > &nbCoresPerShot) const
virtual void endForkBlocPoint(ForkBlocPoint *pt)=0
virtual void beginForkBlocPoint(ForkBlocPoint *pt)=0