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