47 #include <Xyce_config.h>
54 #include "N_LAS_Vector.h"
55 #include "N_LAS_Matrix.h"
56 #include "Epetra_MapColoring.h"
69 (
const Teuchos::RefCountPtr<Epetra_MapColoring>&
71 N_LAS_Vector* cloneVector,
72 bool useVoltageScaleFactor,
73 double voltageScaleFactor)
75 use_voltage_scale_factor_ = useVoltageScaleFactor;
76 voltage_scale_factor_ = voltageScaleFactor;
77 color_map_ = color_map;
78 tmp_vector_ptr_ =
new N_LAS_Vector(*cloneVector);
104 (
double time_step_size)
106 time_step_size_ = time_step_size;
118 (
const N_LAS_Vector * solution, N_LAS_Vector * residual_vector)
132 (N_LAS_Matrix * jacobian)
143 jacobian->getDiagonal(*tmp_vector_ptr_);
147 double value = 1.0 / time_step_size_;
151 if (!use_voltage_scale_factor_)
153 tmp_vector_ptr_->addScalar(value);
157 for (std::size_t i = 0; i < tmp_vector_ptr_->localLength(); ++i)
159 if ( (*color_map_)[i] == 0)
161 (*tmp_vector_ptr_)[i] += value * voltage_scale_factor_;
165 (*tmp_vector_ptr_)[i] +=
value;
172 jacobian->replaceDiagonal(*tmp_vector_ptr_);