OISEAU
A modern DGTD framework
Loading...
Searching...
No Matches
topology.hpp
1// Copyright (C) 2025 Tiago V. L. Amorim (@tiagovla)
2//
3// This file is part of oiseau (https://github.com/tiagovla/oiseau)
4//
5// SPDX-License-Identifier: GPL-3.0-or-later
6
7#pragma once
8#include <cstddef>
9#include <span>
10#include <vector>
11
12#include "oiseau/mesh/cell.hpp"
13
14namespace oiseau::mesh {
15
16class Topology {
17 public:
18 Topology();
19 Topology(std::vector<std::vector<std::size_t>> &&conn, std::vector<CellType> &&cell_types);
20 Topology(Topology &&) = default;
21 Topology(const Topology &) = default;
22 Topology &operator=(Topology &&) = default;
23 Topology &operator=(const Topology &) = default;
24 ~Topology();
25 std::span<CellType> cell_types();
26 std::span<std::vector<std::size_t>> conn();
27 std::span<std::vector<std::size_t>> e_to_e();
28 std::span<std::vector<std::size_t>> e_to_f();
29 std::size_t n_cells() const;
30 void calculate_connectivity();
31
32 private:
33 std::vector<std::vector<std::size_t>> m_conn;
34 std::vector<std::vector<std::size_t>> m_e_to_v;
35 std::vector<std::vector<std::size_t>> m_e_to_e;
36 std::vector<std::vector<std::size_t>> m_e_to_f;
37 std::vector<CellType> m_cell_types;
38};
39
40} // namespace oiseau::mesh