use crate::types::cubical_regge_geometry::CubicalReggeGeometry;
use crate::types::lattice_complex::LatticeComplex;
pub fn open_square_3() -> LatticeComplex<2, f64> {
LatticeComplex::square_open(3)
}
pub fn periodic_square_3() -> LatticeComplex<2, f64> {
LatticeComplex::square_torus(3)
}
pub fn open_cube_3() -> LatticeComplex<3, f64> {
LatticeComplex::cubic_open(3)
}
pub fn periodic_cube_3() -> LatticeComplex<3, f64> {
LatticeComplex::cubic_torus(3)
}
pub fn unit_geometry<const D: usize>() -> CubicalReggeGeometry<D, f64> {
CubicalReggeGeometry::unit()
}
pub fn per_axis_geometry<const D: usize>(lengths: [f64; D]) -> CubicalReggeGeometry<D, f64> {
CubicalReggeGeometry::per_axis(lengths)
}
pub fn per_edge_uniform_per_axis<const D: usize>(
complex: &LatticeComplex<D, f64>,
lengths: [f64; D],
) -> CubicalReggeGeometry<D, f64> {
let total: usize = (0..D).map(|axis| complex.edges_along(axis)).sum();
let mut buf = Vec::with_capacity(total);
for (axis, &length) in lengths.iter().enumerate() {
let n = complex.edges_along(axis);
for _ in 0..n {
buf.push(length);
}
}
CubicalReggeGeometry::from_edge_lengths(buf)
}