49 #include <Xyce_config.h>
53 #include <N_UTL_Misc.h>
63 #include <N_LAS_Matrix.h>
64 #include <N_LAS_Vector.h>
84 .setExpressionAccess(
NO_DOC)
87 .setDescription(
"Internal-use parameter for setting device instance temperature");
90 .setDescription(
"Device operating temperature");
93 .setDescription(
"Number of emitter fingers");
96 .setDescription(
"Length of emitter fingers");
99 .setDescription(
"Width of emitter fingers");
113 .setExpressionAccess(
NO_DOC)
116 .setDescription(
"Internal-use parameter for setting device model temperature");
202 if ( (!((
Temp >=(-273.15)))) )
204 UserError0(*
this) <<
"ADMSHBT_X: Parameter Temp value " <<
Temp <<
" out of range [ (-273.15), (+inf) [";
210 UserError0(*
this) <<
"ADMSHBT_X: Parameter N value " <<
N <<
" out of range ] 0, (+inf) [";
216 UserError0(*
this) <<
"ADMSHBT_X: Parameter L value " <<
L <<
" out of range ] 0.0, (+inf) [";
222 UserError0(*
this) <<
"ADMSHBT_X: Parameter W value " <<
W <<
" out of range ] 0.0, (+inf) [";
253 :
DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
271 f_bi_Equ_ti_Node_Ptr(0),
272 f_ci_Equ_ti_Node_Ptr(0),
273 f_bi_Equ_bi_Node_Ptr(0),
274 f_bi_Equ_ci_Node_Ptr(0),
275 f_ci_Equ_bi_Node_Ptr(0),
276 f_ci_Equ_ci_Node_Ptr(0),
277 f_bii_Equ_ti_Node_Ptr(0),
278 f_bii_Equ_bii_Node_Ptr(0),
279 f_bii_Equ_ci_Node_Ptr(0),
280 f_ci_Equ_bii_Node_Ptr(0),
281 f_bii_Equ_ei_Node_Ptr(0),
282 f_ci_Equ_ei_Node_Ptr(0),
283 f_ei_Equ_bii_Node_Ptr(0),
284 f_ei_Equ_ci_Node_Ptr(0),
285 f_ei_Equ_ti_Node_Ptr(0),
286 f_ei_Equ_ei_Node_Ptr(0),
287 f_ex_Equ_ti_Node_Ptr(0),
288 f_ex_Equ_ex_Node_Ptr(0),
289 f_ex_Equ_ei_Node_Ptr(0),
290 f_ei_Equ_ex_Node_Ptr(0),
291 f_exx_Equ_ti_Node_Ptr(0),
292 f_exx_Equ_exx_Node_Ptr(0),
293 f_exx_Equ_ei_Node_Ptr(0),
294 f_ei_Equ_exx_Node_Ptr(0),
295 f_cx_Equ_ti_Node_Ptr(0),
296 f_cx_Equ_cx_Node_Ptr(0),
297 f_cx_Equ_ci_Node_Ptr(0),
298 f_ci_Equ_cx_Node_Ptr(0),
299 f_bii_Equ_bi_Node_Ptr(0),
300 f_bi_Equ_bii_Node_Ptr(0),
301 f_ex_Equ_bii_Node_Ptr(0),
302 f_bii_Equ_ex_Node_Ptr(0),
303 f_exx_Equ_bii_Node_Ptr(0),
304 f_bii_Equ_exx_Node_Ptr(0),
305 f_cx_Equ_bii_Node_Ptr(0),
306 f_bii_Equ_cx_Node_Ptr(0),
307 f_b_Equ_b_Node_Ptr(0),
308 f_c_Equ_c_Node_Ptr(0),
309 f_b_Equ_c_Node_Ptr(0),
310 f_c_Equ_b_Node_Ptr(0),
311 f_ti_Equ_bi_Node_Ptr(0),
312 f_ti_Equ_ci_Node_Ptr(0),
313 f_ti_Equ_ei_Node_Ptr(0),
314 f_ti_Equ_bii_Node_Ptr(0),
315 f_ti_Equ_ti_Node_Ptr(0),
316 f_t_Equ_t_Node_Ptr(0),
317 f_t_Equ_ti_Node_Ptr(0),
318 f_ti_Equ_t_Node_Ptr(0),
319 f_c_Equ_BRA_c_ci_Var_Ptr(0),
320 f_b_Equ_BRA_b_bi_Var_Ptr(0),
321 f_e_Equ_BRA_e_ei_Var_Ptr(0),
322 f_ei_Equ_BRA_e_ei_Var_Ptr(0),
323 f_bi_Equ_BRA_b_bi_Var_Ptr(0),
324 f_ci_Equ_BRA_c_ci_Var_Ptr(0),
325 f_BRA_b_bi_Equ_b_Node_Ptr(0),
326 f_BRA_b_bi_Equ_bi_Node_Ptr(0),
327 f_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr(0),
328 f_BRA_e_ei_Equ_e_Node_Ptr(0),
329 f_BRA_e_ei_Equ_ei_Node_Ptr(0),
330 f_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr(0),
331 f_BRA_c_ci_Equ_c_Node_Ptr(0),
332 f_BRA_c_ci_Equ_ci_Node_Ptr(0),
333 f_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr(0),
334 q_bi_Equ_ti_Node_Ptr(0),
335 q_ci_Equ_ti_Node_Ptr(0),
336 q_bi_Equ_bi_Node_Ptr(0),
337 q_bi_Equ_ci_Node_Ptr(0),
338 q_ci_Equ_bi_Node_Ptr(0),
339 q_ci_Equ_ci_Node_Ptr(0),
340 q_bii_Equ_ti_Node_Ptr(0),
341 q_bii_Equ_bii_Node_Ptr(0),
342 q_bii_Equ_ci_Node_Ptr(0),
343 q_ci_Equ_bii_Node_Ptr(0),
344 q_bii_Equ_ei_Node_Ptr(0),
345 q_ci_Equ_ei_Node_Ptr(0),
346 q_ei_Equ_bii_Node_Ptr(0),
347 q_ei_Equ_ci_Node_Ptr(0),
348 q_ei_Equ_ti_Node_Ptr(0),
349 q_ei_Equ_ei_Node_Ptr(0),
350 q_ex_Equ_ti_Node_Ptr(0),
351 q_ex_Equ_ex_Node_Ptr(0),
352 q_ex_Equ_ei_Node_Ptr(0),
353 q_ei_Equ_ex_Node_Ptr(0),
354 q_exx_Equ_ti_Node_Ptr(0),
355 q_exx_Equ_exx_Node_Ptr(0),
356 q_exx_Equ_ei_Node_Ptr(0),
357 q_ei_Equ_exx_Node_Ptr(0),
358 q_cx_Equ_ti_Node_Ptr(0),
359 q_cx_Equ_cx_Node_Ptr(0),
360 q_cx_Equ_ci_Node_Ptr(0),
361 q_ci_Equ_cx_Node_Ptr(0),
362 q_bii_Equ_bi_Node_Ptr(0),
363 q_bi_Equ_bii_Node_Ptr(0),
364 q_ex_Equ_bii_Node_Ptr(0),
365 q_bii_Equ_ex_Node_Ptr(0),
366 q_exx_Equ_bii_Node_Ptr(0),
367 q_bii_Equ_exx_Node_Ptr(0),
368 q_cx_Equ_bii_Node_Ptr(0),
369 q_bii_Equ_cx_Node_Ptr(0),
370 q_b_Equ_b_Node_Ptr(0),
371 q_c_Equ_c_Node_Ptr(0),
372 q_b_Equ_c_Node_Ptr(0),
373 q_c_Equ_b_Node_Ptr(0),
374 q_ti_Equ_bi_Node_Ptr(0),
375 q_ti_Equ_ci_Node_Ptr(0),
376 q_ti_Equ_ei_Node_Ptr(0),
377 q_ti_Equ_bii_Node_Ptr(0),
378 q_ti_Equ_ti_Node_Ptr(0),
379 q_t_Equ_t_Node_Ptr(0),
380 q_t_Equ_ti_Node_Ptr(0),
381 q_ti_Equ_t_Node_Ptr(0),
382 q_c_Equ_BRA_c_ci_Var_Ptr(0),
383 q_b_Equ_BRA_b_bi_Var_Ptr(0),
384 q_e_Equ_BRA_e_ei_Var_Ptr(0),
385 q_ei_Equ_BRA_e_ei_Var_Ptr(0),
386 q_bi_Equ_BRA_b_bi_Var_Ptr(0),
387 q_ci_Equ_BRA_c_ci_Var_Ptr(0),
388 q_BRA_b_bi_Equ_b_Node_Ptr(0),
389 q_BRA_b_bi_Equ_bi_Node_Ptr(0),
390 q_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr(0),
391 q_BRA_e_ei_Equ_e_Node_Ptr(0),
392 q_BRA_e_ei_Equ_ei_Node_Ptr(0),
393 q_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr(0),
394 q_BRA_c_ci_Equ_c_Node_Ptr(0),
395 q_BRA_c_ci_Equ_ci_Node_Ptr(0),
396 q_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr(0),
397 admsTemperature(getDeviceOptions().temp.getImmutableValue<double>())
549 for (
int i=0;i<mapSize;++i)
554 for (
int j=0;j<rowSize;++j)
577 if (!
given(
"XYCEADMSINSTTEMP"))
614 const std::vector<int> & extLIDVecRef)
619 #ifdef Xyce_DEBUG_DEVICE
623 Xyce::dout() << std::endl << section_divider << std::endl;
624 Xyce::dout() <<
"In ADMSHBT_X::Instance::register LIDs\n\n";
625 Xyce::dout() <<
"name = " <<
getName() << std::endl;
626 Xyce::dout() <<
"number of internal variables: " <<
numIntVars << std::endl;
627 Xyce::dout() <<
"number of external variables: " <<
numExtVars << std::endl;
638 li_c = extLIDVecRef[i++];
639 li_b = extLIDVecRef[i++];
640 li_e = extLIDVecRef[i++];
641 li_t = extLIDVecRef[i++];
645 li_ei = intLIDVecRef[i++];
646 li_bi = intLIDVecRef[i++];
647 li_bii = intLIDVecRef[i++];
648 li_ci = intLIDVecRef[i++];
649 li_ti = intLIDVecRef[i++];
650 li_ex = intLIDVecRef[i++];
651 li_exx = intLIDVecRef[i++];
652 li_cx = intLIDVecRef[i++];
658 #ifdef Xyce_DEBUG_DEVICE
661 Xyce::dout() <<
"\nSolution and RHS variables:\n";
662 Xyce::dout() <<
"\nli_c = " <<
li_c << std::endl;
663 Xyce::dout() <<
"\nli_b = " <<
li_b << std::endl;
664 Xyce::dout() <<
"\nli_e = " <<
li_e << std::endl;
665 Xyce::dout() <<
"\nli_t = " <<
li_t << std::endl;
666 Xyce::dout() <<
"\nli_ei = " <<
li_ei << std::endl;
667 Xyce::dout() <<
"\nli_bi = " <<
li_bi << std::endl;
668 Xyce::dout() <<
"\nli_bii = " <<
li_bii << std::endl;
669 Xyce::dout() <<
"\nli_ci = " <<
li_ci << std::endl;
670 Xyce::dout() <<
"\nli_ti = " <<
li_ti << std::endl;
671 Xyce::dout() <<
"\nli_ex = " <<
li_ex << std::endl;
672 Xyce::dout() <<
"\nli_exx = " <<
li_exx << std::endl;
673 Xyce::dout() <<
"\nli_cx = " <<
li_cx << std::endl;
674 Xyce::dout() <<
"\nli_BRA_b_bi = " <<
li_BRA_b_bi << std::endl;
675 Xyce::dout() <<
"\nli_BRA_e_ei = " <<
li_BRA_e_ei << std::endl;
676 Xyce::dout() <<
"\nli_BRA_c_ci = " <<
li_BRA_c_ci << std::endl;
680 #ifdef Xyce_DEBUG_DEVICE
683 Xyce::dout() <<
"\nEnd of ADMSHBT_X::Instance::register LIDs\n";
684 Xyce::dout() << section_divider << std::endl;
736 tmpstr =
getName() +
"_b_bi_branch";
739 tmpstr =
getName() +
"_e_ei_branch";
742 tmpstr =
getName() +
"_c_ci_branch";
761 int numSta = staLIDVecRef.size();
798 std::vector<int> & map=
jacMap;
799 std::vector< std::vector<int> > & map2=
jacMap2;
1066 bool bsuccess =
true;
1095 bool bsuccess =
true;
1117 #ifdef Xyce_DEBUG_DEVICE
1120 Xyce::dout() << std::endl << subsection_divider << std::endl;
1121 Xyce::dout() <<
" In ADMSHBT_X::Instance::updateIntermediateVars\n\n";
1122 Xyce::dout() <<
" name = " <<
getName() << std::endl;
1179 double vbei_orig,vbei_limited,vbei_old;
1180 double vbci_orig,vbci_limited,vbci_old;
1181 double vbcx_orig,vbcx_limited,vbcx_old;
1197 for (
int i=0; i < 12+3 ; ++i)
1205 for (
int i=0; i < 19 ; ++i)
1294 if ((*flagSolVectorPtr)[
li_e] == 0 ||
1295 (*flagSolVectorPtr)[
li_ei] == 0 ||
1296 (*flagSolVectorPtr)[
li_ex] == 0 ||
1297 (*flagSolVectorPtr)[
li_exx] == 0 ||
1298 (*flagSolVectorPtr)[
li_b] == 0 ||
1299 (*flagSolVectorPtr)[
li_bi] == 0 ||
1300 (*flagSolVectorPtr)[
li_bii] == 0 ||
1301 (*flagSolVectorPtr)[
li_c] == 0 ||
1302 (*flagSolVectorPtr)[
li_ci] == 0 ||
1303 (*flagSolVectorPtr)[
li_cx] == 0 ||
1304 (*flagSolVectorPtr)[
li_t] == 0 ||
1305 (*flagSolVectorPtr)[
li_ti] == 0 )
1307 vbcx_limited = vbci_limited = 0;
1308 vbei_limited = tVCrit;
1314 vbcx_limited = vbci_limited = 0;
1315 vbei_limited = tVCrit;
1317 #ifdef Xyce_DEBUG_DEVICE
1320 Xyce::dout() <<
" Setting device initial condition to Base-Emitter drop=tVCri (" << tVCrit <<
")" << std::endl;
1335 vbei_old = vbei_limited;
1336 vbci_old = vbci_limited;
1337 vbcx_old = vbcx_limited;
1409 Area = (((
L*
W)*1.0e12)*
N);
1410 FOUR_K = (4*1.3806226e-23);
1411 TWO_Q = (2*1.6021918e-19);
1416 q1 = ((1.0+((
model_.
analogFunctions.
charge<
AdmsFadType>(vbei,1.0,(
model_.
Vje),(
model_.
mje),1.0)-
model_.
analogFunctions.
charge<
double>(0.0,1.0,(
model_.
Vje),(
model_.
mje),1.0))/(
model_.
VAR)))+((
model_.
analogFunctions.
charge<
AdmsFadType>(vbci,1.0,(
model_.
Vjc),(
model_.
mjc),1.0)-
model_.
analogFunctions.
charge<
double>(0.0,1.0,(
model_.
Vjc),(
model_.
mjc),1.0))/(
model_.
VAF)));
1458 qb = ((q1+sqrt(((q1*q1)+(4.0*q2))))/2.0);
1503 Ib0 = (Ic0a*EdBeta);
1526 Ibdxx = (vxxe*1e-12);
1536 Ipdiss = ((((Ic1*vcei)+(Ib1*vbei))+(Ib2*vbci))+(Ibx*vbcx));
1544 if ((((
model_.
J0)<=0.0)||(Ic0<0.0)))
1556 if ((((
model_.
J0)<0.0)||(Ic0<0.0)))
1576 qb2 = (qb2med+qbtr);
1602 Wh = ((Ih+sqrt(((Ih*Ih)+AHC)))/(1.0+sqrt((1.0+AHC))));
1751 contribTemp= (-Ipdiss);
1792 #ifdef Xyce_DEBUG_DEVICE
1795 Xyce::dout() <<
" probeVars[admsProbeID_V_t_ti] = "
1797 Xyce::dout() <<
" probeVars[admsProbeID_V_b_c] = "
1799 Xyce::dout() <<
" probeVars[admsProbeID_V_c_GND] = "
1801 Xyce::dout() <<
" probeVars[admsProbeID_V_b_GND] = "
1803 Xyce::dout() <<
" probeVars[admsProbeID_V_cx_bii] = "
1805 Xyce::dout() <<
" probeVars[admsProbeID_V_exx_bii] = "
1807 Xyce::dout() <<
" probeVars[admsProbeID_V_ex_bii] = "
1809 Xyce::dout() <<
" probeVars[admsProbeID_V_bii_bi] = "
1811 Xyce::dout() <<
" probeVars[admsProbeID_I_c_ci] = "
1813 Xyce::dout() <<
" probeVars[admsProbeID_I_e_ei] = "
1815 Xyce::dout() <<
" probeVars[admsProbeID_I_b_bi] = "
1817 Xyce::dout() <<
" probeVars[admsProbeID_V_ti_GND] = "
1819 Xyce::dout() <<
" probeVars[admsProbeID_V_ci_ei] = "
1821 Xyce::dout() <<
" probeVars[admsProbeID_V_exx_ei] = "
1823 Xyce::dout() <<
" probeVars[admsProbeID_V_cx_ci] = "
1825 Xyce::dout() <<
" probeVars[admsProbeID_V_ex_ei] = "
1827 Xyce::dout() <<
" probeVars[admsProbeID_V_bii_ei] = "
1829 Xyce::dout() <<
" probeVars[admsProbeID_V_bii_ci] = "
1831 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ci] = "
1833 Xyce::dout() <<
" staticContributions[admsNodeID_c] = "
1837 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_c_GND) << std::endl;
1838 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_b_GND) << std::endl;
1847 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
1848 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_exx_ei) << std::endl;
1849 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
1850 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_ex_ei) << std::endl;
1854 Xyce::dout() <<
" dynamicContributions[admsNodeID_c] = "
1858 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c_GND) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_c_GND) << std::endl;
1859 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_GND) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_b_GND) << std::endl;
1868 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
1869 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_exx_ei) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_exx_ei) << std::endl;
1870 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
1871 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ex_ei) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_ex_ei) << std::endl;
1875 Xyce::dout() <<
" Jdxp_static[admsNodeID_c] = "
1877 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c] = "
1879 Xyce::dout() <<
" staticContributions[admsNodeID_b] = "
1883 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_c_GND) << std::endl;
1884 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_b_GND) << std::endl;
1893 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
1894 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_exx_ei) << std::endl;
1895 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
1896 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_ex_ei) << std::endl;
1900 Xyce::dout() <<
" dynamicContributions[admsNodeID_b] = "
1904 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c_GND) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_c_GND) << std::endl;
1905 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_GND) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_b_GND) << std::endl;
1914 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
1915 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_exx_ei) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_exx_ei) << std::endl;
1916 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
1917 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ex_ei) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_ex_ei) << std::endl;
1921 Xyce::dout() <<
" Jdxp_static[admsNodeID_b] = "
1923 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_b] = "
1925 Xyce::dout() <<
" staticContributions[admsNodeID_e] = "
1929 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_c_GND) << std::endl;
1930 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_b_GND) << std::endl;
1939 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
1940 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_exx_ei) << std::endl;
1941 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
1942 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_ex_ei) << std::endl;
1946 Xyce::dout() <<
" dynamicContributions[admsNodeID_e] = "
1950 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c_GND) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_c_GND) << std::endl;
1951 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_GND) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_b_GND) << std::endl;
1960 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
1961 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_exx_ei) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_exx_ei) << std::endl;
1962 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
1963 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ex_ei) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_ex_ei) << std::endl;
1967 Xyce::dout() <<
" Jdxp_static[admsNodeID_e] = "
1969 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_e] = "
1971 Xyce::dout() <<
" staticContributions[admsNodeID_t] = "
1975 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_c_GND) << std::endl;
1976 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_b_GND) << std::endl;
1985 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_ci_ei) << std::endl;
1986 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_exx_ei) << std::endl;
1987 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_cx_ci) << std::endl;
1988 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_ex_ei) << std::endl;
1992 Xyce::dout() <<
" dynamicContributions[admsNodeID_t] = "
1996 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_c_GND) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_c_GND) << std::endl;
1997 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_b_GND) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_b_GND) << std::endl;
2006 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_ci_ei) << std::endl;
2007 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_exx_ei) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_exx_ei) << std::endl;
2008 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_cx_ci) << std::endl;
2009 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ex_ei) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_ex_ei) << std::endl;
2013 Xyce::dout() <<
" Jdxp_static[admsNodeID_t] = "
2015 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_t] = "
2017 Xyce::dout() <<
" staticContributions[admsNodeID_ei] = "
2021 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_c_GND) << std::endl;
2022 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_b_GND) << std::endl;
2031 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
2032 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_exx_ei) << std::endl;
2033 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
2034 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_ex_ei) << std::endl;
2038 Xyce::dout() <<
" dynamicContributions[admsNodeID_ei] = "
2059 Xyce::dout() <<
" Jdxp_static[admsNodeID_ei] = "
2061 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ei] = "
2063 Xyce::dout() <<
" staticContributions[admsNodeID_bi] = "
2067 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_c_GND) << std::endl;
2068 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_b_GND) << std::endl;
2077 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
2078 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_exx_ei) << std::endl;
2079 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
2080 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_ex_ei) << std::endl;
2084 Xyce::dout() <<
" dynamicContributions[admsNodeID_bi] = "
2105 Xyce::dout() <<
" Jdxp_static[admsNodeID_bi] = "
2107 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bi] = "
2109 Xyce::dout() <<
" staticContributions[admsNodeID_bii] = "
2130 Xyce::dout() <<
" dynamicContributions[admsNodeID_bii] = "
2151 Xyce::dout() <<
" Jdxp_static[admsNodeID_bii] = "
2153 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bii] = "
2155 Xyce::dout() <<
" staticContributions[admsNodeID_ci] = "
2159 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_c_GND) << std::endl;
2160 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_b_GND) << std::endl;
2169 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
2170 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_exx_ei) << std::endl;
2171 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
2172 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_ex_ei) << std::endl;
2176 Xyce::dout() <<
" dynamicContributions[admsNodeID_ci] = "
2197 Xyce::dout() <<
" Jdxp_static[admsNodeID_ci] = "
2199 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ci] = "
2201 Xyce::dout() <<
" staticContributions[admsNodeID_ti] = "
2205 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_c_GND) << std::endl;
2206 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_b_GND) << std::endl;
2215 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_ci_ei) << std::endl;
2216 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_exx_ei) << std::endl;
2217 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_cx_ci) << std::endl;
2218 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_ex_ei) << std::endl;
2222 Xyce::dout() <<
" dynamicContributions[admsNodeID_ti] = "
2243 Xyce::dout() <<
" Jdxp_static[admsNodeID_ti] = "
2245 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ti] = "
2247 Xyce::dout() <<
" staticContributions[admsNodeID_ex] = "
2251 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_c_GND) << std::endl;
2252 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_b_GND) << std::endl;
2261 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_ci_ei) << std::endl;
2262 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_exx_ei) << std::endl;
2263 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_cx_ci) << std::endl;
2264 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_ex_ei) << std::endl;
2268 Xyce::dout() <<
" dynamicContributions[admsNodeID_ex] = "
2289 Xyce::dout() <<
" Jdxp_static[admsNodeID_ex] = "
2291 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ex] = "
2293 Xyce::dout() <<
" staticContributions[admsNodeID_exx] = "
2314 Xyce::dout() <<
" dynamicContributions[admsNodeID_exx] = "
2335 Xyce::dout() <<
" Jdxp_static[admsNodeID_exx] = "
2337 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_exx] = "
2339 Xyce::dout() <<
" staticContributions[admsNodeID_cx] = "
2343 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_c_GND) << std::endl;
2344 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_b_GND) << std::endl;
2353 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
2354 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_exx_ei) << std::endl;
2355 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
2356 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_ex_ei) << std::endl;
2360 Xyce::dout() <<
" dynamicContributions[admsNodeID_cx] = "
2381 Xyce::dout() <<
" Jdxp_static[admsNodeID_cx] = "
2383 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_cx] = "
2385 Xyce::dout() <<
" staticContributions[admsBRA_ID_b_bi] = "
2406 Xyce::dout() <<
" dynamicContributions[admsBRA_ID_b_bi] = "
2427 Xyce::dout() <<
" staticContributions[admsBRA_ID_e_ei] = "
2448 Xyce::dout() <<
" dynamicContributions[admsBRA_ID_e_ei] = "
2469 Xyce::dout() <<
" staticContributions[admsBRA_ID_c_ci] = "
2490 Xyce::dout() <<
" dynamicContributions[admsBRA_ID_c_ci] = "
2513 Xyce::dout() <<
"This step was limited by this device." << std::endl;
2515 #endif // Xyce_DEBUG_DEVICE
2529 bool bsuccess =
true;
2532 #ifdef Xyce_DEBUG_DEVICE
2535 Xyce::dout() << subsection_divider << std::endl;
2536 Xyce::dout() <<
"ADMSHBT_X::Instance::loadDAEdFdx (" <<
getName() <<
"):" << std::endl;
2542 #ifdef Xyce_DEBUG_DEVICE
2551 #ifdef Xyce_DEBUG_DEVICE
2560 #ifdef Xyce_DEBUG_DEVICE
2569 #ifdef Xyce_DEBUG_DEVICE
2578 #ifdef Xyce_DEBUG_DEVICE
2587 #ifdef Xyce_DEBUG_DEVICE
2596 #ifdef Xyce_DEBUG_DEVICE
2605 #ifdef Xyce_DEBUG_DEVICE
2614 #ifdef Xyce_DEBUG_DEVICE
2623 #ifdef Xyce_DEBUG_DEVICE
2632 #ifdef Xyce_DEBUG_DEVICE
2641 #ifdef Xyce_DEBUG_DEVICE
2650 #ifdef Xyce_DEBUG_DEVICE
2659 #ifdef Xyce_DEBUG_DEVICE
2668 #ifdef Xyce_DEBUG_DEVICE
2677 #ifdef Xyce_DEBUG_DEVICE
2686 #ifdef Xyce_DEBUG_DEVICE
2695 #ifdef Xyce_DEBUG_DEVICE
2704 #ifdef Xyce_DEBUG_DEVICE
2713 #ifdef Xyce_DEBUG_DEVICE
2722 #ifdef Xyce_DEBUG_DEVICE
2731 #ifdef Xyce_DEBUG_DEVICE
2740 #ifdef Xyce_DEBUG_DEVICE
2749 #ifdef Xyce_DEBUG_DEVICE
2758 #ifdef Xyce_DEBUG_DEVICE
2767 #ifdef Xyce_DEBUG_DEVICE
2776 #ifdef Xyce_DEBUG_DEVICE
2785 #ifdef Xyce_DEBUG_DEVICE
2794 #ifdef Xyce_DEBUG_DEVICE
2803 #ifdef Xyce_DEBUG_DEVICE
2812 #ifdef Xyce_DEBUG_DEVICE
2821 #ifdef Xyce_DEBUG_DEVICE
2830 #ifdef Xyce_DEBUG_DEVICE
2839 #ifdef Xyce_DEBUG_DEVICE
2848 #ifdef Xyce_DEBUG_DEVICE
2857 #ifdef Xyce_DEBUG_DEVICE
2866 #ifdef Xyce_DEBUG_DEVICE
2875 #ifdef Xyce_DEBUG_DEVICE
2884 #ifdef Xyce_DEBUG_DEVICE
2893 #ifdef Xyce_DEBUG_DEVICE
2902 #ifdef Xyce_DEBUG_DEVICE
2911 #ifdef Xyce_DEBUG_DEVICE
2920 #ifdef Xyce_DEBUG_DEVICE
2929 #ifdef Xyce_DEBUG_DEVICE
2938 #ifdef Xyce_DEBUG_DEVICE
2948 #ifdef Xyce_DEBUG_DEVICE
2958 #ifdef Xyce_DEBUG_DEVICE
2968 #ifdef Xyce_DEBUG_DEVICE
2978 #ifdef Xyce_DEBUG_DEVICE
2988 #ifdef Xyce_DEBUG_DEVICE
2997 (*f_BRA_b_bi_Equ_b_Node_Ptr) += -1;
2999 #ifdef Xyce_DEBUG_DEVICE
3001 { Xyce::dout() <<
" (*f_BRA_b_bi_Equ_b_Node_Ptr) += " << -1<< std::endl;
3006 (*f_BRA_b_bi_Equ_bi_Node_Ptr) += +1;
3008 #ifdef Xyce_DEBUG_DEVICE
3010 { Xyce::dout() <<
" (*f_BRA_b_bi_Equ_bi_Node_Ptr) += " << +1<< std::endl;
3017 #ifdef Xyce_DEBUG_DEVICE
3025 (*f_BRA_e_ei_Equ_e_Node_Ptr) += -1;
3027 #ifdef Xyce_DEBUG_DEVICE
3029 { Xyce::dout() <<
" (*f_BRA_e_ei_Equ_e_Node_Ptr) += " << -1<< std::endl;
3034 (*f_BRA_e_ei_Equ_ei_Node_Ptr) += +1;
3036 #ifdef Xyce_DEBUG_DEVICE
3038 { Xyce::dout() <<
" (*f_BRA_e_ei_Equ_ei_Node_Ptr) += " << +1<< std::endl;
3045 #ifdef Xyce_DEBUG_DEVICE
3053 (*f_BRA_c_ci_Equ_c_Node_Ptr) += -1;
3055 #ifdef Xyce_DEBUG_DEVICE
3057 { Xyce::dout() <<
" (*f_BRA_c_ci_Equ_c_Node_Ptr) += " << -1<< std::endl;
3062 (*f_BRA_c_ci_Equ_ci_Node_Ptr) += +1;
3064 #ifdef Xyce_DEBUG_DEVICE
3066 { Xyce::dout() <<
" (*f_BRA_c_ci_Equ_ci_Node_Ptr) += " << +1<< std::endl;
3073 #ifdef Xyce_DEBUG_DEVICE
3095 bool bsuccess =
true;
3098 #ifdef Xyce_DEBUG_DEVICE
3101 Xyce::dout() << subsection_divider << std::endl;
3102 Xyce::dout() <<
"ADMSHBT_X::Instance::loadDAEdQdx (" <<
getName() <<
"):" << std::endl;
3108 #ifdef Xyce_DEBUG_DEVICE
3117 #ifdef Xyce_DEBUG_DEVICE
3126 #ifdef Xyce_DEBUG_DEVICE
3135 #ifdef Xyce_DEBUG_DEVICE
3144 #ifdef Xyce_DEBUG_DEVICE
3153 #ifdef Xyce_DEBUG_DEVICE
3162 #ifdef Xyce_DEBUG_DEVICE
3171 #ifdef Xyce_DEBUG_DEVICE
3180 #ifdef Xyce_DEBUG_DEVICE
3189 #ifdef Xyce_DEBUG_DEVICE
3198 #ifdef Xyce_DEBUG_DEVICE
3207 #ifdef Xyce_DEBUG_DEVICE
3216 #ifdef Xyce_DEBUG_DEVICE
3225 #ifdef Xyce_DEBUG_DEVICE
3234 #ifdef Xyce_DEBUG_DEVICE
3243 #ifdef Xyce_DEBUG_DEVICE
3252 #ifdef Xyce_DEBUG_DEVICE
3261 #ifdef Xyce_DEBUG_DEVICE
3270 #ifdef Xyce_DEBUG_DEVICE
3279 #ifdef Xyce_DEBUG_DEVICE
3288 #ifdef Xyce_DEBUG_DEVICE
3297 #ifdef Xyce_DEBUG_DEVICE
3306 #ifdef Xyce_DEBUG_DEVICE
3315 #ifdef Xyce_DEBUG_DEVICE
3382 if ( (!((
Mode >=0 &&
Mode <=4 ))) )
3384 UserError0(*
this) <<
"ADMSHBT_X: Parameter Mode value " <<
Mode <<
" out of range [ 0, 4 ]";
3390 UserError0(*
this) <<
"ADMSHBT_X: Parameter Noise value " <<
Noise <<
" out of range [ 0, 4 ]";
3394 if ( (!((
Debug >=0))) )
3396 UserError0(*
this) <<
"ADMSHBT_X: Parameter Debug value " <<
Debug <<
" out of range [ 0, (+inf) [";
3402 UserError0(*
this) <<
"ADMSHBT_X: Parameter DebugPlus value " <<
DebugPlus <<
" out of range [ 0, (+inf) [";
3406 if ( (!((
Rth >=0.0))) )
3408 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rth value " <<
Rth <<
" out of range [ 0.0, (+inf) [";
3412 if ( (!((
Cth >=0.0))) )
3414 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cth value " <<
Cth <<
" out of range [ 0.0, (+inf) [";
3418 if ( (!((
Jsf >=0.0))) )
3420 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jsf value " <<
Jsf <<
" out of range [ 0.0, (+inf) [";
3424 if ( (!((
nf >=0.0))) )
3426 UserError0(*
this) <<
"ADMSHBT_X: Parameter nf value " <<
nf <<
" out of range [ 0.0, (+inf) [";
3430 if ( (!((
Vg >=(-2.0)))) )
3432 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vg value " <<
Vg <<
" out of range [ (-2.0), (+inf) [";
3436 if ( (!((
Jse >=0.0))) )
3438 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jse value " <<
Jse <<
" out of range [ 0.0, (+inf) [";
3442 if ( (!((
ne >=0.0))) )
3444 UserError0(*
this) <<
"ADMSHBT_X: Parameter ne value " <<
ne <<
" out of range [ 0.0, (+inf) [";
3448 if ( (!((
Rbxx >0.0))) )
3450 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rbxx value " <<
Rbxx <<
" out of range ] 0.0, (+inf) [";
3454 if ( (!((
Vgb >=0.0))) )
3456 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vgb value " <<
Vgb <<
" out of range [ 0.0, (+inf) [";
3460 if ( (!((
Jsee >=0.0))) )
3462 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jsee value " <<
Jsee <<
" out of range [ 0.0, (+inf) [";
3466 if ( (!((
nee >=0.0))) )
3468 UserError0(*
this) <<
"ADMSHBT_X: Parameter nee value " <<
nee <<
" out of range [ 0.0, (+inf) [";
3472 if ( (!((
Rbbxx >0.0))) )
3474 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rbbxx value " <<
Rbbxx <<
" out of range ] 0.0, (+inf) [";
3478 if ( (!((
Vgbb >=0.0))) )
3480 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vgbb value " <<
Vgbb <<
" out of range [ 0.0, (+inf) [";
3484 if ( (!((
Jsr >=0.0))) )
3486 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jsr value " <<
Jsr <<
" out of range [ 0.0, (+inf) [";
3490 if ( (!((
nr >=0.0))) )
3492 UserError0(*
this) <<
"ADMSHBT_X: Parameter nr value " <<
nr <<
" out of range [ 0.0, (+inf) [";
3496 if ( (!((
Vgr >=0.0))) )
3498 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vgr value " <<
Vgr <<
" out of range [ 0.0, (+inf) [";
3502 if ( (!((
XCjc >=0.0 &&
XCjc <1.0 ))) )
3504 UserError0(*
this) <<
"ADMSHBT_X: Parameter XCjc value " <<
XCjc <<
" out of range [ 0.0, 1.0 [";
3508 if ( (!((
Jsc >=0.0))) )
3510 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jsc value " <<
Jsc <<
" out of range [ 0.0, (+inf) [";
3514 if ( (!((
nc >=0.0))) )
3516 UserError0(*
this) <<
"ADMSHBT_X: Parameter nc value " <<
nc <<
" out of range [ 0.0, (+inf) [";
3520 if ( (!((
Rcxx >0.0))) )
3522 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rcxx value " <<
Rcxx <<
" out of range ] 0.0, (+inf) [";
3526 if ( (!((
Vgc >=0.0))) )
3528 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vgc value " <<
Vgc <<
" out of range [ 0.0, (+inf) [";
3532 if ( (!((
Bf >=0.0))) )
3534 UserError0(*
this) <<
"ADMSHBT_X: Parameter Bf value " <<
Bf <<
" out of range [ 0.0, (+inf) [";
3538 if ( (!((
kBeta >=0.0))) )
3540 UserError0(*
this) <<
"ADMSHBT_X: Parameter kBeta value " <<
kBeta <<
" out of range [ 0.0, (+inf) [";
3544 if ( (!((
Br >=0.0))) )
3546 UserError0(*
this) <<
"ADMSHBT_X: Parameter Br value " <<
Br <<
" out of range [ 0.0, (+inf) [";
3550 if ( (!((
VAF >=0.0))) )
3552 UserError0(*
this) <<
"ADMSHBT_X: Parameter VAF value " <<
VAF <<
" out of range [ 0.0, (+inf) [";
3556 if ( (!((
VAR >=0.0))) )
3558 UserError0(*
this) <<
"ADMSHBT_X: Parameter VAR value " <<
VAR <<
" out of range [ 0.0, (+inf) [";
3562 if ( (!((
IKF >=0.0))) )
3564 UserError0(*
this) <<
"ADMSHBT_X: Parameter IKF value " <<
IKF <<
" out of range [ 0.0, (+inf) [";
3568 if ( (!((
IKR >=0.0))) )
3570 UserError0(*
this) <<
"ADMSHBT_X: Parameter IKR value " <<
IKR <<
" out of range [ 0.0, (+inf) [";
3574 if ( (!((
Mc >=0.0))) )
3576 UserError0(*
this) <<
"ADMSHBT_X: Parameter Mc value " <<
Mc <<
" out of range [ 0.0, (+inf) [";
3580 if ( (!((
BVceo >=0.0))) )
3582 UserError0(*
this) <<
"ADMSHBT_X: Parameter BVceo value " <<
BVceo <<
" out of range [ 0.0, (+inf) [";
3586 if ( (!((
kc >=0.0))) )
3588 UserError0(*
this) <<
"ADMSHBT_X: Parameter kc value " <<
kc <<
" out of range [ 0.0, (+inf) [";
3592 if ( (!((
BVebo >=0.0))) )
3594 UserError0(*
this) <<
"ADMSHBT_X: Parameter BVebo value " <<
BVebo <<
" out of range [ 0.0, (+inf) [";
3598 if ( (!((
Tr >=0.0))) )
3600 UserError0(*
this) <<
"ADMSHBT_X: Parameter Tr value " <<
Tr <<
" out of range [ 0.0, (+inf) [";
3604 if ( (!((
Trx >=0.0))) )
3606 UserError0(*
this) <<
"ADMSHBT_X: Parameter Trx value " <<
Trx <<
" out of range [ 0.0, (+inf) [";
3610 if ( (!((
Tf >=0.0))) )
3612 UserError0(*
this) <<
"ADMSHBT_X: Parameter Tf value " <<
Tf <<
" out of range [ 0.0, (+inf) [";
3616 if ( (!((
Tft >=0.0))) )
3618 UserError0(*
this) <<
"ADMSHBT_X: Parameter Tft value " <<
Tft <<
" out of range [ 0.0, (+inf) [";
3622 if ( (!((
Thcs >=0.0))) )
3624 UserError0(*
this) <<
"ADMSHBT_X: Parameter Thcs value " <<
Thcs <<
" out of range [ 0.0, (+inf) [";
3628 if ( (!((
Ahc >=0.0))) )
3630 UserError0(*
this) <<
"ADMSHBT_X: Parameter Ahc value " <<
Ahc <<
" out of range [ 0.0, (+inf) [";
3634 if ( (!((
Cje >=0.0))) )
3636 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cje value " <<
Cje <<
" out of range [ 0.0, (+inf) [";
3640 if ( (!((
mje >=0.0 &&
mje <1 ))) )
3642 UserError0(*
this) <<
"ADMSHBT_X: Parameter mje value " <<
mje <<
" out of range [ 0.0, 1 [";
3646 if ( (!((
Vje >=0.0))) )
3648 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vje value " <<
Vje <<
" out of range [ 0.0, (+inf) [";
3652 if ( (!((
Cjc >=0.0))) )
3654 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cjc value " <<
Cjc <<
" out of range [ 0.0, (+inf) [";
3658 if ( (!((
mjc >=0.0))) )
3660 UserError0(*
this) <<
"ADMSHBT_X: Parameter mjc value " <<
mjc <<
" out of range [ 0.0, (+inf) [";
3664 if ( (!((
Vjc >=0.0))) )
3666 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vjc value " <<
Vjc <<
" out of range [ 0.0, (+inf) [";
3672 if ( (!((
Cmin >=0.0))) )
3674 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cmin value " <<
Cmin <<
" out of range [ 0.0, (+inf) [";
3678 if ( (!((
J0 >=0.0))) )
3680 UserError0(*
this) <<
"ADMSHBT_X: Parameter J0 value " <<
J0 <<
" out of range [ 0.0, (+inf) [";
3684 if ( (!((
XJ0 >=0.0 &&
XJ0 <=1.0 ))) )
3686 UserError0(*
this) <<
"ADMSHBT_X: Parameter XJ0 value " <<
XJ0 <<
" out of range [ 0.0, 1.0 ]";
3690 if ( (!((
Rci0 >0.0))) )
3692 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rci0 value " <<
Rci0 <<
" out of range ] 0.0, (+inf) [";
3696 if ( (!((
Jk >=0.0))) )
3698 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jk value " <<
Jk <<
" out of range [ 0.0, (+inf) [";
3702 if ( (!((
RJk >=0.0))) )
3704 UserError0(*
this) <<
"ADMSHBT_X: Parameter RJk value " <<
RJk <<
" out of range [ 0.0, (+inf) [";
3708 if ( (!((
Vces >=0.0))) )
3710 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vces value " <<
Vces <<
" out of range [ 0.0, (+inf) [";
3714 if ( (!((
Rc >0.0))) )
3716 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rc value " <<
Rc <<
" out of range ] 0.0, (+inf) [";
3720 if ( (!((
Re >0.0))) )
3722 UserError0(*
this) <<
"ADMSHBT_X: Parameter Re value " <<
Re <<
" out of range ] 0.0, (+inf) [";
3726 if ( (!((
Rb >0.0))) )
3728 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rb value " <<
Rb <<
" out of range ] 0.0, (+inf) [";
3732 if ( (!((
Rb2 >0.0))) )
3734 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rb2 value " <<
Rb2 <<
" out of range ] 0.0, (+inf) [";
3738 if ( (!((
Lc >=0.0))) )
3740 UserError0(*
this) <<
"ADMSHBT_X: Parameter Lc value " <<
Lc <<
" out of range [ 0.0, (+inf) [";
3744 if ( (!((
Le >=0.0))) )
3746 UserError0(*
this) <<
"ADMSHBT_X: Parameter Le value " <<
Le <<
" out of range [ 0.0, (+inf) [";
3750 if ( (!((
Lb >=0.0))) )
3752 UserError0(*
this) <<
"ADMSHBT_X: Parameter Lb value " <<
Lb <<
" out of range [ 0.0, (+inf) [";
3756 if ( (!((
Cq >=0.0))) )
3758 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cq value " <<
Cq <<
" out of range [ 0.0, (+inf) [";
3762 if ( (!((
Cpb >=0.0))) )
3764 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cpb value " <<
Cpb <<
" out of range [ 0.0, (+inf) [";
3768 if ( (!((
Cpc >=0.0))) )
3770 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cpc value " <<
Cpc <<
" out of range [ 0.0, (+inf) [";
3774 if ( (!((
Tnom >=(-273.15)))) )
3776 UserError0(*
this) <<
"ADMSHBT_X: Parameter Tnom value " <<
Tnom <<
" out of range [ (-273.15), (+inf) [";
3782 UserError0(*
this) <<
"ADMSHBT_X: Parameter dtype value " <<
dtype <<
" out of range [ (-1), 1 ] or in excluded range [ 0, 0 ]";
3803 std::vector<Instance*>::iterator iter;
3807 for (iter=first; iter!=last; ++iter)
3809 (*iter)->processParams();
3827 :
DeviceModel(model_block, configuration.getModelParameters(), factory_block),
3908 if (!
given(
"XYCEADMSMODTEMP"))
3940 std::vector<Instance*>::iterator iterI;
3945 for (iterI = firstI; iterI != lastI; ++iterI)
3961 std::vector<Instance*>::const_iterator iter;
3967 os <<
" name model name Parameters" << std::endl;
3968 for (i=0, iter=first; iter!=last; ++iter, ++i)
3970 os <<
" " << i <<
": " << (*iter)->getName() <<
" ";
3974 os <<
"TEMP = " << (*iter)->Temp << std::endl;
3975 os <<
"N = " << (*iter)->N << std::endl;
3976 os <<
"L = " << (*iter)->L << std::endl;
3977 os <<
"W = " << (*iter)->W << std::endl;
4002 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
4014 .registerDevice(
"q", 23)
4015 .registerModelType(
"npn", 23)
4016 .registerModelType(
"pnp", 23);