14 std::vector<std::map<int,double> > data;
19 std::map<int,double> init;
20 init.insert(std::pair<int,double>(0,0.0));
21 for(
int i=0;i<rows;i++){
33 bool exists(
int row,
int col){
34 std::map<int,double> &rowmap = data[row];
35 if(rowmap.find(col) != rowmap.end()){
41 void create(
int row,
int col){
42 std::map<int,double> &rowmap = data[row];
43 rowmap.insert(std::pair<int,double>(col,0.0));
46 double& value(
int row,
int col){
47 std::map<int,double> &rowmap = data[row];
51 Matrix multiply(Matrix &b){
53 if(b.getCols() != 1 || b.getRows() != rows){
54 std::cerr<<
"Stencil vector multiplication not possible";
56 for(
int i=0;i<rows;i++){
58 for(std::map<int,double>::iterator it = data[i].begin();it != data[i].end(); it++){
59 c.value(i,0) += b.value(it->first,0)*(it->second);