#[cfg(test)]
pub mod test;
mod base;
mod buffer;
mod connectivity;
mod differential;
mod from;
mod into;
mod quality;
mod read;
pub(crate) mod remesh;
mod smooth;
mod tessellation;
mod write;
pub use self::{
buffer::Fitting,
connectivity::{
Connectivities, Connectivity, polytopal::PolytopalConnectivity,
primitive::PrimitiveConnectivity,
},
differential::laplace::Weighting,
quality::metrics::Verdict,
read::Input,
remesh::{AnisotropicSizing, IsotropicSizing, Remeshing, RemeshingMetric},
smooth::Smoothing,
tessellation::{Tessellation, cut::Class},
write::{Output, vtk::Vtk},
};
use crate::{
geometry::Coordinates,
math::{Graph, Set},
};
use std::cell::OnceCell;
pub type NodeSets = Set<Vec<Vec<usize>>>;
pub type SideSets = Set<Vec<Vec<(usize, usize)>>>;
pub struct Mesh<const D: usize> {
connectivities: Connectivities,
coordinates: Set<Coordinates<D>>,
node_sets: NodeSets,
side_sets: SideSets,
nodes_elements: OnceCell<Vec<Vec<usize>>>,
nodes_nodes: OnceCell<Graph>,
}