int main(int argc, char *argv[])
{
    int i, j, numSteps, startRow, startCol, endRow, endCol;
    double initialTemp;

    /* Initialization step */
    std::vector< std::vector<double> > currGrid(NROWS, std::vector<double>(NCOLS));
    std::vector< std::vector<double> > nextGrid(NROWS, std::vector<double>(NCOLS));
    /* Initial conditions */
    initialTemp = 100;
    currGrid[0].assign(NCOLS, initialTemp);
    currGrid[NROWS-1].assign(NCOLS, initialTemp);
    nextGrid[0].assign(NCOLS, initialTemp);
    nextGrid[NROWS-1].assign(NCOLS, initialTemp);  


    printGrid(currGrid);

    numSteps = 3;
    startRow = 1;
    startCol = 0;
    endRow = NROWS-1 ;
    endCol = NCOLS ;

    for(i = 0;i < numSteps;i++)
    {
        std::cout << "------------------Step " << i << "-----------------------" << std::endl;
        diffuse(currGrid, nextGrid, startRow, startCol, endRow, endCol, i);

    }


    return 0;
}
Esempio n. 2
0
returnValue ModelData::setMeasurements( const Vector& numberMeasurements ){

	int i;
	if( outputExpressions.size() != numberMeasurements.getDim() && outputNames.size() != numberMeasurements.getDim() ) {
		return ACADOERROR( RET_INVALID_OPTION );
	}
	outputGrids.clear();
	num_meas.clear();
	for( i = 0; i < (int)numberMeasurements.getDim(); i++ ) {
		Grid nextGrid( 0.0, 1.0, (int)numberMeasurements(i) + 1 );
		outputGrids.push_back( nextGrid );

		uint numOuts = (int) ceil((double)outputGrids[i].getNumIntervals()/((double) N) - 10.0*EPS);
		num_meas.push_back( numOuts );
	}

    return SUCCESSFUL_RETURN;
}
Esempio n. 3
0
bool Solver::solve(Grid& solution, int& steps, Grid& grid) {
  int index = selectIndex(grid);

  if (index == -1) {
    solution = grid;
    return true;
  }

  vector<int> moves(begin(grid[index]), end(grid[index]));
  sortMoves(grid, moves, index);

  for (auto& value : moves) {
    steps++;

    Grid nextGrid(grid);
    if (nextGrid.assign(index, value) && solve(solution, steps, nextGrid))
      return true;
  }

  return false;
}