X-Git-Url: http://git.treefish.org/~alex/phys/latlib.git/blobdiff_plain/3db2602cfe30c61445e89cc334541ebb4ff76ed8..1a5483766d4056eec087099f2e411aef51b63cf5:/o815/o815.cpp?ds=sidebyside diff --git a/o815/o815.cpp b/o815/o815.cpp index 956eb09..9cd3f7b 100644 --- a/o815/o815.cpp +++ b/o815/o815.cpp @@ -50,6 +50,27 @@ o815::o815(int argc, char **argv, const string& _programid) { out = new writeout(comargs.outdir, programid+headMaster(), rank, numprocs, timestamp); } +void o815::mainLoop() { + *out->log << "OBS: Starting main loop." << endl; + + for (vector::iterator obsit = observables.begin(); obsit != observables.end(); ++obsit) + (*obsit)->start(); + + while( nextParas() ) { + } + + /* + for (int i=0; i<100; i++) { + for (vector::iterator obsit = observables.begin(); obsit != observables.end(); ++obsit) { + (*obsit)->meas(); + } + } + */ + + for (vector::iterator obsit = observables.begin(); obsit != observables.end(); ++obsit) + (*obsit)->finish(); +} + void o815::parseArgs(int argc, char **argv) { int opt = 0; @@ -121,3 +142,23 @@ string o815::headMaster() return hm.str(); } +o815::~o815() { + if(comargs.outdir=="") { + MPI_Barrier(MPI_COMM_WORLD); + if(rank==0) + cout << "#end" << endl << flush; + } + delete out; + MPI_Finalize(); +} + +int o815::nextParas() +{ + if( paraQ->nextParas() ) { + for (vector::iterator parait = paraQ->allParaIds.begin(); parait != paraQ->allParaIds.end(); ++parait) + hypercache::setPara(*parait, (*paraQ)[*parait]); + return 1; + } + else + return 0; +}