Merge commit 'origin/dev_work_dani' into dev_work
[cluster_expansion.git] / Lattice.h
blob802230b5333eba51889214564b2012884341bed8
1 #ifndef _LATTICE_H
2 #define _LATTICE_H
4 #include <blitz/array.h>
5 using namespace blitz;
7 #include "Interactions.h"
9 enum Occupation {
10 empty = 0,
11 CO,
15 class LatticeLayer : public Array<Occupation, 2> {
16 public:
17 LatticeLayer& operator=(Occupation const& o);
19 friend ostream& operator<<(ostream& output, const LatticeLayer&);
23 class Lattice {
24 public:
26 Lattice(int Longitude = 0, int Latitude = 0, int UnitCellSizeX = 0, int UnitCellSizeY = 0) :
27 Latitude(Latitude), Longitude(Longitude),
28 UnitCellSizeX(UnitCellSizeX), UnitCellSizeY(UnitCellSizeY),
29 adsorbates(),
30 // XXX: this is crap...!!
31 surface() { adsorbates(2,2); };
33 int Latitude, Longitude;
34 int UnitCellSizeX, UnitCellSizeY;
36 LatticeLayer adsorbates;
37 LatticeLayer surface;
39 void extendUnitCell(void);
40 void assessInteractions(Interactions&);
41 double getEnergy(void);
43 private:
44 void extendUnitCell(LatticeLayer, int, int);
46 friend ostream& operator<<(ostream& output, const Lattice&);
50 #endif