X-Git-Url: http://git.treefish.org/~alex/phys/latlib.git/blobdiff_plain/46e492935d31a36641b8e8a5cd27bd86e7df96c4..94af0f788c0a84b3494723adfa3e5ce55edc1b43:/o815/o815.cpp?ds=inline diff --git a/o815/o815.cpp b/o815/o815.cpp index 9afaa0c..49b3ed8 100644 --- a/o815/o815.cpp +++ b/o815/o815.cpp @@ -10,8 +10,6 @@ using namespace std; extern int opterr; o815::o815(int argc, char **argv, const string& _programid, comoption specOps[], void (*helpHeader)()) { - long timestamp; - programid = _programid; comargs.nmeas = 100; @@ -29,8 +27,6 @@ o815::o815(int argc, char **argv, const string& _programid, comoption specOps[], MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); - paraQ = new paraq(numprocs, rank); - addComOption("lsize", required_argument, NULL, 'L', "define lattice size", "xsize:tsize"); addComOption("nmeas", required_argument, NULL, 'N', "set number of measurements", "nmeas"); addComOption("skip", required_argument, NULL, 'S', "set number of skips between configs", "nskip"); @@ -90,6 +86,12 @@ o815::o815(int argc, char **argv, const string& _programid, comoption specOps[], exit(0); } + paraQ = new paraq(numprocs, rank); +} + +void o815::postParaInit() { + long timestamp; + if(comargs.idonly) { cout << programid << headMaster() << endl << flush; exit(0); @@ -141,18 +143,20 @@ void o815::mainLoop() { bool readnewObs; int nequileftNewObs; - hypercache::readO( (*obsit)->ocid, readnewObs, nequileftNewObs ); + hypercache::readO( (*obsit)->ocid, &readnewObs, &nequileftNewObs ); - if( ! readnewObs ) { + if ( readnewObs && nequileftNewObs < 0 ) { + (*obsit)->meas(true); + } + else { if (!nextAlready) { Sim->nextConfig(); nextAlready = true; } (*obsit)->meas(false); - hypercache::writeO( (*obsit)->ocid, comargs.nmeas ); + hypercache::writeO( (*obsit)->ocid ); } - else - (*obsit)->meas(true); + } while( measProg.madeStep(imeas) ) *out->log << "O815: " << measProg.done()*100 << "% of measurements done." << endl << flush;