--- trunk/gadget/gadget.cc 2017/05/08 07:59:53 26 +++ trunk/gadget/gadget.cc 2017/05/08 11:58:23 27 @@ -13,6 +13,7 @@ Ecosystem* EcoSystem; StochasticData* data = 0; Ecosystem** EcoSystems; +MainInfo _main; volatile int interrupted = 0; volatile int interrupted_print = 0; @@ -20,7 +21,7 @@ int main(int aNumber, char* const aVector[]) { - MainInfo main; + // omp_set_num_threads(4); @@ -53,42 +54,42 @@ if (chdir(workingdir) != 0) //JMB change back to where we were ... handle.logMessage(LOGFAIL, "Error - failed to change working directory to", workingdir); - main.read(aNumber, aVector); - main.checkUsage(inputdir, workingdir); + _main.read(aNumber, aVector); + _main.checkUsage(inputdir, workingdir); if (chdir(inputdir) != 0) handle.logMessage(LOGFAIL, "Error - failed to change input directory to", inputdir); - EcoSystem = new Ecosystem(main); + EcoSystem = new Ecosystem(_main); #ifdef INTERRUPT_HANDLER //JMB dont register interrupt if doing a network run - if (!(main.runNetwork())) + if (!(_main.runNetwork())) registerInterrupts(&interrupted); #endif if (chdir(workingdir) != 0) handle.logMessage(LOGFAIL, "Error - failed to change working directory to", workingdir); - if ((main.getPI()).getPrint()) - EcoSystem->writeInitialInformation((main.getPI()).getOutputFile()); + if ((_main.getPI()).getPrint()) + EcoSystem->writeInitialInformation((_main.getPI()).getOutputFile()); - if (main.runStochastic()) { - if (main.runNetwork()) { + if (_main.runStochastic()) { + if (_main.runNetwork()) { #ifdef GADGET_NETWORK //to help compiling when pvm libraries are unavailable EcoSystem->Initialise(); data = new StochasticData(); while (data->getDataFromNetwork()) { EcoSystem->Update(data); - EcoSystem->Simulate(main.runPrint()); + EcoSystem->Simulate(_main.runPrint()); data->sendDataToNetwork(EcoSystem->getLikelihood()); data->readNextLineFromNetwork(); } delete data; #endif - } else if (main.getInitialParamGiven()) { + } else if (_main.getInitialParamGiven()) { if (chdir(inputdir) != 0) //JMB need to change back to inputdir to read the file handle.logMessage(LOGFAIL, "Error - failed to change input directory to", inputdir); - data = new StochasticData(main.getInitialParamFile()); + data = new StochasticData(_main.getInitialParamFile()); if (chdir(workingdir) != 0) handle.logMessage(LOGFAIL, "Error - failed to change working directory to", workingdir); @@ -96,21 +97,21 @@ EcoSystem->checkBounds(); EcoSystem->Initialise(); - if (main.printInitial()) { + if (_main.printInitial()) { EcoSystem->Reset(); //JMB only need to call reset() before the print commands - EcoSystem->writeStatus(main.getPrintInitialFile()); + EcoSystem->writeStatus(_main.getPrintInitialFile()); } - EcoSystem->Simulate(main.runPrint()); - if ((main.getPI()).getPrint()) + EcoSystem->Simulate(_main.runPrint()); + if ((_main.getPI()).getPrint()) EcoSystem->writeValues(); while (data->isDataLeft()) { data->readNextLine(); EcoSystem->Update(data); EcoSystem->checkBounds(); - EcoSystem->Simulate(main.runPrint()); - if ((main.getPI()).getPrint()) + EcoSystem->Simulate(_main.runPrint()); + if ((_main.getPI()).getPrint()) EcoSystem->writeValues(); } delete data; @@ -120,24 +121,24 @@ handle.logMessage(LOGWARN, "Warning - no parameter input file given, using default values"); EcoSystem->Initialise(); - if (main.printInitial()) { + if (_main.printInitial()) { EcoSystem->Reset(); //JMB only need to call reset() before the print commands - EcoSystem->writeStatus(main.getPrintInitialFile()); + EcoSystem->writeStatus(_main.getPrintInitialFile()); } - EcoSystem->Simulate(main.runPrint()); - if ((main.getPI()).getPrint()) + EcoSystem->Simulate(_main.runPrint()); + if ((_main.getPI()).getPrint()) EcoSystem->writeValues(); } - } else if (main.runOptimise()) { + } else if (_main.runOptimise()) { if (EcoSystem->numVariables() == 0) handle.logMessage(LOGFAIL, "Error - no parameters can be optimised"); - if (main.getInitialParamGiven()) { + if (_main.getInitialParamGiven()) { if (chdir(inputdir) != 0) //JMB need to change back to inputdir to read the file handle.logMessage(LOGFAIL, "Error - failed to change input directory to", inputdir); - data = new StochasticData(main.getInitialParamFile()); + data = new StochasticData(_main.getInitialParamFile()); if (chdir(workingdir) != 0) handle.logMessage(LOGFAIL, "Error - failed to change working directory to", workingdir); @@ -147,23 +148,23 @@ handle.logMessage(LOGFAIL, "Error - no parameter input file specified"); EcoSystem->Initialise(); - if (main.printInitial()) { + if (_main.printInitial()) { EcoSystem->Reset(); //JMB only need to call reset() before the print commands - EcoSystem->writeStatus(main.getPrintInitialFile()); + EcoSystem->writeStatus(_main.getPrintInitialFile()); } #ifdef _OPENMP - if (main.runParallel()){ + if (_main.runParallel()){ int numThr = omp_get_max_threads ( ); handle.logMessage(LOGINFO, "Info - initialise ", numThr," EcoSystems "); EcoSystems = new Ecosystem*[numThr]; int i; -#pragma omp parallel for shared(EcoSystems,main,data,handle) +#pragma omp parallel for shared(EcoSystems,_main,data,handle) for (i=0; iUpdate(data); EcoSystems[i]->checkBounds(); } @@ -173,17 +174,17 @@ #endif EcoSystem->Optimise(); delete data; - if (main.getForcePrint()) - EcoSystem->Simulate(main.getForcePrint()); + if (_main.getForcePrint()) + EcoSystem->Simulate(_main.getForcePrint()); } handle.logMessage(LOGMESSAGE, ""); //write blank line to log file - if (main.printFinal() && !(main.runNetwork())) - EcoSystem->writeStatus(main.getPrintFinalFile()); + if (_main.printFinal() && !(_main.runNetwork())) + EcoSystem->writeStatus(_main.getPrintFinalFile()); //JMB print final values of parameters - if (!(main.runNetwork())) - EcoSystem->writeParams((main.getPI()).getParamOutFile(), (main.getPI()).getPrecision()); + if (!(_main.runNetwork())) + EcoSystem->writeParams((_main.getPI()).getParamOutFile(), (_main.getPI()).getPrecision()); if (check) free(workingdir);