implementation of getEnergy()
[cluster_expansion.git] / Lattice.h
blob35d6734d39999fc8ea014a78e7b7c9ee59065b78
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 GranularityX = 0, int GranularityY = 0, int UnitCellSizeX = 0, int UnitCellSizeY = 0) :
28 GranularityX(GranularityX), GranularityY(GranularityY),
29 UnitCellSizeX(UnitCellSizeX), UnitCellSizeY(UnitCellSizeY),
30 adsorbates(),
31 // XXX: this is crap...!!
32 surface() { adsorbates(2,2); };
34 int GranularityX, GranularityY;
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