Skip to content

Commit

Permalink
another big one
Browse files Browse the repository at this point in the history
  • Loading branch information
H-A-M-G-E-R committed Nov 22, 2023
1 parent a6b357d commit 8759b94
Showing 1 changed file with 60 additions and 24 deletions.
84 changes: 60 additions & 24 deletions miratope-core/src/conc/faceting.rs
Original file line number Diff line number Diff line change
Expand Up @@ -655,22 +655,40 @@ fn faceting_subdim(
None => {
// adds all ridges with the same orbit to the map
let mut count = 0;
for row in &vertex_map {
let mut new_ridge = ridge.clone();
let mut checked = HashSet::new();

let mut new_list = ElementList::new();
for i in 0..new_ridge[2].len() {
let mut new = Element::new(Subelements::new(), Superelements::new());
for sub in &ridge[2][i].subs {
new.subs.push(row[*sub])
}
new_list.push(new);
let mut ridge_vertices_idx = HashSet::new();

for edge in &ridge[2] {
for sub in &edge.subs {
ridge_vertices_idx.insert(*sub);
}
new_ridge[2] = new_list;
}

let mut ridge_vertices = Vec::new();

for idx in &ridge_vertices_idx {
ridge_vertices.push(*idx);
}

for row in &vertex_map {
let mut new_ridge_vertices: Vec<usize> = ridge_vertices.iter().map(|v| row[*v]).collect();
new_ridge_vertices.sort_unstable();
if checked.insert(new_ridge_vertices) {
let mut new_ridge = ridge.clone();

let mut new_list = ElementList::new();
for i in 0..new_ridge[2].len() {
let mut new = Element::new(Subelements::new(), Superelements::new());
for sub in &ridge[2][i].subs {
new.subs.push(row[*sub])
}
new_list.push(new);
}
new_ridge[2] = new_list;

new_ridge.element_sort_strong();
new_ridge.element_sort_strong();

if ridge_orbits.get(&new_ridge).is_none() {
ridge_orbits.insert(new_ridge, orbit_idx);
count += 1;
}
Expand Down Expand Up @@ -1720,22 +1738,40 @@ impl Concrete {
None => {
// adds all ridges with the same orbit to the map
let mut count = 0;
for row in &vertex_map {
let mut new_ridge = ridge.clone();
let mut checked = HashSet::new();

let mut new_list = ElementList::new();
for i in 0..new_ridge[2].len() {
let mut new = Element::new(Subelements::new(), Superelements::new());
for sub in &ridge[2][i].subs {
new.subs.push(row[*sub])
}
new_list.push(new);
let mut ridge_vertices_idx = HashSet::new();

for edge in &ridge[2] {
for sub in &edge.subs {
ridge_vertices_idx.insert(*sub);
}
new_ridge[2] = new_list;
}

let mut ridge_vertices = Vec::new();

for idx in &ridge_vertices_idx {
ridge_vertices.push(*idx);
}

for row in &vertex_map {
let mut new_ridge_vertices: Vec<usize> = ridge_vertices.iter().map(|v| row[*v]).collect();
new_ridge_vertices.sort_unstable();
if checked.insert(new_ridge_vertices) {
let mut new_ridge = ridge.clone();

let mut new_list = ElementList::new();
for i in 0..new_ridge[2].len() {
let mut new = Element::new(Subelements::new(), Superelements::new());
for sub in &ridge[2][i].subs {
new.subs.push(row[*sub])
}
new_list.push(new);
}
new_ridge[2] = new_list;

new_ridge.element_sort_strong();
new_ridge.element_sort_strong();

if ridge_orbits.get(&new_ridge).is_none() {
ridge_orbits.insert(new_ridge, orbit_idx);
count += 1;
}
Expand Down

0 comments on commit 8759b94

Please sign in to comment.