\n"
<< "
Cell complex debug trace
\n"
<< "
Go to:
\n"
<< "
\n";
for (std::size_t i = 0; i < cc_interior_summary_lists.size(); ++i) {
ofs << " - Dimension " << i << "
\n";
}
ofs << "
\n";
for (std::size_t i = 0; i < cc_interior_summary_lists.size(); ++i) {
ofs << "
Dimension " << i << "
\n";
ofs << "
Summary for interior simplices
\n";
if (i < cc_boundary_summary_lists.size()) ofs << "
Go to boundary
\n";
ofs << "
\n";
for (const CC_summary_info& cc_info : cc_interior_summary_lists[i])
ofs << " - "
<< simplex_format(cc_info.face_, false) << " cell =" << cc_info.cell_ << "
\n";
ofs << "
\n";
ofs << "
Prejoin state of the interior cells of dimension " << i << "
\n";
auto prejoin_it = cc_interior_prejoin_lists[i].begin();
while (prejoin_it != cc_interior_prejoin_lists[i].end()) {
std::size_t j = prejoin_it->dimension_;
ofs << "
" << j << "-dimensional ambient simplices
\n";
ofs << "
\n";
for (; prejoin_it->dimension_ == j; ++prejoin_it) {
ofs << " - " << simplex_format(prejoin_it->simplex_, false)
<< " join = " << simplex_format(prejoin_it->join_, false) << " boundary:\n"
<< "
\n";
for (const auto& face : prejoin_it->faces_) ofs << " - " << simplex_format(face) << "
";
ofs << "
\n";
switch (prejoin_it->status_) {
case (CC_prejoin_info::Result_type::join_single):
ofs << " Deleted " << simplex_format(prejoin_it->simplex_, false)
<< " as it has a single face.
";
break;
case (CC_prejoin_info::Result_type::join_is_face):
ofs << " Deleted " << simplex_format(prejoin_it->simplex_, false)
<< " as its join " << simplex_format(prejoin_it->join_, false) << " is one of the faces.
";
break;
case (CC_prejoin_info::Result_type::join_different):
ofs << " Deleted " << simplex_format(prejoin_it->simplex_, false)
<< " and replaced by its join " << simplex_format(prejoin_it->join_, false) << ".
";
break;
case (CC_prejoin_info::Result_type::join_same):
ofs << " Kept " << simplex_format(prejoin_it->simplex_, false)
<< ".
";
}
ofs << " ";
}
ofs << "
\n";
}
ofs << "
Details for interior simplices
\n";
ofs << "
\n";
for (const CC_detail_info& cc_info : cc_interior_detail_lists[i]) {
if (cc_info.status_ == CC_detail_info::Result_type::join_single) {
ofs << " - Simplex " << simplex_format(cc_info.simplex_, false) << " has only one face ("
<< simplex_format(cc_info.trigger_, false) << ") and is deleted.";
continue;
}
if (cc_info.status_ == CC_detail_info::Result_type::join_single) {
ofs << "
- The join of the simplex " << simplex_format(cc_info.simplex_, false) << " is one of its faces ("
<< simplex_format(cc_info.trigger_, false) << "), hence it is is deleted.";
continue;
}
ofs << "
- Insert_cell called for " << simplex_format(cc_info.simplex_, false) << "\n";
ofs << "
\n";
// for (const std::string& cof: cc_info.faces_)
// ofs << " - Checking if " << simplex_format(cc_info.simplex_, false)
// << " is a face of " << simplex_format(cof, false) << "\n";
ofs << "
\n";
ofs << " \n";
if (cc_info.status_ == CC_detail_info::Result_type::self) {
ofs << " The simplex " << simplex_format(cc_info.simplex_, false)
<< " already exists in the cell complex!
\n";
}
if (cc_info.status_ == CC_detail_info::Result_type::face) {
ofs << " The simplex " << simplex_format(cc_info.simplex_, false)
<< " is a face of the simplex " << simplex_format(cc_info.trigger_, false) << "!
\n";
ofs << "
\n";
for (const std::string post_face : cc_info.post_faces_)
ofs << " - "
<< "Post deleting " << simplex_format(post_face, false) << "
\n";
ofs << "
\n";
ofs << " \n";
ofs << " "
<< "Deleting " << simplex_format(cc_info.trigger_, false) << "
\n";
}
// for (const std::string& fac: cc_info.cofaces_)
// ofs << " - Checking if " << simplex_format(cc_info.simplex_, false)
// << " is a coface of " << simplex_format(fac, false) << "\n";
if (cc_info.status_ == CC_detail_info::Result_type::coface) {
ofs << "
The simplex " << simplex_format(cc_info.simplex_, false)
<< " is a coface of the simplex " << simplex_format(cc_info.trigger_, false) << "!
\n";
}
if (cc_info.status_ == CC_detail_info::Result_type::inserted) {
ofs << "
Successfully inserted "
<< simplex_format(cc_info.simplex_, false) << "!
\n";
}
ofs << "
\n";
ofs << " \n";
}
ofs << "
\n";
if (i < cc_boundary_summary_lists.size()) {
ofs << "
Summary for boundary simplices
\n";
ofs << "
Go to interior
\n";
ofs << "
\n";
for (const CC_summary_info& cc_info : cc_boundary_summary_lists[i])
ofs << " - "
<< simplex_format(cc_info.face_, true) << " cell =" << cc_info.cell_ << "
\n";
ofs << "
\n";
ofs << "
Prejoin state of the boundary cells of dimension " << i << "
\n";
auto prejoin_it = cc_boundary_prejoin_lists[i].begin();
while (prejoin_it != cc_boundary_prejoin_lists[i].end()) {
std::size_t j = prejoin_it->dimension_;
ofs << "
" << j << "-dimensional ambient simplices
\n";
ofs << "
\n";
for (; prejoin_it->dimension_ == j; ++prejoin_it) {
ofs << " - " << simplex_format(prejoin_it->simplex_, true)
<< " join = " << simplex_format(prejoin_it->join_, true) << " boundary:\n"
<< "
\n";
for (const auto& face : prejoin_it->faces_) ofs << " - " << simplex_format(face) << "
";
ofs << "
\n";
switch (prejoin_it->status_) {
case (CC_prejoin_info::Result_type::join_single):
ofs << " Deleted " << simplex_format(prejoin_it->simplex_, true)
<< " as it has a single face.
";
break;
case (CC_prejoin_info::Result_type::join_is_face):
ofs << " Deleted " << simplex_format(prejoin_it->simplex_, true)
<< " as its join " << simplex_format(prejoin_it->join_, true) << " is one of the faces.
";
break;
case (CC_prejoin_info::Result_type::join_different):
ofs << " Deleted " << simplex_format(prejoin_it->simplex_, true)
<< " and replaced by its join " << simplex_format(prejoin_it->join_, true) << ".
";
break;
case (CC_prejoin_info::Result_type::join_same):
ofs << " Kept " << simplex_format(prejoin_it->simplex_, true)
<< ".
";
}
ofs << " ";
}
ofs << "
\n";
}
}
if (i < cc_boundary_detail_lists.size()) {
ofs << "
Details for boundary simplices
\n"
<< "
\n";
for (const CC_detail_info& cc_info : cc_boundary_detail_lists[i]) {
if (cc_info.status_ == CC_detail_info::Result_type::join_single) {
ofs << " - Simplex " << simplex_format(cc_info.simplex_, true) << " has only one face ("
<< simplex_format(cc_info.trigger_, true) << ") and is deleted.";
continue;
}
if (cc_info.status_ == CC_detail_info::Result_type::join_single) {
ofs << "
- The join of the simplex " << simplex_format(cc_info.simplex_, true) << " is one of its faces ("
<< simplex_format(cc_info.trigger_, true) << "), hence it is is deleted.";
continue;
}
ofs << "
- Insert_simplex called on " << simplex_format(cc_info.simplex_, true);
ofs << "
\n";
// for (const std::string& cof: cc_info.faces_)
// ofs << " - Checking if " << simplex_format(cc_info.simplex_, true)
// << " is a face of " << simplex_format(cof, true) << "\n";
ofs << "
\n";
ofs << " \n";
if (cc_info.status_ == CC_detail_info::Result_type::self) {
ofs << " The simplex " << simplex_format(cc_info.simplex_, true)
<< " already exists in the cell complex!
\n";
}
if (cc_info.status_ == CC_detail_info::Result_type::face) {
ofs << " The simplex " << simplex_format(cc_info.simplex_, true)
<< " is a face of the simplex " << simplex_format(cc_info.trigger_, true) << "!
\n";
ofs << "
\n";
for (const std::string post_face : cc_info.post_faces_)
ofs << " - Post deleting "
<< simplex_format(post_face, true) << "
\n";
ofs << "
\n";
ofs << " \n";
ofs << " Deleting "
<< simplex_format(cc_info.trigger_, true) << "
\n";
}
// for (const std::string& fac: cc_info.cofaces_)
// ofs << " - Checking if " << simplex_format(cc_info.simplex_, true)
// << " is a coface of " << simplex_format(fac, true) << "\n";
ofs << "
\n";
ofs << " \n";
if (cc_info.status_ == CC_detail_info::Result_type::coface) {
ofs << " The simplex "
<< simplex_format(cc_info.simplex_, true) << " is a coface of the simplex "
<< simplex_format(cc_info.trigger_, true) << "!
\n";
}
if (cc_info.status_ == CC_detail_info::Result_type::inserted) {
ofs << "
Successfully inserted "
<< simplex_format(cc_info.simplex_, true) << "!
\n";
}
}
ofs << "
\n";
}
}
ofs << "
\n";
}
void write_visu(std::ofstream& ofs) {
ofs << "