added SymmetryOperation.h
[cluster_expansion.git] / Lattice.h
blob8f06d36c858cd6202a653e1b7fa32bb49f9a7b04
1 #ifndef _LATTICE_H
2 #define _LATTICE_H
4 #include <blitz/array.h>
5 using namespace blitz;
7 #include "SymmetryOperations.h"
8 #include "Interactions.h"
10 enum Occupation {
11 empty = 0,
12 CO,
16 class LatticeLayer : public Array<Occupation, 2> {
17 public:
18 LatticeLayer& operator=(Occupation const& o);
20 friend ostream& operator<<(ostream& output, const LatticeLayer&);
24 class Lattice {
25 public:
27 Lattice(int Longitude = 0, int Latitude = 0, int UnitCellSizeX = 0, int UnitCellSizeY = 0) :
28 Latitude(Latitude), Longitude(Longitude),
29 UnitCellSizeX(UnitCellSizeX), UnitCellSizeY(UnitCellSizeY),
30 adsorbates(),
31 // XXX: this is crap...!!
32 surface() { adsorbates(2,2); };
34 int Latitude, Longitude;
35 int UnitCellSizeX, UnitCellSizeY;
37 LatticeLayer adsorbates;
38 LatticeLayer surface;
40 SymmetryOperations _symmetryOperations;
42 void extendUnitCell(void);
43 void assessInteractions(Interactions&);
45 private:
46 void extendUnitCell(LatticeLayer, int, int);
48 friend ostream& operator<<(ostream& output, const Lattice&);
52 #endif