Program Listing for File lattice3D.hpp

Return to documentation for file (src_qcm/lattice3D.hpp)

#ifndef lattice_h
#define lattice_h

#include <iostream>
#include <vector>
#include <utility>

#include "vector3D.hpp"
#include "basis3D.hpp"


struct lattice3D
{
    size_t D;
    vector<vector3D<int64_t>> e;
    int64_t vol;
    matrix<double> M;

    lattice3D() {}
    lattice3D(vector<vector3D<int64_t>> _e) : e(_e) {init();}
    lattice3D(vector<int64_t> _e);
    void read(istream &fin);
    void trivial();
    void init();

    std::pair<vector3D<int64_t>, vector3D<int64_t>> fold(const vector3D<int64_t> &r);
    void dual(basis3D &x);
    vector3D<double> to(vector3D<int64_t> v);
    vector3D<double> from(vector3D<double> v);

    friend std::ostream & operator<<(std::ostream &flux, lattice3D &latt);
};


#endif