use itertools::izip;
use ndelement::{ciarlet::CiarletElement, map::IdentityMap, types::ReferenceCellType};
use ndgrid::traits::{
Builder, Entity, GmshExport, GmshImport, Grid, RONExport, RONImport, Topology,
};
use ndgrid::{SingleElementGrid, SingleElementGridBuilder, shapes};
fn main() {
let g = shapes::unit_cube_boundary::<f64>(4, 5, 4, ReferenceCellType::Triangle);
g.export_as_ron("_unit_cube_boundary.ron");
let g2 = SingleElementGrid::<f64, CiarletElement<f64, IdentityMap>>::import_from_ron(
"_unit_cube_boundary.ron",
);
println!("The first 5 cells of the grids");
for (cell, cell2) in izip!(
g.entity_iter(ReferenceCellType::Triangle),
g2.entity_iter(ReferenceCellType::Triangle)
)
.take(5)
{
println!(
"{:?} {:?}",
cell.topology()
.sub_entity_iter(ReferenceCellType::Point)
.collect::<Vec<_>>(),
cell2
.topology()
.sub_entity_iter(ReferenceCellType::Point)
.collect::<Vec<_>>(),
);
}
println!();
g.export_as_gmsh("_unit_cube_boundary.msh");
let mut b = SingleElementGridBuilder::<f64>::new(3, (ReferenceCellType::Triangle, 1));
b.import_from_gmsh("_unit_cube_boundary.msh");
let g3 = b.create_grid();
println!("The first 5 cells of the grids");
for (cell, cell3) in izip!(
g.entity_iter(ReferenceCellType::Triangle),
g3.entity_iter(ReferenceCellType::Triangle)
)
.take(5)
{
println!(
"{:?} {:?}",
cell.topology()
.sub_entity_iter(ReferenceCellType::Point)
.collect::<Vec<_>>(),
cell3
.topology()
.sub_entity_iter(ReferenceCellType::Point)
.collect::<Vec<_>>(),
);
}
}