use crate::algebra::prelude::*;
use crate::matrix::sparse::CsrMatrix;
use crate::preconditioner::amg::coarsen::{
AggAlgo, AggOpts, build_aggregates, lift_node_aggregates_to_dofs,
};
use crate::preconditioner::amg::strength_nodal::strength_nodal;
use crate::preconditioner::amg::util::DofLayout;
#[test]
fn nodal_aggregates_group_dofs() {
let a = CsrMatrix::identity(4);
let layout = DofLayout::new(4, 2);
let zero = R::default();
let s = strength_nodal(&a, &layout, zero, true);
let (agg_node, is_c_node) = build_aggregates(
&s,
AggAlgo::RSGreedy,
&AggOpts {
mis_k: 1,
cap_per_row: None,
},
);
let (agg, is_c) = lift_node_aggregates_to_dofs(&agg_node, &is_c_node, &layout);
assert_eq!(agg, vec![0, 0, 1, 1]);
assert_eq!(is_c, vec![true, true, true, true]);
}