Skip to content

Commit f407f4e

Browse files
committed
Fix and format tearing calculate
1 parent 963a766 commit f407f4e

2 files changed

Lines changed: 15 additions & 10 deletions

File tree

algorithms/tearing/tearing_impl.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,16 @@ namespace LIB {
3333
// Tearing Algorithm ---------------------------------------------
3434
////////////////////////////////////////////////////////////////////////////////
3535

36-
TearingV1::TearingV1(SCCPtr sccAlgorithm) : dsbg_(), finalDSBG(), tearIOMap_ (PW_FACT.createPWMap()),sccAlgorithm_(std::move(sccAlgorithm)) {}
36+
TearingV1::TearingV1(SCCPtr sccAlgorithm) : dsbg_(), finalDSBG(), tearIOMap_ (PW_FACT.createPWMap()),
37+
finalMapB(PW_FACT.createPWMap()), finalMapD(PW_FACT.createPWMap()), sccAlgorithm_(std::move(sccAlgorithm)) {}
3738

3839

3940
void TearingV1::init(const DSBG& dsbg)
4041
{
4142
dsbg_ = dsbg;
4243
finalDSBG = dsbg;
44+
finalMapB = dsbg.mapB();
45+
finalMapD = dsbg.mapD();
4346
return;
4447
}
4548

@@ -53,34 +56,34 @@ TearingData TearingV1::calculate(const DSBG& dsbg)
5356
MD_NAT maxOffset = dsbg_.V().maxElem();
5457
SCCData result = sccAlgorithm_->calculate(dsbg_);
5558
PWMap rmap_ = result.rmap();
56-
PWMap finalMapB = dsbg_.mapB();
57-
PWMap finalMapD = dsbg_.mapD();
5859
Set e_notscc = result.Ediff();
5960
Set e_scc = dsbg_.E().difference(e_notscc);
6061
Set v_tear = rmap_.image(rmap_.dom().difference(rmap_.fixedPoints()));
62+
6163
while (!v_tear.isEmpty()) {
6264
PWMap rmap = result.rmap();
6365
PWMap tearIOMap = PW_FACT.createPWMap(v_tear).offsetImage(maxOffset);
6466
finalDSBG = finalDSBG.addSV(tearIOMap.image());
6567
maxOffset = finalDSBG.V().maxElem();
6668
tearIOMap_ = tearIOMap.combine(tearIOMap_);
67-
rmap = rmap.combine(tearIOMap.inverse()); // Separar
69+
rmap = rmap.combine(tearIOMap.inverse());
6870
rmap_ = rmap_.combine(rmap);
71+
6972
Set e_tear_scc = dsbg_.mapD().restrict(e_scc).preImage(v_tear);
7073
Set e_tear_notscc = dsbg_.mapB().restrict(e_notscc).preImage(v_tear);
71-
// PWMap mapB_scc = dsbg_.mapB().restrict(e_scc).composition(rmap); // Necessary?
7274
PWMap mapD_scc = tearIOMap.composition(dsbg_.mapD().restrict(e_tear_scc));
7375
PWMap mapB_notscc = tearIOMap.composition(dsbg_.mapB().restrict(e_tear_notscc));
74-
// PWMap mapD_notscc = dsbg_.mapD().restrict(e_notscc).composition(rmap); // Necessary?
76+
7577
finalMapB = mapB_notscc.combine(finalMapB);
7678
finalMapD = mapD_scc.combine(finalMapD);
77-
dsbg_ = DSBG(finalDSBG.V().compact(), finalDSBG.Vmap().compact()
78-
, finalMapB.compact(), finalMapD.compact(), finalDSBG.Emap().compact(), finalDSBG.subEmap().compact());
79+
80+
dsbg_ = DSBG(finalDSBG.V().compact(), finalDSBG.Vmap().compact(),
81+
finalMapB.compact(), finalMapD.compact(), finalDSBG.Emap().compact(), finalDSBG.subEmap().compact());
82+
7983
result = sccAlgorithm_->calculate(dsbg_);
8084
e_notscc = result.Ediff();
8185
e_scc = e_scc.difference(e_notscc);
82-
rmap = result.rmap();
83-
v_tear = rmap.image().difference(rmap.fixedPoints());
86+
v_tear = rmap_.image(rmap_.dom().difference(rmap_.fixedPoints()));
8487
}
8588

8689
finalDSBG = dsbg_;

algorithms/tearing/tearing_impl.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ class TearingV1 : public TearingStrategy {
6262
DSBG dsbg_; ///< Input DSBG
6363
DSBG finalDSBG; ///< Output DSBG
6464
PWMap tearIOMap_; ///< Output tearing vertex map
65+
PWMap finalMapB; ///< Output DSBG mapB
66+
PWMap finalMapD; ///< Output DSBG mapD
6567
};
6668

6769
} // namespace LIB

0 commit comments

Comments
 (0)