#include <vector>
#include <mpi.h>
#include <stdlib.h>
+#include <getopt.h>
#include "latlib/paraq.h"
#include "latlib/writeout.h"
+#include "latlib/hypercache.h"
using namespace std;
class obs {
public:
- obs(const string& _obsid, const string& _datadesc, o815 *_O815);
+ obs(const string& _obsid, const string& _datadesc, o815 *_O815, const int& _obsmemSize);
void finish();
- void meas();
+ void meas(bool loadedobs);
void start();
string getDataDesc() { return datadesc; };
+ int ocid;
+ string obsid;
private:
virtual void _meas(bool loadedobs)=0;
virtual void _finish()=0;
protected:
o815 *O815;
char *obsMem;
- ostream *oout;
- ostream *olog;
- string obsid, datadesc;
+ string simid, datadesc;
+ ostream *out, *log;
+ paraq* paraQ;
+ };
+
+ class sim {
+ public:
+ sim(o815 *_O815, const int& _confmemSize);
+ void nextConfig();
+ char *confMem;
+ virtual void _newParas() {};
+ private:
+ virtual void _reset()=0;
+ virtual void _makeSweep()=0;
+ protected:
+ o815 *O815;
+ ostream *log;
+ int nequi, nskip, confmemSize;
};
struct {
pair<string,int> obscache;
pair<string,int> confcache;
string outdir;
- bool idonly;
- bool showjobnum;
+ int idonly;
+ int showjobnum;
} comargs;
- o815(int argc, char **argv, const string& programid);
+ struct comoption {
+ string name;
+ int has_arg;
+ int *flag;
+ int val;
+ string optdesc;
+ string argdesc;
+ };
+
+ o815(int argc, char **argv, const string& _programid, comoption specOps[]=NULL, void (*helpHeader)()=NULL);
~o815();
paraq *paraQ;
writeout *out;
vector<obs*> observables;
+ sim* Sim;
void mainLoop();
string headMaster();
+ void addPara(const string& paraid, const double& paraDefault);
+ void addComOption(const char* name, int has_arg, int *flag, int val, const char* optdesc, const char* argdesc);
+ vector< pair<int,char*> > parsedSpecOps;
+ vector<char*> lonelyArgs;
private:
+ vector<comoption> comOptions;
MPI_Status mpiStatus;
int numprocs, rank;
static void listArg(int *target, int tlen, char *listarg);
- void parseArgs(int argc, char **argv);
+ void parseArgs(int argc, char **argv, comoption specOps[]);
string programid;
+ int nextParas();
+ comoption* getOptionByVal(int val);
};
#endif