46 #ifndef Xyce_N_DEV_Diode_h
47 #define Xyce_N_DEV_Diode_h
67 typedef Sacado::Fad::SFad<double, 1>
fadType;
70 template <
typename ScalarT>
71 inline ScalarT
Xycemax ( ScalarT f1, ScalarT f2) {
return f1 > f2 ? f1 : f2; }
73 template <
typename ScalarT>
74 inline ScalarT
Xycemin ( ScalarT f1, ScalarT f2) {
return f1 < f2 ? f1 : f2; }
87 const std::string ¶m,
88 std::vector<double> & dfdp,
89 std::vector<double> & dqdp,
90 std::vector<double> & dbdp,
91 std::vector<int> & Findices,
92 std::vector<int> & Qindices,
93 std::vector<int> & Bindices
101 static const char *
name() {
return "Diode";}
113 template <
typename ScalarT>
124 template <
typename ScalarT>
144 const ScalarT & TNOM,
153 const ScalarT & COND,
157 const ScalarT & TIKF,
161 const bool & BVGiven,
162 const ScalarT & TBV1,
163 const ScalarT & TBV2,
164 const ScalarT & TRS1,
165 const ScalarT & TRS2,
171 template <
typename ScalarT>
181 const ScalarT & Temp,
182 const ScalarT & tJctCap,
183 const ScalarT & tJctPot,
184 const ScalarT & tDepCap,
186 const ScalarT & tSatCur,
187 const ScalarT & tSatCurR,
188 const ScalarT & tVcrit,
190 const ScalarT & tCOND,
191 const ScalarT & tIRF,
192 const ScalarT & tIKF,
193 const ScalarT & tBrkdwnV,
196 const ScalarT & Area,
197 const int & lambertWFlag,
223 template <
typename ScalarT>
234 const ScalarT & tVcrit,
241 const ScalarT & currVd_old,
242 const ScalarT & nextVd_old,
244 const double InitCond,
245 const bool InitCondGiven,
253 const bool dotICapplies,
256 const int & newtonIter,
257 const bool initJctFlag,
258 const bool voltageLimiterFlag,
260 const bool locaEnabledFlag
301 void registerLIDs(
const std::vector<int> & intLIDVecRef,
302 const std::vector<int> & extLIDVecRef );
309 const std::vector< std::vector<int> > &
jacobianStamp()
const;
310 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
347 static std::vector< std::vector<int> >
jacMap2;
420 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
551 virtual bool updateState (
double * solVec,
double * staVec,
double * stoVec);
555 virtual bool loadDAEVectors (
double * solVec,
double * fVec,
double * qVec,
double * bVec,
double * storeLeadF,
double * storeLeadQ);
558 virtual bool loadDAEMatrices (N_LAS_Matrix & dFdx, N_LAS_Matrix & dQdx);