//----------------------------------------------------------------------------- void ctkAbstractPythonManager::initPythonQt(int flags) { Q_D(ctkAbstractPythonManager); PythonQt::init(flags); // Python maps SIGINT (control-c) to its own handler. We will remap it // to the default so that control-c works. #ifdef SIGINT signal(SIGINT, SIG_DFL); #endif PythonQtObjectPtr _mainContext = PythonQt::self()->getMainModule(); this->connect(PythonQt::self(), SIGNAL(pythonStdOut(QString)), SLOT(printStdout(QString))); this->connect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), SLOT(printStderr(QString))); PythonQt_init_QtBindings(); QStringList initCode; // Update 'sys.path' initCode << "import sys"; foreach (const QString& path, this->pythonPaths()) { initCode << QString("sys.path.append('%1')").arg(QDir::fromNativeSeparators(path)); } _mainContext.evalScript(initCode.join("\n")); this->preInitialization(); if (d->InitFunction) { (*d->InitFunction)(); } emit this->pythonPreInitialized(); this->executeInitializationScripts(); emit this->pythonInitialized(); }
int GrassPro::createRegion(){ int j, k; double x, z, y, diameter, zCord; int atomStep = 0, moleculeId=1; // open the data file for writing dataFile = fopen(dataFName.c_str(), "w"); gatherInfo(); fprintf(stderr, "Creating Lattice, please wait...\n"); // Print atom bond and angle info fprintf(dataFile,"\n%d atoms\n", atomNum); fprintf(dataFile,"\n%d atom types\n", atomType); fprintf(dataFile,"%d bonds\n", objNum*(objAtoms-1)); fprintf(dataFile,"%d bond types\n", bondType); // Print box bounds fprintf(dataFile, "\n%g %g xlo xhi\n", dim[0], dim[1]); fprintf(dataFile, "%g %g ylo yhi\n", dim[2], dim[3]); fprintf(dataFile, "%g %g zlo zhi\n", dim[4], dim[5]); // Print Atoms fprintf(dataFile, "\nAtoms\n\n"); for(x=dim[0]+radius; x<(dim[1]-radius) || areSame(x,(dim[1]-radius)); x+=(2.0*radius+sphereSep)){ for(y=dim[2]+radius; y<(dim[3]-radius) || areSame(y, (dim[3]-radius)); y+=(2.0*radius+sphereSep)){ if(FLAG_RAND){ /*diameter = 2.0*radius; zCord = dim[4]+radius; while((diameter > (2.0*cutOff)) && (zCord+diameter) < dim[5]){ atomStep++; // Print atomNumber atomType xCord yCord zCord diameter density moleculeID fprintf(dataFile, "%d %d %g %g %g %g %g %d\n", atomStep, 1, x, y, zCord, diameter, atomDensity, moleculeId); diameter *= scaleFactor; zCord += sphereSep+diameter;*/ } else { diameter = 2.0*radius; zCord = dim[4]+radius; while(((diameter > (2.0*cutOff))) && ((zCord+(1.0/2.0)*diameter) < dim[5])){ atomStep++; // Print atomNumber atomType xCord yCord zCord diameter density moleculeID if(areSame(zCord, dim[4]+radius)) fprintf(dataFile, "%d %d %g %g %g %g %g %d\n", atomStep, 2, x, y, zCord, diameter, atomDensity, moleculeId); else fprintf(dataFile, "%d %d %g %g %g %g %g %d\n", atomStep, 1, x, y, zCord, diameter, atomDensity, moleculeId); zCord += (1.0/2.0)*diameter; diameter *= scaleFactor; zCord += (1.0/2.0)*diameter; // fprintf(stderr, "d: %g, cutoff: %g, zcord: %g\n", diameter, cutOff, zCord); } } } } // Print Bonds fprintf(dataFile, "\nBonds\n\n"); for(j=0; j < objNum; j++){ for(k=1; k < objAtoms; k++){ fprintf(dataFile, "%d %d %d %d\n", j*objAtoms+(k-j), bondType, j*objAtoms+k, j*objAtoms+k+1); } } fclose(dataFile); printInfo(); printStderr(); }