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;
728 int numSta = staLIDVecRef.size();
765 std::vector<int> & map=
jacMap;
766 std::vector< std::vector<int> > & map2=
jacMap2;
1033 bool bsuccess =
true;
1062 bool bsuccess =
true;
1084 #ifdef Xyce_DEBUG_DEVICE
1087 Xyce::dout() << std::endl << subsection_divider << std::endl;
1088 Xyce::dout() <<
" In ADMSHBT_X::Instance::updateIntermediateVars\n\n";
1089 Xyce::dout() <<
" name = " <<
getName() << std::endl;
1146 double vbei_orig,vbei_limited,vbei_old;
1147 double vbci_orig,vbci_limited,vbci_old;
1148 double vbcx_orig,vbcx_limited,vbcx_old;
1164 for (
int i=0; i < 12+3 ; ++i)
1172 for (
int i=0; i < 19 ; ++i)
1261 if ((*flagSolVectorPtr)[
li_e] == 0 ||
1262 (*flagSolVectorPtr)[
li_ei] == 0 ||
1263 (*flagSolVectorPtr)[
li_ex] == 0 ||
1264 (*flagSolVectorPtr)[
li_exx] == 0 ||
1265 (*flagSolVectorPtr)[
li_b] == 0 ||
1266 (*flagSolVectorPtr)[
li_bi] == 0 ||
1267 (*flagSolVectorPtr)[
li_bii] == 0 ||
1268 (*flagSolVectorPtr)[
li_c] == 0 ||
1269 (*flagSolVectorPtr)[
li_ci] == 0 ||
1270 (*flagSolVectorPtr)[
li_cx] == 0 ||
1271 (*flagSolVectorPtr)[
li_t] == 0 ||
1272 (*flagSolVectorPtr)[
li_ti] == 0 )
1274 vbcx_limited = vbci_limited = 0;
1275 vbei_limited = tVCrit;
1281 vbcx_limited = vbci_limited = 0;
1282 vbei_limited = tVCrit;
1284 #ifdef Xyce_DEBUG_DEVICE
1287 Xyce::dout() <<
" Setting device initial condition to Base-Emitter drop=tVCri (" << tVCrit <<
")" << std::endl;
1302 vbei_old = vbei_limited;
1303 vbci_old = vbci_limited;
1304 vbcx_old = vbcx_limited;
1376 Area = (((
L*
W)*1.0e12)*
N);
1377 FOUR_K = (4*1.3806226e-23);
1378 TWO_Q = (2*1.6021918e-19);
1383 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)));
1425 qb = ((q1+sqrt(((q1*q1)+(4.0*q2))))/2.0);
1470 Ib0 = (Ic0a*EdBeta);
1493 Ibdxx = (vxxe*1e-12);
1503 Ipdiss = ((((Ic1*vcei)+(Ib1*vbei))+(Ib2*vbci))+(Ibx*vbcx));
1511 if ((((
model_.
J0)<=0.0)||(Ic0<0.0)))
1523 if ((((
model_.
J0)<0.0)||(Ic0<0.0)))
1543 qb2 = (qb2med+qbtr);
1569 Wh = ((Ih+sqrt(((Ih*Ih)+AHC)))/(1.0+sqrt((1.0+AHC))));
1718 contribTemp= (-Ipdiss);
1759 #ifdef Xyce_DEBUG_DEVICE
1762 Xyce::dout() <<
" probeVars[admsProbeID_V_t_ti] = "
1764 Xyce::dout() <<
" probeVars[admsProbeID_V_b_c] = "
1766 Xyce::dout() <<
" probeVars[admsProbeID_V_c_GND] = "
1768 Xyce::dout() <<
" probeVars[admsProbeID_V_b_GND] = "
1770 Xyce::dout() <<
" probeVars[admsProbeID_V_cx_bii] = "
1772 Xyce::dout() <<
" probeVars[admsProbeID_V_exx_bii] = "
1774 Xyce::dout() <<
" probeVars[admsProbeID_V_ex_bii] = "
1776 Xyce::dout() <<
" probeVars[admsProbeID_V_bii_bi] = "
1778 Xyce::dout() <<
" probeVars[admsProbeID_I_c_ci] = "
1780 Xyce::dout() <<
" probeVars[admsProbeID_I_e_ei] = "
1782 Xyce::dout() <<
" probeVars[admsProbeID_I_b_bi] = "
1784 Xyce::dout() <<
" probeVars[admsProbeID_V_ti_GND] = "
1786 Xyce::dout() <<
" probeVars[admsProbeID_V_ci_ei] = "
1788 Xyce::dout() <<
" probeVars[admsProbeID_V_exx_ei] = "
1790 Xyce::dout() <<
" probeVars[admsProbeID_V_cx_ci] = "
1792 Xyce::dout() <<
" probeVars[admsProbeID_V_ex_ei] = "
1794 Xyce::dout() <<
" probeVars[admsProbeID_V_bii_ei] = "
1796 Xyce::dout() <<
" probeVars[admsProbeID_V_bii_ci] = "
1798 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ci] = "
1800 Xyce::dout() <<
" staticContributions[admsNodeID_c] = "
1804 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_c_GND) << std::endl;
1805 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_b_GND) << std::endl;
1814 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
1815 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_exx_ei) << std::endl;
1816 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
1817 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_ex_ei) << std::endl;
1821 Xyce::dout() <<
" dynamicContributions[admsNodeID_c] = "
1825 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_c_GND) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_c_GND) << std::endl;
1826 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_b_GND) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_b_GND) << std::endl;
1835 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
1836 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_exx_ei) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_exx_ei) << std::endl;
1837 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
1838 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ex_ei) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_ex_ei) << std::endl;
1842 Xyce::dout() <<
" Jdxp_static[admsNodeID_c] = "
1844 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c] = "
1846 Xyce::dout() <<
" staticContributions[admsNodeID_b] = "
1850 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_c_GND) << std::endl;
1851 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_b_GND) << std::endl;
1860 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
1861 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_exx_ei) << std::endl;
1862 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
1863 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_ex_ei) << std::endl;
1867 Xyce::dout() <<
" dynamicContributions[admsNodeID_b] = "
1871 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_c_GND) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_c_GND) << std::endl;
1872 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_b_GND) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_b_GND) << std::endl;
1881 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
1882 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_exx_ei) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_exx_ei) << std::endl;
1883 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
1884 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ex_ei) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_ex_ei) << std::endl;
1888 Xyce::dout() <<
" Jdxp_static[admsNodeID_b] = "
1890 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_b] = "
1892 Xyce::dout() <<
" staticContributions[admsNodeID_e] = "
1896 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_c_GND) << std::endl;
1897 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_b_GND) << std::endl;
1906 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
1907 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_exx_ei) << std::endl;
1908 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
1909 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_ex_ei) << std::endl;
1913 Xyce::dout() <<
" dynamicContributions[admsNodeID_e] = "
1917 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_c_GND) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_c_GND) << std::endl;
1918 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_b_GND) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_b_GND) << std::endl;
1927 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
1928 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_exx_ei) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_exx_ei) << std::endl;
1929 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
1930 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ex_ei) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_ex_ei) << std::endl;
1934 Xyce::dout() <<
" Jdxp_static[admsNodeID_e] = "
1936 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_e] = "
1938 Xyce::dout() <<
" staticContributions[admsNodeID_t] = "
1942 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_c_GND) << std::endl;
1943 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_b_GND) << std::endl;
1952 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_ci_ei) << std::endl;
1953 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_exx_ei) << std::endl;
1954 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_cx_ci) << std::endl;
1955 Xyce::dout() <<
" staticContributions[admsNodeID_t].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_t].dx(admsProbeID_V_ex_ei) << std::endl;
1959 Xyce::dout() <<
" dynamicContributions[admsNodeID_t] = "
1963 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_c_GND) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_c_GND) << std::endl;
1964 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_b_GND) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_b_GND) << std::endl;
1973 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_ci_ei) << std::endl;
1974 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_exx_ei) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_exx_ei) << std::endl;
1975 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_cx_ci) << std::endl;
1976 Xyce::dout() <<
" dynamicContributions[admsNodeID_t].dx(admsProbeID_V_ex_ei) = " <<
dynamicContributions[
admsNodeID_t].dx(admsProbeID_V_ex_ei) << std::endl;
1980 Xyce::dout() <<
" Jdxp_static[admsNodeID_t] = "
1982 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_t] = "
1984 Xyce::dout() <<
" staticContributions[admsNodeID_ei] = "
1988 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_c_GND) << std::endl;
1989 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_b_GND) << std::endl;
1998 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
1999 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_exx_ei) << std::endl;
2000 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
2001 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_ex_ei) << std::endl;
2005 Xyce::dout() <<
" dynamicContributions[admsNodeID_ei] = "
2026 Xyce::dout() <<
" Jdxp_static[admsNodeID_ei] = "
2028 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ei] = "
2030 Xyce::dout() <<
" staticContributions[admsNodeID_bi] = "
2034 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_c_GND) << std::endl;
2035 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_b_GND) << std::endl;
2044 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
2045 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_exx_ei) << std::endl;
2046 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
2047 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_ex_ei) << std::endl;
2051 Xyce::dout() <<
" dynamicContributions[admsNodeID_bi] = "
2072 Xyce::dout() <<
" Jdxp_static[admsNodeID_bi] = "
2074 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bi] = "
2076 Xyce::dout() <<
" staticContributions[admsNodeID_bii] = "
2097 Xyce::dout() <<
" dynamicContributions[admsNodeID_bii] = "
2118 Xyce::dout() <<
" Jdxp_static[admsNodeID_bii] = "
2120 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bii] = "
2122 Xyce::dout() <<
" staticContributions[admsNodeID_ci] = "
2126 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_c_GND) << std::endl;
2127 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_b_GND) << std::endl;
2136 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
2137 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_exx_ei) << std::endl;
2138 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
2139 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_ex_ei) << std::endl;
2143 Xyce::dout() <<
" dynamicContributions[admsNodeID_ci] = "
2164 Xyce::dout() <<
" Jdxp_static[admsNodeID_ci] = "
2166 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ci] = "
2168 Xyce::dout() <<
" staticContributions[admsNodeID_ti] = "
2172 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_c_GND) << std::endl;
2173 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_b_GND) << std::endl;
2182 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_ci_ei) << std::endl;
2183 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_exx_ei) << std::endl;
2184 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_cx_ci) << std::endl;
2185 Xyce::dout() <<
" staticContributions[admsNodeID_ti].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_ti].dx(admsProbeID_V_ex_ei) << std::endl;
2189 Xyce::dout() <<
" dynamicContributions[admsNodeID_ti] = "
2210 Xyce::dout() <<
" Jdxp_static[admsNodeID_ti] = "
2212 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ti] = "
2214 Xyce::dout() <<
" staticContributions[admsNodeID_ex] = "
2218 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_c_GND) << std::endl;
2219 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_b_GND) << std::endl;
2228 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_ci_ei) << std::endl;
2229 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_exx_ei) << std::endl;
2230 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_cx_ci) << std::endl;
2231 Xyce::dout() <<
" staticContributions[admsNodeID_ex].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_ex].dx(admsProbeID_V_ex_ei) << std::endl;
2235 Xyce::dout() <<
" dynamicContributions[admsNodeID_ex] = "
2256 Xyce::dout() <<
" Jdxp_static[admsNodeID_ex] = "
2258 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ex] = "
2260 Xyce::dout() <<
" staticContributions[admsNodeID_exx] = "
2281 Xyce::dout() <<
" dynamicContributions[admsNodeID_exx] = "
2302 Xyce::dout() <<
" Jdxp_static[admsNodeID_exx] = "
2304 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_exx] = "
2306 Xyce::dout() <<
" staticContributions[admsNodeID_cx] = "
2310 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_c_GND) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_c_GND) << std::endl;
2311 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_b_GND) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_b_GND) << std::endl;
2320 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
2321 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_exx_ei) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_exx_ei) << std::endl;
2322 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
2323 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_ex_ei) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_ex_ei) << std::endl;
2327 Xyce::dout() <<
" dynamicContributions[admsNodeID_cx] = "
2348 Xyce::dout() <<
" Jdxp_static[admsNodeID_cx] = "
2350 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_cx] = "
2352 Xyce::dout() <<
" staticContributions[admsBRA_ID_b_bi] = "
2373 Xyce::dout() <<
" dynamicContributions[admsBRA_ID_b_bi] = "
2394 Xyce::dout() <<
" staticContributions[admsBRA_ID_e_ei] = "
2415 Xyce::dout() <<
" dynamicContributions[admsBRA_ID_e_ei] = "
2436 Xyce::dout() <<
" staticContributions[admsBRA_ID_c_ci] = "
2457 Xyce::dout() <<
" dynamicContributions[admsBRA_ID_c_ci] = "
2480 Xyce::dout() <<
"This step was limited by this device." << std::endl;
2482 #endif // Xyce_DEBUG_DEVICE
2496 bool bsuccess =
true;
2499 #ifdef Xyce_DEBUG_DEVICE
2502 Xyce::dout() << subsection_divider << std::endl;
2503 Xyce::dout() <<
"ADMSHBT_X::Instance::loadDAEdFdx (" <<
getName() <<
"):" << std::endl;
2509 #ifdef Xyce_DEBUG_DEVICE
2518 #ifdef Xyce_DEBUG_DEVICE
2527 #ifdef Xyce_DEBUG_DEVICE
2536 #ifdef Xyce_DEBUG_DEVICE
2545 #ifdef Xyce_DEBUG_DEVICE
2554 #ifdef Xyce_DEBUG_DEVICE
2563 #ifdef Xyce_DEBUG_DEVICE
2572 #ifdef Xyce_DEBUG_DEVICE
2581 #ifdef Xyce_DEBUG_DEVICE
2590 #ifdef Xyce_DEBUG_DEVICE
2599 #ifdef Xyce_DEBUG_DEVICE
2608 #ifdef Xyce_DEBUG_DEVICE
2617 #ifdef Xyce_DEBUG_DEVICE
2626 #ifdef Xyce_DEBUG_DEVICE
2635 #ifdef Xyce_DEBUG_DEVICE
2644 #ifdef Xyce_DEBUG_DEVICE
2653 #ifdef Xyce_DEBUG_DEVICE
2662 #ifdef Xyce_DEBUG_DEVICE
2671 #ifdef Xyce_DEBUG_DEVICE
2680 #ifdef Xyce_DEBUG_DEVICE
2689 #ifdef Xyce_DEBUG_DEVICE
2698 #ifdef Xyce_DEBUG_DEVICE
2707 #ifdef Xyce_DEBUG_DEVICE
2716 #ifdef Xyce_DEBUG_DEVICE
2725 #ifdef Xyce_DEBUG_DEVICE
2734 #ifdef Xyce_DEBUG_DEVICE
2743 #ifdef Xyce_DEBUG_DEVICE
2752 #ifdef Xyce_DEBUG_DEVICE
2761 #ifdef Xyce_DEBUG_DEVICE
2770 #ifdef Xyce_DEBUG_DEVICE
2779 #ifdef Xyce_DEBUG_DEVICE
2788 #ifdef Xyce_DEBUG_DEVICE
2797 #ifdef Xyce_DEBUG_DEVICE
2806 #ifdef Xyce_DEBUG_DEVICE
2815 #ifdef Xyce_DEBUG_DEVICE
2824 #ifdef Xyce_DEBUG_DEVICE
2833 #ifdef Xyce_DEBUG_DEVICE
2842 #ifdef Xyce_DEBUG_DEVICE
2851 #ifdef Xyce_DEBUG_DEVICE
2860 #ifdef Xyce_DEBUG_DEVICE
2869 #ifdef Xyce_DEBUG_DEVICE
2878 #ifdef Xyce_DEBUG_DEVICE
2887 #ifdef Xyce_DEBUG_DEVICE
2896 #ifdef Xyce_DEBUG_DEVICE
2905 #ifdef Xyce_DEBUG_DEVICE
2915 #ifdef Xyce_DEBUG_DEVICE
2925 #ifdef Xyce_DEBUG_DEVICE
2935 #ifdef Xyce_DEBUG_DEVICE
2945 #ifdef Xyce_DEBUG_DEVICE
2955 #ifdef Xyce_DEBUG_DEVICE
2964 (*f_BRA_b_bi_Equ_b_Node_Ptr) += -1;
2966 #ifdef Xyce_DEBUG_DEVICE
2968 { Xyce::dout() <<
" (*f_BRA_b_bi_Equ_b_Node_Ptr) += " << -1<< std::endl;
2973 (*f_BRA_b_bi_Equ_bi_Node_Ptr) += +1;
2975 #ifdef Xyce_DEBUG_DEVICE
2977 { Xyce::dout() <<
" (*f_BRA_b_bi_Equ_bi_Node_Ptr) += " << +1<< std::endl;
2984 #ifdef Xyce_DEBUG_DEVICE
2992 (*f_BRA_e_ei_Equ_e_Node_Ptr) += -1;
2994 #ifdef Xyce_DEBUG_DEVICE
2996 { Xyce::dout() <<
" (*f_BRA_e_ei_Equ_e_Node_Ptr) += " << -1<< std::endl;
3001 (*f_BRA_e_ei_Equ_ei_Node_Ptr) += +1;
3003 #ifdef Xyce_DEBUG_DEVICE
3005 { Xyce::dout() <<
" (*f_BRA_e_ei_Equ_ei_Node_Ptr) += " << +1<< std::endl;
3012 #ifdef Xyce_DEBUG_DEVICE
3020 (*f_BRA_c_ci_Equ_c_Node_Ptr) += -1;
3022 #ifdef Xyce_DEBUG_DEVICE
3024 { Xyce::dout() <<
" (*f_BRA_c_ci_Equ_c_Node_Ptr) += " << -1<< std::endl;
3029 (*f_BRA_c_ci_Equ_ci_Node_Ptr) += +1;
3031 #ifdef Xyce_DEBUG_DEVICE
3033 { Xyce::dout() <<
" (*f_BRA_c_ci_Equ_ci_Node_Ptr) += " << +1<< std::endl;
3040 #ifdef Xyce_DEBUG_DEVICE
3062 bool bsuccess =
true;
3065 #ifdef Xyce_DEBUG_DEVICE
3068 Xyce::dout() << subsection_divider << std::endl;
3069 Xyce::dout() <<
"ADMSHBT_X::Instance::loadDAEdQdx (" <<
getName() <<
"):" << std::endl;
3075 #ifdef Xyce_DEBUG_DEVICE
3084 #ifdef Xyce_DEBUG_DEVICE
3093 #ifdef Xyce_DEBUG_DEVICE
3102 #ifdef Xyce_DEBUG_DEVICE
3111 #ifdef Xyce_DEBUG_DEVICE
3120 #ifdef Xyce_DEBUG_DEVICE
3129 #ifdef Xyce_DEBUG_DEVICE
3138 #ifdef Xyce_DEBUG_DEVICE
3147 #ifdef Xyce_DEBUG_DEVICE
3156 #ifdef Xyce_DEBUG_DEVICE
3165 #ifdef Xyce_DEBUG_DEVICE
3174 #ifdef Xyce_DEBUG_DEVICE
3183 #ifdef Xyce_DEBUG_DEVICE
3192 #ifdef Xyce_DEBUG_DEVICE
3201 #ifdef Xyce_DEBUG_DEVICE
3210 #ifdef Xyce_DEBUG_DEVICE
3219 #ifdef Xyce_DEBUG_DEVICE
3228 #ifdef Xyce_DEBUG_DEVICE
3237 #ifdef Xyce_DEBUG_DEVICE
3246 #ifdef Xyce_DEBUG_DEVICE
3255 #ifdef Xyce_DEBUG_DEVICE
3264 #ifdef Xyce_DEBUG_DEVICE
3273 #ifdef Xyce_DEBUG_DEVICE
3282 #ifdef Xyce_DEBUG_DEVICE
3349 if ( (!((
Mode >=0 &&
Mode <=4 ))) )
3351 UserError0(*
this) <<
"ADMSHBT_X: Parameter Mode value " <<
Mode <<
" out of range [ 0, 4 ]";
3357 UserError0(*
this) <<
"ADMSHBT_X: Parameter Noise value " <<
Noise <<
" out of range [ 0, 4 ]";
3361 if ( (!((
Debug >=0))) )
3363 UserError0(*
this) <<
"ADMSHBT_X: Parameter Debug value " <<
Debug <<
" out of range [ 0, (+inf) [";
3369 UserError0(*
this) <<
"ADMSHBT_X: Parameter DebugPlus value " <<
DebugPlus <<
" out of range [ 0, (+inf) [";
3373 if ( (!((
Rth >=0.0))) )
3375 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rth value " <<
Rth <<
" out of range [ 0.0, (+inf) [";
3379 if ( (!((
Cth >=0.0))) )
3381 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cth value " <<
Cth <<
" out of range [ 0.0, (+inf) [";
3385 if ( (!((
Jsf >=0.0))) )
3387 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jsf value " <<
Jsf <<
" out of range [ 0.0, (+inf) [";
3391 if ( (!((
nf >=0.0))) )
3393 UserError0(*
this) <<
"ADMSHBT_X: Parameter nf value " <<
nf <<
" out of range [ 0.0, (+inf) [";
3397 if ( (!((
Vg >=(-2.0)))) )
3399 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vg value " <<
Vg <<
" out of range [ (-2.0), (+inf) [";
3403 if ( (!((
Jse >=0.0))) )
3405 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jse value " <<
Jse <<
" out of range [ 0.0, (+inf) [";
3409 if ( (!((
ne >=0.0))) )
3411 UserError0(*
this) <<
"ADMSHBT_X: Parameter ne value " <<
ne <<
" out of range [ 0.0, (+inf) [";
3415 if ( (!((
Rbxx >0.0))) )
3417 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rbxx value " <<
Rbxx <<
" out of range ] 0.0, (+inf) [";
3421 if ( (!((
Vgb >=0.0))) )
3423 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vgb value " <<
Vgb <<
" out of range [ 0.0, (+inf) [";
3427 if ( (!((
Jsee >=0.0))) )
3429 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jsee value " <<
Jsee <<
" out of range [ 0.0, (+inf) [";
3433 if ( (!((
nee >=0.0))) )
3435 UserError0(*
this) <<
"ADMSHBT_X: Parameter nee value " <<
nee <<
" out of range [ 0.0, (+inf) [";
3439 if ( (!((
Rbbxx >0.0))) )
3441 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rbbxx value " <<
Rbbxx <<
" out of range ] 0.0, (+inf) [";
3445 if ( (!((
Vgbb >=0.0))) )
3447 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vgbb value " <<
Vgbb <<
" out of range [ 0.0, (+inf) [";
3451 if ( (!((
Jsr >=0.0))) )
3453 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jsr value " <<
Jsr <<
" out of range [ 0.0, (+inf) [";
3457 if ( (!((
nr >=0.0))) )
3459 UserError0(*
this) <<
"ADMSHBT_X: Parameter nr value " <<
nr <<
" out of range [ 0.0, (+inf) [";
3463 if ( (!((
Vgr >=0.0))) )
3465 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vgr value " <<
Vgr <<
" out of range [ 0.0, (+inf) [";
3469 if ( (!((
XCjc >=0.0 &&
XCjc <1.0 ))) )
3471 UserError0(*
this) <<
"ADMSHBT_X: Parameter XCjc value " <<
XCjc <<
" out of range [ 0.0, 1.0 [";
3475 if ( (!((
Jsc >=0.0))) )
3477 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jsc value " <<
Jsc <<
" out of range [ 0.0, (+inf) [";
3481 if ( (!((
nc >=0.0))) )
3483 UserError0(*
this) <<
"ADMSHBT_X: Parameter nc value " <<
nc <<
" out of range [ 0.0, (+inf) [";
3487 if ( (!((
Rcxx >0.0))) )
3489 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rcxx value " <<
Rcxx <<
" out of range ] 0.0, (+inf) [";
3493 if ( (!((
Vgc >=0.0))) )
3495 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vgc value " <<
Vgc <<
" out of range [ 0.0, (+inf) [";
3499 if ( (!((
Bf >=0.0))) )
3501 UserError0(*
this) <<
"ADMSHBT_X: Parameter Bf value " <<
Bf <<
" out of range [ 0.0, (+inf) [";
3505 if ( (!((
kBeta >=0.0))) )
3507 UserError0(*
this) <<
"ADMSHBT_X: Parameter kBeta value " <<
kBeta <<
" out of range [ 0.0, (+inf) [";
3511 if ( (!((
Br >=0.0))) )
3513 UserError0(*
this) <<
"ADMSHBT_X: Parameter Br value " <<
Br <<
" out of range [ 0.0, (+inf) [";
3517 if ( (!((
VAF >=0.0))) )
3519 UserError0(*
this) <<
"ADMSHBT_X: Parameter VAF value " <<
VAF <<
" out of range [ 0.0, (+inf) [";
3523 if ( (!((
VAR >=0.0))) )
3525 UserError0(*
this) <<
"ADMSHBT_X: Parameter VAR value " <<
VAR <<
" out of range [ 0.0, (+inf) [";
3529 if ( (!((
IKF >=0.0))) )
3531 UserError0(*
this) <<
"ADMSHBT_X: Parameter IKF value " <<
IKF <<
" out of range [ 0.0, (+inf) [";
3535 if ( (!((
IKR >=0.0))) )
3537 UserError0(*
this) <<
"ADMSHBT_X: Parameter IKR value " <<
IKR <<
" out of range [ 0.0, (+inf) [";
3541 if ( (!((
Mc >=0.0))) )
3543 UserError0(*
this) <<
"ADMSHBT_X: Parameter Mc value " <<
Mc <<
" out of range [ 0.0, (+inf) [";
3547 if ( (!((
BVceo >=0.0))) )
3549 UserError0(*
this) <<
"ADMSHBT_X: Parameter BVceo value " <<
BVceo <<
" out of range [ 0.0, (+inf) [";
3553 if ( (!((
kc >=0.0))) )
3555 UserError0(*
this) <<
"ADMSHBT_X: Parameter kc value " <<
kc <<
" out of range [ 0.0, (+inf) [";
3559 if ( (!((
BVebo >=0.0))) )
3561 UserError0(*
this) <<
"ADMSHBT_X: Parameter BVebo value " <<
BVebo <<
" out of range [ 0.0, (+inf) [";
3565 if ( (!((
Tr >=0.0))) )
3567 UserError0(*
this) <<
"ADMSHBT_X: Parameter Tr value " <<
Tr <<
" out of range [ 0.0, (+inf) [";
3571 if ( (!((
Trx >=0.0))) )
3573 UserError0(*
this) <<
"ADMSHBT_X: Parameter Trx value " <<
Trx <<
" out of range [ 0.0, (+inf) [";
3577 if ( (!((
Tf >=0.0))) )
3579 UserError0(*
this) <<
"ADMSHBT_X: Parameter Tf value " <<
Tf <<
" out of range [ 0.0, (+inf) [";
3583 if ( (!((
Tft >=0.0))) )
3585 UserError0(*
this) <<
"ADMSHBT_X: Parameter Tft value " <<
Tft <<
" out of range [ 0.0, (+inf) [";
3589 if ( (!((
Thcs >=0.0))) )
3591 UserError0(*
this) <<
"ADMSHBT_X: Parameter Thcs value " <<
Thcs <<
" out of range [ 0.0, (+inf) [";
3595 if ( (!((
Ahc >=0.0))) )
3597 UserError0(*
this) <<
"ADMSHBT_X: Parameter Ahc value " <<
Ahc <<
" out of range [ 0.0, (+inf) [";
3601 if ( (!((
Cje >=0.0))) )
3603 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cje value " <<
Cje <<
" out of range [ 0.0, (+inf) [";
3607 if ( (!((
mje >=0.0 &&
mje <1 ))) )
3609 UserError0(*
this) <<
"ADMSHBT_X: Parameter mje value " <<
mje <<
" out of range [ 0.0, 1 [";
3613 if ( (!((
Vje >=0.0))) )
3615 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vje value " <<
Vje <<
" out of range [ 0.0, (+inf) [";
3619 if ( (!((
Cjc >=0.0))) )
3621 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cjc value " <<
Cjc <<
" out of range [ 0.0, (+inf) [";
3625 if ( (!((
mjc >=0.0))) )
3627 UserError0(*
this) <<
"ADMSHBT_X: Parameter mjc value " <<
mjc <<
" out of range [ 0.0, (+inf) [";
3631 if ( (!((
Vjc >=0.0))) )
3633 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vjc value " <<
Vjc <<
" out of range [ 0.0, (+inf) [";
3639 if ( (!((
Cmin >=0.0))) )
3641 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cmin value " <<
Cmin <<
" out of range [ 0.0, (+inf) [";
3645 if ( (!((
J0 >=0.0))) )
3647 UserError0(*
this) <<
"ADMSHBT_X: Parameter J0 value " <<
J0 <<
" out of range [ 0.0, (+inf) [";
3651 if ( (!((
XJ0 >=0.0 &&
XJ0 <=1.0 ))) )
3653 UserError0(*
this) <<
"ADMSHBT_X: Parameter XJ0 value " <<
XJ0 <<
" out of range [ 0.0, 1.0 ]";
3657 if ( (!((
Rci0 >0.0))) )
3659 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rci0 value " <<
Rci0 <<
" out of range ] 0.0, (+inf) [";
3663 if ( (!((
Jk >=0.0))) )
3665 UserError0(*
this) <<
"ADMSHBT_X: Parameter Jk value " <<
Jk <<
" out of range [ 0.0, (+inf) [";
3669 if ( (!((
RJk >=0.0))) )
3671 UserError0(*
this) <<
"ADMSHBT_X: Parameter RJk value " <<
RJk <<
" out of range [ 0.0, (+inf) [";
3675 if ( (!((
Vces >=0.0))) )
3677 UserError0(*
this) <<
"ADMSHBT_X: Parameter Vces value " <<
Vces <<
" out of range [ 0.0, (+inf) [";
3681 if ( (!((
Rc >0.0))) )
3683 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rc value " <<
Rc <<
" out of range ] 0.0, (+inf) [";
3687 if ( (!((
Re >0.0))) )
3689 UserError0(*
this) <<
"ADMSHBT_X: Parameter Re value " <<
Re <<
" out of range ] 0.0, (+inf) [";
3693 if ( (!((
Rb >0.0))) )
3695 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rb value " <<
Rb <<
" out of range ] 0.0, (+inf) [";
3699 if ( (!((
Rb2 >0.0))) )
3701 UserError0(*
this) <<
"ADMSHBT_X: Parameter Rb2 value " <<
Rb2 <<
" out of range ] 0.0, (+inf) [";
3705 if ( (!((
Lc >=0.0))) )
3707 UserError0(*
this) <<
"ADMSHBT_X: Parameter Lc value " <<
Lc <<
" out of range [ 0.0, (+inf) [";
3711 if ( (!((
Le >=0.0))) )
3713 UserError0(*
this) <<
"ADMSHBT_X: Parameter Le value " <<
Le <<
" out of range [ 0.0, (+inf) [";
3717 if ( (!((
Lb >=0.0))) )
3719 UserError0(*
this) <<
"ADMSHBT_X: Parameter Lb value " <<
Lb <<
" out of range [ 0.0, (+inf) [";
3723 if ( (!((
Cq >=0.0))) )
3725 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cq value " <<
Cq <<
" out of range [ 0.0, (+inf) [";
3729 if ( (!((
Cpb >=0.0))) )
3731 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cpb value " <<
Cpb <<
" out of range [ 0.0, (+inf) [";
3735 if ( (!((
Cpc >=0.0))) )
3737 UserError0(*
this) <<
"ADMSHBT_X: Parameter Cpc value " <<
Cpc <<
" out of range [ 0.0, (+inf) [";
3741 if ( (!((
Tnom >=(-273.15)))) )
3743 UserError0(*
this) <<
"ADMSHBT_X: Parameter Tnom value " <<
Tnom <<
" out of range [ (-273.15), (+inf) [";
3749 UserError0(*
this) <<
"ADMSHBT_X: Parameter dtype value " <<
dtype <<
" out of range [ (-1), 1 ] or in excluded range [ 0, 0 ]";
3770 std::vector<Instance*>::iterator iter;
3774 for (iter=first; iter!=last; ++iter)
3776 (*iter)->processParams();
3794 :
DeviceModel(model_block, configuration.getModelParameters(), factory_block),
3875 if (!
given(
"XYCEADMSMODTEMP"))
3907 std::vector<Instance*>::iterator iterI;
3912 for (iterI = firstI; iterI != lastI; ++iterI)
3928 std::vector<Instance*>::const_iterator iter;
3934 os <<
" name model name Parameters" << std::endl;
3935 for (i=0, iter=first; iter!=last; ++iter, ++i)
3937 os <<
" " << i <<
": " << (*iter)->getName() <<
" ";
3941 os <<
"TEMP = " << (*iter)->Temp << std::endl;
3942 os <<
"N = " << (*iter)->N << std::endl;
3943 os <<
"L = " << (*iter)->L << std::endl;
3944 os <<
"W = " << (*iter)->W << std::endl;
3969 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
3981 .registerDevice(
"q", 23)
3982 .registerModelType(
"npn", 23)
3983 .registerModelType(
"pnp", 23);