1#include "check_local_topology.h"
3#include <gtest/gtest.h>
12 const RefEl ref_el = e.
RefEl();
13 const dim_t dimension = ref_el.Dimension();
21 for (
dim_t sub_codim = 1; sub_codim <= dimension; sub_codim++) {
23 const size_type num_sub_entities = ref_el.NumSubEntities(sub_codim);
27 size_type sub_ent_cnt{0};
28 for (
const Entity *sub_ent : sub_ent_range) {
29 const RefEl sub_ref_el = sub_ent->RefEl();
30 const dim_t sub_dim = sub_ref_el.Dimension();
31 EXPECT_EQ(sub_dim, dimension - sub_codim) <<
"Dim/Co-dim mismatch";
33 for (
dim_t sub_sub_codim = 1; sub_sub_codim <= sub_dim; sub_sub_codim++) {
34 auto sub_sub_ent_range = sub_ent->SubEntities(sub_sub_codim);
35 for (
const Entity *sub_sub_ent : sub_sub_ent_range) {
39 auto e_sub_sub_range = e.
SubEntities(sub_codim + sub_sub_codim);
42 for (
const Entity *e_sub_sub : e_sub_sub_range) {
43 if (e_sub_sub == sub_sub_ent) {
47 EXPECT_EQ(found, 1) <<
"Sub-sub-entity hit " << found <<
" times";
52 EXPECT_EQ(num_sub_entities, sub_ent_cnt)
53 <<
"Subent cnt mismatch " << num_sub_entities <<
" <-> " << sub_ent_cnt;
64 const RefEl ref_el = e.
RefEl();
65 const dim_t dimension = ref_el.Dimension();
67 for (
dim_t sub_codim = 1; sub_codim <= dimension; ++sub_codim) {
72 const size_type num_subent = ref_el.NumSubEntities(sub_codim);
74 for (
int sub_ent_idx = 0; sub_ent_idx < num_subent; ++sub_ent_idx) {
77 dimension - sub_ent_array[sub_ent_idx]->RefEl().Dimension())
78 <<
"Dimension mismatch: " << e <<
" <-> subent(" << sub_ent_idx <<
")"
Represents a reference element with all its properties.
Interface class representing a topological entity in a cellular complex
virtual nonstd::span< const Entity *const > SubEntities(unsigned rel_codim) const =0
Return all sub entities of this entity that have the given codimension (w.r.t. this entity!...
virtual base::RefEl RefEl() const =0
Describes the reference element type of this entity.
lf::base::size_type size_type
unsigned int dim_t
type for dimensions and co-dimensions and numbers derived from them
Utilities for testing sanity of mesh data structures and tests involving meshes.
void checkRelCodim(const Entity &e)
consistence check for local (relative) co-dimensions
void checkLocalTopology(const Entity &e)
Function for testing consistency of subentities.