3#include "./fourier_polynomial.hpp"
10namespace triqs::experimental::lattice {
27 nda::matrix<long> units;
28 nda::array<long, 2> cluster_points;
30 nda::matrix<double> transfo_SL_L;
31 long _dim = units.extent(0);
42 superlattice(nda::array<long, 2> sl_units, nda::array<long, 2> cluster_pts);
64 long dim()
const {
return _dim; }
80 C2PY_IGNORE std::optional<nda::vector<long>>
L_to_SL(nda::vector<long>
const &r_l,
double epsilon = 1.e-12)
const;
93 template <
int kdim> fourier_polynomial<2, kdim>
fold(superlattice
const &sl, fourier_polynomial<2, kdim>
const &fp);
auto const & get_cluster_pts() const
Get the cluster points of the superlattice.
auto const & get_sl_units() const
Get the unit vectors of the superlattice.
std::optional< nda::vector< long > > L_to_SL(nda::vector< long > const &r_l, double epsilon=1.e-12) const
Transform a point from lattice coordinates to superlattice coordinates.
long dim() const
Get the dimension of the superlattice.
long n_cluster_sites() const
Get the number of cluster sites in one superlattice unit cell.
superlattice(nda::array< long, 2 > sl_units, nda::array< long, 2 > cluster_pts)
Construct a superlattice from its unit vectors and cluster points.
fourier_polynomial< 2, kdim > fold(superlattice const &sl, fourier_polynomial< 2, kdim > const &fp)
Fold a Fourier polynomial defined on a lattice onto a superlattice.
Common macros used in TRIQS.