<commit_before>#ifndef ALEPH_TOPOLOGY_MORSE_SMALE_COMPLEX__
#define ALEPH_TOPOLOGY_MORSE_SMALE_COMPLEX__

namespace aleph
{

namespace topology
{

template <class Mesh> class MorseSmaleComplex
{
public:
  void operator()( const Mesh& M )
  {
    auto n = M.vertices();

    for( decltype(n) i = 0; i < n; i++ )
    {
    }
  }
};

} // namespace topology

} // namespace aleph

#endif
<commit_msg>Basic vertex classification for Morse--Smale complexes<commit_after>#ifndef ALEPH_TOPOLOGY_MORSE_SMALE_COMPLEX__
#define ALEPH_TOPOLOGY_MORSE_SMALE_COMPLEX__

// TODO: Remove after debugging
#include <iostream>

namespace aleph
{

namespace topology
{

template <class Mesh> class MorseSmaleComplex
{
public:
  void operator()( const Mesh& M )
  {
    auto n = M.vertices();

    for( decltype(n) i = 0; i < n; i++ )
    {
      auto v = M.vertex(i);

      auto higherNeigbours = M.getHigherNeighbours( *v );
      auto lowerNeighbours = M.getLowerNeighbours( *v );

      std::cerr << "No. higher neighbours: " << higherNeigbours.size() << "\n"
                << "No. lower  neighbours: " << lowerNeighbours.size() << "\n";

      std::cerr << "[" << i << "]: ";

      if( higherNeigbours.empty() )
        std::cerr << "Maximum\n";
      else if( lowerNeighbours.empty() )
        std::cerr << "Minimum\n";
      else
        std::cerr << "Saddle\n";
    }
  }
};

} // namespace topology

} // namespace aleph

#endif

{'fraction_non_alphanumeric': 0.13933849401829698, 'fraction_numerical': 0.0014074595355383533, 'mean_word_length': 3.0056338028169014, 'pattern_counts': {'":': 0, '<': 32, '<?xml version=': 0, '>': 6, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5299264', 'n_tokens_mistral': 550, 'n_tokens_neox': 519, 'n_words': 115}