Exemple #1
0
void Grid::init( Setting& cfg){

    mNx = cfg.lookup("cells.x");
    mNy = cfg.lookup("cells.y");
    mLx = cfg.lookup("size.x");
    mLy = cfg.lookup("size.y");

    // Boundary size, hardcoded
    mBound = 2;

    // Determine grid parameters
    mDx = mLx/mNx;
    mDy = mLy/mNy;
    mSizeX = mNx + 2*mBound;
    mSizeY = mNy + 2*mBound;
    mStartX = mBound;
    mStartY = mBound;
    mEndX = mBound + mNx;
    mEndY = mBound + mNy;

    // Initialise pointers
    int size   = mSizeX * mSizeY;
    pState     = new vector<StateVector>(size);
    pStateRef  = new vector<StateVector>(size);
    pFlux      = new vector<FluxVector>(size);
    pGeometry  = new vector<BoundaryGeometry>(size);

    // Initialise LevelSet
    pLevelSet = new LevelSet(mNx,mNy,mBound,mDx,mDy,mLx,mLy);
    pLevelSet->init();

    return;
}
std::map<unsigned int, Encoder>
config_get_encoder_gpios(const Setting &c)
{
    std::map<unsigned int, Encoder> gpios;

    gpios[unsigned(c.lookup("gpioA"))] = Encoder::A;
    gpios[unsigned(c.lookup("gpioB"))] = Encoder::B;
    gpios[unsigned(c.lookup("gpioC"))] = Encoder::C;
    gpios[unsigned(c.lookup("gpioD"))] = Encoder::D;

    return gpios;
}
RaspberryPiController::RaspberryPiController(const Setting &cfg)
    : StageController(cfg),
      motor_cw_gpio(unsigned(cfg.lookup("motor_cw_gpio"))),
      motor_ccw_gpio(unsigned(cfg.lookup("motor_ccw_gpio"))),
      encoder_gpios(config_get_encoder_gpios(cfg))
{
    gpioSetMode(motor_cw_gpio, PI_OUTPUT);
    gpioSetMode(motor_ccw_gpio, PI_OUTPUT);

    for (auto& g: encoder_gpios)
    {
        gpioSetMode(g.first, PI_INPUT);
        gpioSetAlertFuncEx(g.first, static_encoder_callback, this);
    }

}
void BoundaryModuleDrivenBase::init( Grid* pGrid, Setting& cfg){
    BoundaryModule::init(pGrid,cfg);
    Setting& params = cfg.lookup("params");
    string polString = params.lookup("polarisation");
    if( polString == "x" || polString == "TE") mPOL = TE;
    if( polString == "y" || polString == "TM") mPOL = TM;
    return;
}