Esempio n. 1
0
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QFont f("unexistent");
    f.setStyleHint(QFont::Monospace);
    ui->ui_inputPlainTextEdit->setFont(f);
    ui->ui_outputPlainTextEdit->setFont(f);

    setCurrentPath(QString());
    setModified(false);

    connect(ui->ui_sourceEditTableWidget, SIGNAL(cursorPositionChanged(int,int)), this, SLOT(cursorPositionChanged(int,int)));
    connect(ui->ui_sourceEditTableWidget, SIGNAL(textChanged()), this, SLOT(textChanged()));
    connect(ui->ui_newFileAction, SIGNAL(triggered()), this, SLOT(newFile()));
    connect(ui->ui_openFileAction, SIGNAL(triggered()), this, SLOT(openFile()));
    connect(ui->ui_saveFileAction, SIGNAL(triggered()), this, SLOT(saveFile()));
    connect(ui->ui_saveAsAction, SIGNAL(triggered()), this, SLOT(saveFileAs()));
    connect(ui->ui_quitAction, SIGNAL(triggered()), this, SLOT(close()));

    connect(ui->ui_setInterpreterAction, SIGNAL(triggered()), this, SLOT(setInterpreter()));
    connect(ui->ui_runInterpreterAction, SIGNAL(triggered()), this, SLOT(runInterpreter()));
}
void luaInterpreterWrapper::initEnvironment(const Time &t)
{
    assertParallel("initEnvironment");

    Pbug << "initEnvironment" << endl;

    setInterpreter();

    lua_pushstring(luaState_,"notAFunctionObject");
    lua_setglobal(luaState_,"functionObjectName");
    lua_pushstring(luaState_,getEnv("FOAM_CASE").c_str());
    lua_setglobal(luaState_,"caseDir");
    lua_pushstring(luaState_,(t.path()/t.caseSystem()).c_str());
    lua_setglobal(luaState_,"systemDir");
    lua_pushstring(luaState_,(t.path()/t.caseConstant()).c_str());
    lua_setglobal(luaState_,"constantDir");
    lua_pushstring(luaState_,(t.path()/t.constant()/"polyMesh").c_str());
    lua_setglobal(luaState_,"meshDir");
    if(Pstream::parRun()) {
        lua_pushstring(luaState_,t.path().c_str());
        lua_setglobal(luaState_,"procDir");
    }
    lua_pushboolean(luaState_,Pstream::parRun());
    lua_setglobal(luaState_,"parRun");
    lua_pushinteger(luaState_,Pstream::myProcNo());
    lua_setglobal(luaState_,"myProcNo");

    releaseInterpreter();
}
void luaInterpreterWrapper::setRunTime(const Time &time)
{
    assertParallel("setRunTime");

    Pbug << "setRunTime " << time.timeName() << endl;

    setInterpreter();

    lua_pushnumber(luaState_,time.value());
    lua_setglobal(luaState_,"runTime");
    lua_pushnumber(luaState_,time.endTime().value());
    lua_setglobal(luaState_,"endTime");
    lua_pushnumber(luaState_,time.deltaT().value());
    lua_setglobal(luaState_,"deltaT");
    lua_pushnumber(luaState_,time.deltaT0().value());
    lua_setglobal(luaState_,"deltaT0");
    lua_pushboolean(luaState_,time.outputTime());
    lua_setglobal(luaState_,"outputTime");
    lua_pushstring(luaState_,time.timeName().c_str());
    lua_setglobal(luaState_,"timeName");
    lua_pushstring(luaState_,(time.path()/time.timeName()).c_str());
    lua_setglobal(luaState_,"timeDir");
    lua_pushinteger(luaState_,time.timeIndex());
    lua_setglobal(luaState_,"timeIndex");

    releaseInterpreter();
}
pythonIntegrationFunctionObject::pythonIntegrationFunctionObject
(
    const word& name,
    const Time& t,
    const dictionary& dict
)
:
    simpleFunctionObject(
        name,
        t,
        dict
    ),
    pythonInterpreterWrapper(
        t.db(),
        dict
    ),
    time_(t)
{
    Pbug << "Constructor" << endl;

    if(!parallelNoRun()) {
        initEnvironment(t);

        setInterpreter();
        PyObject *m = PyImport_AddModule("__main__");
        PyObject_SetAttrString(
            m,
            "functionObjectName",
            PyString_FromString(this->name().c_str())
        );
        releaseInterpreter();

        setRunTime();
    }

    read(dict);
}
pythonFluIntegrationFunctionObject::pythonFluIntegrationFunctionObject
(
    const word& name,
    const Time& t,
    const dictionary& dict
)
:
    pythonIntegrationFunctionObject(name,t,dict)
{
    if(!executeCode("import Foam",false)) {
        FatalErrorIn("pythonFluIntegrationFunctionObject::pythonFluIntegrationFunctionObject")
            << "Python can not import module Foam. Probably no pythonFlu installed"
                << endl
                << exit(FatalError);
    }
    executeCode("import Foam.OpenFOAM as OpenFOAM",false,true);
    executeCode("import Foam.finiteVolume as finiteVolume",false,true);

    executeCode("from Foam.integrationHelpers.getObjectsFromPointers import getTimeFromPtr",false,true); // this should work, but doesn't
    // executeCode("from Foam.src.OpenFOAM.db.Time.Time import getTimeFromPtrOld as getTimeFromPtr",false,true); // This works

    if(!parallelNoRun()) {
        setInterpreter();

        PyObject *time=PyCObject_FromVoidPtr((void*)(&t),NULL);

        PyObject *m = PyImport_AddModule("__main__");
        PyObject_SetAttrString(m,"theTime",time);
        executeCode("time=getTimeFromPtr(theTime)",true,false);

        // Get rid of the helper stuff
        PyRun_SimpleString("del theTime");
        PyRun_SimpleString("del getTimeFromPtr");

        releaseInterpreter();
    }
}