]> git.treefish.org Git - phys/latlib.git/blob - o815/o815.h
...
[phys/latlib.git] / o815 / o815.h
1 #ifndef O815_H
2 #define O815_H
3
4 #include <string>
5 #include <vector>
6 #include <mpi.h>
7 #include <stdlib.h>
8
9 #include "latlib/paraq.h"
10 #include "latlib/writeout.h"
11
12 using namespace std;
13
14 class obs;
15
16 class o815 {
17  public:
18
19   class obs {
20   public:
21     obs(const string& _obsid, const string& _datadesc, o815 *_O815, const int& _obsmemSize);
22     void finish();
23     void meas();
24     void start();
25     string getDataDesc() { return datadesc; };
26   private:
27     virtual void _meas(bool loadedobs)=0;
28     virtual void _finish()=0;
29     virtual void _start()=0;
30   protected:
31     o815 *O815;
32     char *obsMem;
33     string obsid, simid, datadesc;
34     ostream *out, *log;
35     int ocid;
36   };
37
38   class sim {
39   public:
40     sim(o815 *_O815, const int& _confmemSize);
41     void nextConfig();
42     bool toEquilibrate;
43     char *confMem;
44   private:
45     virtual void _reset()=0;
46     virtual void _makeSweep(int nsweep)=0;
47   protected:
48     o815 *O815;
49     ostream *log;
50     int nequi, nskip;
51   };
52
53   struct {
54     int nmeas;
55     int nskip;
56     int nequi;
57     int lsize[2];
58     pair<string,int> obscache;
59     pair<string,int> confcache;
60     string outdir;
61     bool idonly;
62     bool showjobnum;
63   } comargs;
64
65   o815(int argc, char **argv, const string& programid);
66   ~o815();
67   paraq *paraQ;
68   writeout *out;
69   vector<obs*> observables;
70   sim* Sim;
71   void mainLoop();
72   string headMaster();
73
74 private:
75   MPI_Status mpiStatus;
76   int numprocs, rank;
77   static void listArg(int *target, int tlen, char *listarg);
78   void parseArgs(int argc, char **argv);
79   string programid;
80   int nextParas();
81 };
82
83 #endif