47 #include <Xyce_config.h>
52 #include <N_UTL_fwd.h>
53 #include <N_UTL_Misc.h>
57 #include "N_LAS_Vector.h"
58 #include "N_LAS_Matrix.h"
59 #include "Epetra_MapColoring.h"
60 #include "N_ERH_ErrorMgr.h"
72 (Xyce::NodeNamePairMap & op_in,
73 const Teuchos::RefCountPtr <Epetra_MapColoring>& color_map,
74 N_LAS_Vector* cloneVector
79 color_map_ = color_map;
80 tmp_vector_ptr_ =
new N_LAS_Vector(*cloneVector);
105 (
const N_LAS_Vector * solution, N_LAS_Vector * residual_vector)
108 cout <<
"Inside AugmentLinSysIC::augmentResidual:" << endl;
111 Xyce::NodeNamePairMap::iterator op_i = op_.begin();
112 Xyce::NodeNamePairMap::iterator op_end = op_.end();
113 for ( ; op_i != op_end ; ++op_i)
115 int row = (*op_i).second.first;
118 if ( (*color_map_)[row] == 0)
120 (*residual_vector)[row] = 0.0;
137 cout <<
"Inside AugmentLinSysIC::augmentJacobian:" << endl;
140 std::vector<int> col;
141 std::vector<double> val;
142 Xyce::NodeNamePairMap::iterator op_i = op_.begin();
143 Xyce::NodeNamePairMap::iterator op_end = op_.end();
145 jacobian->getDiagonal(*tmp_vector_ptr_);
147 for ( ; op_i != op_end ; ++op_i)
149 int row = (*op_i).second.first;
153 if ( (*color_map_)[row] == 0)
155 rowLen = jacobian->getLocalRowLength(row);
157 col.resize(rowLen,0);
158 val.resize(rowLen,0.0);
159 jacobian->getLocalRowCopy(row, rowLen, numEntries, &val[0], &col[0]);
162 for (
int i=0;i<val.size();++i) val[i] = 0.0;
164 jacobian->putLocalRow(row, rowLen, &val[0], &col[0]);
167 (*tmp_vector_ptr_)[row] = 1.0;
171 jacobian->replaceDiagonal(*tmp_vector_ptr_);