lattice-core 0.1.0

Simple Lattice/Graph Library
Documentation
use crate::types::BasisMatrix;

#[derive(Clone, Debug, PartialEq)]
pub struct Basis {
  basis: BasisMatrix,
}

impl Basis {
  pub fn new(basis: BasisMatrix) -> Self {
    assert_eq!(basis.nrows(), basis.ncols(), "basis dimension mismatch");
    Self { basis }
  }

  pub fn simple(dim: usize) -> Self {
    Self::new(BasisMatrix::identity(dim, dim))
  }

  pub fn dimension(&self) -> usize {
    self.basis.nrows()
  }

  pub fn basis_vectors(&self) -> &BasisMatrix {
    &self.basis
  }

  pub fn volume(&self) -> f64 {
    self.basis.clone().determinant().abs()
  }
}