X-Git-Url: http://git.treefish.org/~alex/phys/latlib.git/blobdiff_plain/71e93c2cca7c6f967c3c77c3e26c037ad4f4f555..07516f0b1615a95f3e68d073adf4cfda584b99fa:/o815/sim.cpp?ds=sidebyside diff --git a/o815/sim.cpp b/o815/sim.cpp index ec1ca89..70fe482 100644 --- a/o815/sim.cpp +++ b/o815/sim.cpp @@ -3,6 +3,8 @@ #include "latlib/hypercache.h" #include "latlib/progress.h" +#include "latlib/datread.h" + o815::sim::sim(o815 *_O815, const int& _confmemSize) { O815 = _O815; log = O815->out->log; @@ -10,6 +12,35 @@ o815::sim::sim(o815 *_O815, const int& _confmemSize) { nequi = O815->comargs.nequi; nskip = O815->comargs.nskip; confmemSize = confmemSize; + + startConfiguration = NULL; + + if ( O815->comargs.startconfig != "" ) { + *log << "SIM: Fetching startconfig from " << O815->comargs.startconfig << endl; + + datread dataReader(confmemSize); + dataReader.openFile(O815->comargs.startconfig); + + if ( dataReader.fisopen() ) { + startConfiguration = new char[confmemSize]; + + if ( dataReader.readFullBlock(startConfiguration) < 0 ) { + *log << "SIM: Error while reading config from " << O815->comargs.startconfig << endl; + delete[] startConfiguration; + startConfiguration = NULL; + } + } + else { + *log << "SIM: Could not open startconfigfile " << O815->comargs.startconfig << endl; + } + } + +} + +o815::sim::~sim () +{ + if (startConfiguration != NULL) + delete[] startConfiguration; } void o815::sim::nextConfig() { @@ -35,3 +66,10 @@ void o815::sim::nextConfig() { hypercache::writeC(); } } + +void o815::sim::resetConfig() { + if ( startConfiguration != NULL ) + memcpy(confMem, startConfiguration, confmemSize); + else + _resetConfig(); +}