예제 #1
0
//-----------------------------------------------------------------------------
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();
}
예제 #2
0
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();
}