X-Git-Url: http://git.treefish.org/~alex/phys/latlib.git/blobdiff_plain/f2373be314dc298d602b1939cde3d5ae990dd07f..c819c7a5996c18a6b1c5501c1984245840ddc8ca:/o815/o815.h?ds=sidebyside diff --git a/o815/o815.h b/o815/o815.h index 932af0f..0e2a611 100644 --- a/o815/o815.h +++ b/o815/o815.h @@ -3,11 +3,12 @@ #include #include -#include #include +#include #include "latlib/paraq.h" #include "latlib/writeout.h" +#include "latlib/hypercache.h" using namespace std; @@ -18,21 +19,43 @@ class o815 { class obs { public: - obs(const string& _obsid, const string& _datadesc, o815 *_O815); + obs(const string& _obsid, const string& _datadesc, o815 *_O815, const int& _obsmemSize, const string& _obsidpostfix=""); void finish(); - void meas(); + void meas(bool loadedobs, const int& nthmeas); void start(); string getDataDesc() { return datadesc; }; + int ocid; + string obsid; + string obsidpostfix; private: - virtual void _meas(bool loadedobs)=0; + virtual void _meas(bool loadedobs, const int& nthmeas)=0; virtual void _finish()=0; virtual void _start()=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); + ~sim (); + void nextConfig(); + char *confMem; + virtual void _newParas()=0; + int nequi, nskip; + void resetConfig(); + private: + virtual void _makeSweep()=0; + virtual void _resetConfig()=0; + char *startConfiguration; + protected: + o815 *O815; + ostream *log; + int confmemSize; }; struct { @@ -43,24 +66,44 @@ class o815 { pair obscache; pair confcache; string outdir; - bool idonly; - bool showjobnum; + int idonly; + int showjobnum; + string startconfig; } 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); + void postParaInit(); ~o815(); paraq *paraQ; writeout *out; vector observables; + sim* Sim; void mainLoop(); - string headMaster(); + string headMaster( bool hashedrange=false ); + 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 > parsedSpecOps; + vector lonelyArgs; private: - MPI_Status mpiStatus; + vector comOptions; 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); + static void readCacheArgs(const string& arg, string& cachedir, int& cachemode); + unsigned long hash(const string& str); }; #endif