grammar * getgrammar(char *filename) { FILE *fp; node *n; grammar *g0, *g; perrdetail err; fp = fopen(filename, "r"); if (fp == NULL) { perror(filename); Py_Exit(1); } g0 = meta_grammar(); n = PyParser_ParseFile(fp, filename, g0, g0->g_start, (char *)NULL, (char *)NULL, &err); fclose(fp); if (n == NULL) { fprintf(stderr, "Parsing error %d, line %d.\n", err.error, err.lineno); if (err.text != NULL) { size_t len; int i; fprintf(stderr, "%s", err.text); len = strlen(err.text); if (len == 0 || err.text[len-1] != '\n') fprintf(stderr, "\n"); for (i = 0; i < err.offset; i++) { if (err.text[i] == '\t') putc('\t', stderr); else putc(' ', stderr); } fprintf(stderr, "^\n"); PyObject_FREE(err.text); } Py_Exit(1); } g = pgen(n); PyNode_Free(n); if (g == NULL) { printf("Bad grammar.\n"); Py_Exit(1); } return g; }
void PottsSim(struct parameters params, std::string filename, const int & id, std::string mode){ std::chrono::high_resolution_clock::time_point t1; std::chrono::high_resolution_clock::time_point t2; std::string strategy; std::ofstream ofile; ofile.open(filename, std::ios::app); // if(mode == "auto"){ // if( ((__fpv)params.N / params.C < 1.7) && (params.N > 1500) ){ // strategy = "hc"; // }else{ // strategy = "lc"; // } // } t1 = std::chrono::high_resolution_clock::now(); //Random seed init std::default_random_engine generator; //generator.seed(12345); /*************************************************************************** INITIALIZATION ***************************************************************************/ PatternGen pgen( params.N, //N params.p, //p params.S, //S params.a, //a params.beta, //beta params.N_fact, //N_fact params.Num_fact, //Num_fact params.a_fact, //a_fact params.eps, //eps params.a_pf, //a_pf params.fact_eigen_slope //fact_eigen_slope ); pgen.generate(); //Create the network //generator.seed(12345); LC_PNet pnet(params.N, params.C, params.S ); //Connect units pnet.connect_units(generator); pnet.init_network(params.beta,params.U,params.p,params.a,pgen.get_patt()); /*************************************************************************** DYNAMICS ***************************************************************************/ std::cout << "STARTING DYNAMICS" << std::endl; //Start the dynamics t1 = std::chrono::high_resolution_clock::now(); pnet.start_dynamics(generator, params.p, params.tstatus, //tstatus (tempostampa) params.nupdates, //Number of updates pgen.get_patt(), 0, //Pattern number params.a, params.U, params.w, params.g, params.tau * params.N, //tau params.b1, //b1 params.b2, //b2 params.b3, //b3 params.beta, //beta 500*params.N //tx (n0) ); t2 = std::chrono::high_resolution_clock::now(); //Save all the data needed in a file auto duration = std::chrono::duration_cast<std::chrono::milliseconds>( t2 - t1 ).count(); std::cout << "DURATION: " << duration << std::endl; ofile << "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"<< std::endl; ofile << std::setw(30) << std::left << "SIM #" << id << std::endl; ofile << "---------------------------------------------------------------------------------"<< std::endl; ofile << std::setw(30) << std::left << "SIM ELAPSED TIME(ms): "<< duration << std::endl; ofile << "---------------------------------------------------------------------------------"<< std::endl; ofile << std::setw(30) << std::left << "LATCHING LENGTH: "<< pnet.latching_length << std::endl; ofile << "//////////////////////////////////////////////////////////////////////////////////"<< std::endl; ofile.close(); }
grammar * Py_pgen(node *n) { return pgen(n); }