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; }
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; }
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; }