49 #include <Xyce_config.h>
61 #include <N_LAS_Matrix.h>
62 #include <N_LAS_Vector.h>
64 #include <N_UTL_FeatureTest.h>
65 #if defined(HAVE_UNORDERED_MAP)
66 #include <unordered_map>
67 using std::unordered_map;
68 #elif defined(HAVE_TR1_UNORDERED_MAP)
69 #include <tr1/unordered_map>
70 using std::tr1::unordered_map;
72 #error neither unordered_map or tr1/unordered_map found
77 namespace ADMSbjt504va {
90 .setExpressionAccess(
NO_DOC)
93 .setDescription(
"Internal-use parameter for setting device instance temperature");
95 .setDescription(
"Multiplication factor")
96 #ifdef Xyce_ADMS_SENSITIVITIES
97 .setAnalyticSensitivityAvailable(
true)
98 .setSensitivityFunctor(&instSens)
99 #endif // Xyce_ADMS_SENSITIVITIES
114 .setExpressionAccess(
NO_DOC)
117 .setDescription(
"Internal-use parameter for setting device model temperature");
119 .setDescription(
"Model level");
122 .setDescription(
"Reference temperature")
123 #ifdef Xyce_ADMS_SENSITIVITIES
124 .setAnalyticSensitivityAvailable(
true)
125 .setSensitivityFunctor(&modSens)
126 #endif // Xyce_ADMS_SENSITIVITIES
130 .setDescription(
"Difference between the local and global ambient temperatures")
131 #ifdef Xyce_ADMS_SENSITIVITIES
132 .setAnalyticSensitivityAvailable(
true)
133 .setSensitivityFunctor(&modSens)
134 #endif // Xyce_ADMS_SENSITIVITIES
137 .setDescription(
"Flag for extended modeling of the reverse current gain");
139 .setDescription(
"Flag for the distributed high-frequency effects in transient");
141 .setDescription(
"Flag for extended modeling of avalanche currents");
143 .setDescription(
"Flag for extended modelling of substrate currents");
146 .setDescription(
"Collector-emitter saturation current")
147 #ifdef Xyce_ADMS_SENSITIVITIES
148 .setAnalyticSensitivityAvailable(
true)
149 .setSensitivityFunctor(&modSens)
150 #endif // Xyce_ADMS_SENSITIVITIES
154 .setDescription(
"Collector-emitter high injection knee current")
155 #ifdef Xyce_ADMS_SENSITIVITIES
156 .setAnalyticSensitivityAvailable(
true)
157 .setSensitivityFunctor(&modSens)
158 #endif // Xyce_ADMS_SENSITIVITIES
162 .setDescription(
"Reverse Early voltage")
163 #ifdef Xyce_ADMS_SENSITIVITIES
164 .setAnalyticSensitivityAvailable(
true)
165 .setSensitivityFunctor(&modSens)
166 #endif // Xyce_ADMS_SENSITIVITIES
170 .setDescription(
"Forward Early voltage")
171 #ifdef Xyce_ADMS_SENSITIVITIES
172 .setAnalyticSensitivityAvailable(
true)
173 .setSensitivityFunctor(&modSens)
174 #endif // Xyce_ADMS_SENSITIVITIES
177 .setDescription(
"Ideal forward current gain")
178 #ifdef Xyce_ADMS_SENSITIVITIES
179 .setAnalyticSensitivityAvailable(
true)
180 .setSensitivityFunctor(&modSens)
181 #endif // Xyce_ADMS_SENSITIVITIES
185 .setDescription(
"Saturation current of the non-ideal forward base current")
186 #ifdef Xyce_ADMS_SENSITIVITIES
187 .setAnalyticSensitivityAvailable(
true)
188 .setSensitivityFunctor(&modSens)
189 #endif // Xyce_ADMS_SENSITIVITIES
192 .setDescription(
"Non-ideality factor of the non-ideal forward base current")
193 #ifdef Xyce_ADMS_SENSITIVITIES
194 .setAnalyticSensitivityAvailable(
true)
195 .setSensitivityFunctor(&modSens)
196 #endif // Xyce_ADMS_SENSITIVITIES
199 .setDescription(
"Part of ideal base current that belongs to the sidewall")
200 #ifdef Xyce_ADMS_SENSITIVITIES
201 .setAnalyticSensitivityAvailable(
true)
202 .setSensitivityFunctor(&modSens)
203 #endif // Xyce_ADMS_SENSITIVITIES
207 .setDescription(
"Pre-factor of emitter-base Zener tunneling current")
208 #ifdef Xyce_ADMS_SENSITIVITIES
209 .setAnalyticSensitivityAvailable(
true)
210 .setSensitivityFunctor(&modSens)
211 #endif // Xyce_ADMS_SENSITIVITIES
214 .setDescription(
"Coefficient of emitter-base Zener tunneling current")
215 #ifdef Xyce_ADMS_SENSITIVITIES
216 .setAnalyticSensitivityAvailable(
true)
217 .setSensitivityFunctor(&modSens)
218 #endif // Xyce_ADMS_SENSITIVITIES
221 .setDescription(
"Ideal reverse current gain")
222 #ifdef Xyce_ADMS_SENSITIVITIES
223 .setAnalyticSensitivityAvailable(
true)
224 .setSensitivityFunctor(&modSens)
225 #endif // Xyce_ADMS_SENSITIVITIES
229 .setDescription(
"Saturation current of the non-ideal reverse base current")
230 #ifdef Xyce_ADMS_SENSITIVITIES
231 .setAnalyticSensitivityAvailable(
true)
232 .setSensitivityFunctor(&modSens)
233 #endif // Xyce_ADMS_SENSITIVITIES
237 .setDescription(
"Cross-over voltage of the non-ideal reverse base current")
238 #ifdef Xyce_ADMS_SENSITIVITIES
239 .setAnalyticSensitivityAvailable(
true)
240 .setSensitivityFunctor(&modSens)
241 #endif // Xyce_ADMS_SENSITIVITIES
244 .setDescription(
"Part of currents and charges that belong to extrinsic region")
245 #ifdef Xyce_ADMS_SENSITIVITIES
246 .setAnalyticSensitivityAvailable(
true)
247 .setSensitivityFunctor(&modSens)
248 #endif // Xyce_ADMS_SENSITIVITIES
252 .setDescription(
"Epilayer thickness used in weak-avalanche model")
253 #ifdef Xyce_ADMS_SENSITIVITIES
254 .setAnalyticSensitivityAvailable(
true)
255 .setSensitivityFunctor(&modSens)
256 #endif // Xyce_ADMS_SENSITIVITIES
260 .setDescription(
"Voltage determining curvature of avalanche current")
261 #ifdef Xyce_ADMS_SENSITIVITIES
262 .setAnalyticSensitivityAvailable(
true)
263 .setSensitivityFunctor(&modSens)
264 #endif // Xyce_ADMS_SENSITIVITIES
267 .setDescription(
"Current spreading factor of avalanche model when EXAVL=1")
268 #ifdef Xyce_ADMS_SENSITIVITIES
269 .setAnalyticSensitivityAvailable(
true)
270 .setSensitivityFunctor(&modSens)
271 #endif // Xyce_ADMS_SENSITIVITIES
275 .setDescription(
"Emitter resistance")
276 #ifdef Xyce_ADMS_SENSITIVITIES
277 .setAnalyticSensitivityAvailable(
true)
278 .setSensitivityFunctor(&modSens)
279 #endif // Xyce_ADMS_SENSITIVITIES
283 .setDescription(
"Constant part of the base resistance")
284 #ifdef Xyce_ADMS_SENSITIVITIES
285 .setAnalyticSensitivityAvailable(
true)
286 .setSensitivityFunctor(&modSens)
287 #endif // Xyce_ADMS_SENSITIVITIES
291 .setDescription(
"Zero-bias value of the variable part of the base resistance")
292 #ifdef Xyce_ADMS_SENSITIVITIES
293 .setAnalyticSensitivityAvailable(
true)
294 .setSensitivityFunctor(&modSens)
295 #endif // Xyce_ADMS_SENSITIVITIES
299 .setDescription(
"Constant part of the collector resistance")
300 #ifdef Xyce_ADMS_SENSITIVITIES
301 .setAnalyticSensitivityAvailable(
true)
302 .setSensitivityFunctor(&modSens)
303 #endif // Xyce_ADMS_SENSITIVITIES
307 .setDescription(
"Resistance of the un-modulated epilayer")
308 #ifdef Xyce_ADMS_SENSITIVITIES
309 .setAnalyticSensitivityAvailable(
true)
310 .setSensitivityFunctor(&modSens)
311 #endif // Xyce_ADMS_SENSITIVITIES
315 .setDescription(
"Space charge resistance of the epilayer")
316 #ifdef Xyce_ADMS_SENSITIVITIES
317 .setAnalyticSensitivityAvailable(
true)
318 .setSensitivityFunctor(&modSens)
319 #endif // Xyce_ADMS_SENSITIVITIES
323 .setDescription(
"Critical current for velocity saturation in the epilayer")
324 #ifdef Xyce_ADMS_SENSITIVITIES
325 .setAnalyticSensitivityAvailable(
true)
326 .setSensitivityFunctor(&modSens)
327 #endif // Xyce_ADMS_SENSITIVITIES
330 .setDescription(
"Smoothness parameter for the onset of quasi-saturation")
331 #ifdef Xyce_ADMS_SENSITIVITIES
332 .setAnalyticSensitivityAvailable(
true)
333 .setSensitivityFunctor(&modSens)
334 #endif // Xyce_ADMS_SENSITIVITIES
338 .setDescription(
"Zero-bias emitter-base depletion capacitance")
339 #ifdef Xyce_ADMS_SENSITIVITIES
340 .setAnalyticSensitivityAvailable(
true)
341 .setSensitivityFunctor(&modSens)
342 #endif // Xyce_ADMS_SENSITIVITIES
346 .setDescription(
"Emitter-base diffusion voltage")
347 #ifdef Xyce_ADMS_SENSITIVITIES
348 .setAnalyticSensitivityAvailable(
true)
349 .setSensitivityFunctor(&modSens)
350 #endif // Xyce_ADMS_SENSITIVITIES
353 .setDescription(
"Emitter-base grading coefficient")
354 #ifdef Xyce_ADMS_SENSITIVITIES
355 .setAnalyticSensitivityAvailable(
true)
356 .setSensitivityFunctor(&modSens)
357 #endif // Xyce_ADMS_SENSITIVITIES
360 .setDescription(
"Sidewall fraction of the emitter-base depletion capacitance")
361 #ifdef Xyce_ADMS_SENSITIVITIES
362 .setAnalyticSensitivityAvailable(
true)
363 .setSensitivityFunctor(&modSens)
364 #endif // Xyce_ADMS_SENSITIVITIES
367 .setDescription(
"Emitter-base overlap capacitance")
368 #ifdef Xyce_ADMS_SENSITIVITIES
369 .setAnalyticSensitivityAvailable(
true)
370 .setSensitivityFunctor(&modSens)
371 #endif // Xyce_ADMS_SENSITIVITIES
375 .setDescription(
"Zero-bias collector-base depletion capacitance")
376 #ifdef Xyce_ADMS_SENSITIVITIES
377 .setAnalyticSensitivityAvailable(
true)
378 .setSensitivityFunctor(&modSens)
379 #endif // Xyce_ADMS_SENSITIVITIES
383 .setDescription(
"Collector-base diffusion voltage")
384 #ifdef Xyce_ADMS_SENSITIVITIES
385 .setAnalyticSensitivityAvailable(
true)
386 .setSensitivityFunctor(&modSens)
387 #endif // Xyce_ADMS_SENSITIVITIES
390 .setDescription(
"Collector-base grading coefficient")
391 #ifdef Xyce_ADMS_SENSITIVITIES
392 .setAnalyticSensitivityAvailable(
true)
393 .setSensitivityFunctor(&modSens)
394 #endif // Xyce_ADMS_SENSITIVITIES
397 .setDescription(
"Constant part of Cjc")
398 #ifdef Xyce_ADMS_SENSITIVITIES
399 .setAnalyticSensitivityAvailable(
true)
400 .setSensitivityFunctor(&modSens)
401 #endif // Xyce_ADMS_SENSITIVITIES
404 .setDescription(
"Coefficient for current modulation of CB depletion capacitance")
405 #ifdef Xyce_ADMS_SENSITIVITIES
406 .setAnalyticSensitivityAvailable(
true)
407 .setSensitivityFunctor(&modSens)
408 #endif // Xyce_ADMS_SENSITIVITIES
411 .setDescription(
"Fraction of CB depletion capacitance under the emitter")
412 #ifdef Xyce_ADMS_SENSITIVITIES
413 .setAnalyticSensitivityAvailable(
true)
414 .setSensitivityFunctor(&modSens)
415 #endif // Xyce_ADMS_SENSITIVITIES
419 .setDescription(
"Resistance Collector Buried Layer eXtrinsic")
420 #ifdef Xyce_ADMS_SENSITIVITIES
421 .setAnalyticSensitivityAvailable(
true)
422 .setSensitivityFunctor(&modSens)
423 #endif // Xyce_ADMS_SENSITIVITIES
427 .setDescription(
"Resistance Collector Buried Layer Intrinsic")
428 #ifdef Xyce_ADMS_SENSITIVITIES
429 .setAnalyticSensitivityAvailable(
true)
430 .setSensitivityFunctor(&modSens)
431 #endif // Xyce_ADMS_SENSITIVITIES
434 .setDescription(
"Collector-base overlap capacitance")
435 #ifdef Xyce_ADMS_SENSITIVITIES
436 .setAnalyticSensitivityAvailable(
true)
437 .setSensitivityFunctor(&modSens)
438 #endif // Xyce_ADMS_SENSITIVITIES
441 .setDescription(
"Non-ideality factor of the emitter stored charge")
442 #ifdef Xyce_ADMS_SENSITIVITIES
443 .setAnalyticSensitivityAvailable(
true)
444 .setSensitivityFunctor(&modSens)
445 #endif // Xyce_ADMS_SENSITIVITIES
449 .setDescription(
"Minimum transit time of stored emitter charge")
450 #ifdef Xyce_ADMS_SENSITIVITIES
451 .setAnalyticSensitivityAvailable(
true)
452 .setSensitivityFunctor(&modSens)
453 #endif // Xyce_ADMS_SENSITIVITIES
457 .setDescription(
"Transit time of stored base sharge")
458 #ifdef Xyce_ADMS_SENSITIVITIES
459 .setAnalyticSensitivityAvailable(
true)
460 .setSensitivityFunctor(&modSens)
461 #endif // Xyce_ADMS_SENSITIVITIES
465 .setDescription(
"Transit time of stored epilayer charge")
466 #ifdef Xyce_ADMS_SENSITIVITIES
467 .setAnalyticSensitivityAvailable(
true)
468 .setSensitivityFunctor(&modSens)
469 #endif // Xyce_ADMS_SENSITIVITIES
473 .setDescription(
"Transit time of reverse extrinsic stored base charge")
474 #ifdef Xyce_ADMS_SENSITIVITIES
475 .setAnalyticSensitivityAvailable(
true)
476 .setSensitivityFunctor(&modSens)
477 #endif // Xyce_ADMS_SENSITIVITIES
481 .setDescription(
"Bandgap difference over the base")
482 #ifdef Xyce_ADMS_SENSITIVITIES
483 .setAnalyticSensitivityAvailable(
true)
484 .setSensitivityFunctor(&modSens)
485 #endif // Xyce_ADMS_SENSITIVITIES
488 .setDescription(
"Pre-factor of the recombination part of Ib1")
489 #ifdef Xyce_ADMS_SENSITIVITIES
490 .setAnalyticSensitivityAvailable(
true)
491 .setSensitivityFunctor(&modSens)
492 #endif // Xyce_ADMS_SENSITIVITIES
495 .setDescription(
"Temperature coefficient of the zero-bias base charge")
496 #ifdef Xyce_ADMS_SENSITIVITIES
497 .setAnalyticSensitivityAvailable(
true)
498 .setSensitivityFunctor(&modSens)
499 #endif // Xyce_ADMS_SENSITIVITIES
502 .setDescription(
"Temperature coefficient of the resistivity of the emitter")
503 #ifdef Xyce_ADMS_SENSITIVITIES
504 .setAnalyticSensitivityAvailable(
true)
505 .setSensitivityFunctor(&modSens)
506 #endif // Xyce_ADMS_SENSITIVITIES
509 .setDescription(
"Temperature coefficient of the resistivity of the base")
510 #ifdef Xyce_ADMS_SENSITIVITIES
511 .setAnalyticSensitivityAvailable(
true)
512 .setSensitivityFunctor(&modSens)
513 #endif // Xyce_ADMS_SENSITIVITIES
516 .setDescription(
"Temperature coefficient of the resistivity of the epilayer")
517 #ifdef Xyce_ADMS_SENSITIVITIES
518 .setAnalyticSensitivityAvailable(
true)
519 .setSensitivityFunctor(&modSens)
520 #endif // Xyce_ADMS_SENSITIVITIES
523 .setDescription(
"Temperature coefficient of the resistivity of the extrinsic base")
524 #ifdef Xyce_ADMS_SENSITIVITIES
525 .setAnalyticSensitivityAvailable(
true)
526 .setSensitivityFunctor(&modSens)
527 #endif // Xyce_ADMS_SENSITIVITIES
530 .setDescription(
"Temperature coefficient of the resistivity of the collector contact")
531 #ifdef Xyce_ADMS_SENSITIVITIES
532 .setAnalyticSensitivityAvailable(
true)
533 .setSensitivityFunctor(&modSens)
534 #endif // Xyce_ADMS_SENSITIVITIES
537 .setDescription(
"Temperature coefficient of the resistivity of the collector buried layer")
538 #ifdef Xyce_ADMS_SENSITIVITIES
539 .setAnalyticSensitivityAvailable(
true)
540 .setSensitivityFunctor(&modSens)
541 #endif // Xyce_ADMS_SENSITIVITIES
545 .setDescription(
"Band-gap voltage difference of the forward current gain")
546 #ifdef Xyce_ADMS_SENSITIVITIES
547 .setAnalyticSensitivityAvailable(
true)
548 .setSensitivityFunctor(&modSens)
549 #endif // Xyce_ADMS_SENSITIVITIES
553 .setDescription(
"Band-gap voltage difference of the reverse current gain")
554 #ifdef Xyce_ADMS_SENSITIVITIES
555 .setAnalyticSensitivityAvailable(
true)
556 .setSensitivityFunctor(&modSens)
557 #endif // Xyce_ADMS_SENSITIVITIES
561 .setDescription(
"Band-gap voltage of the base")
562 #ifdef Xyce_ADMS_SENSITIVITIES
563 .setAnalyticSensitivityAvailable(
true)
564 .setSensitivityFunctor(&modSens)
565 #endif // Xyce_ADMS_SENSITIVITIES
569 .setDescription(
"Band-gap voltage of the collector")
570 #ifdef Xyce_ADMS_SENSITIVITIES
571 .setAnalyticSensitivityAvailable(
true)
572 .setSensitivityFunctor(&modSens)
573 #endif // Xyce_ADMS_SENSITIVITIES
577 .setDescription(
"Band-gap voltage recombination emitter-base junction")
578 #ifdef Xyce_ADMS_SENSITIVITIES
579 .setAnalyticSensitivityAvailable(
true)
580 .setSensitivityFunctor(&modSens)
581 #endif // Xyce_ADMS_SENSITIVITIES
585 .setDescription(
"Band-gap voltage at Tref of Zener effect emitter-base junction")
586 #ifdef Xyce_ADMS_SENSITIVITIES
587 .setAnalyticSensitivityAvailable(
true)
588 .setSensitivityFunctor(&modSens)
589 #endif // Xyce_ADMS_SENSITIVITIES
593 .setDescription(
"Temperature coefficient band-gap voltage for Zener effect emitter-base junction")
594 #ifdef Xyce_ADMS_SENSITIVITIES
595 .setAnalyticSensitivityAvailable(
true)
596 .setSensitivityFunctor(&modSens)
597 #endif // Xyce_ADMS_SENSITIVITIES
601 .setDescription(
"Temperature coefficient band-gap voltage for Zener effect emitter-base junction")
602 #ifdef Xyce_ADMS_SENSITIVITIES
603 .setAnalyticSensitivityAvailable(
true)
604 .setSensitivityFunctor(&modSens)
605 #endif // Xyce_ADMS_SENSITIVITIES
609 .setDescription(
"Band-gap voltage difference of emitter stored charge")
610 #ifdef Xyce_ADMS_SENSITIVITIES
611 .setAnalyticSensitivityAvailable(
true)
612 .setSensitivityFunctor(&modSens)
613 #endif // Xyce_ADMS_SENSITIVITIES
616 .setDescription(
"Fine tuning of temperature dependence of C-E saturation current")
617 #ifdef Xyce_ADMS_SENSITIVITIES
618 .setAnalyticSensitivityAvailable(
true)
619 .setSensitivityFunctor(&modSens)
620 #endif // Xyce_ADMS_SENSITIVITIES
623 .setDescription(
"Exponent of the Flicker-noise")
624 #ifdef Xyce_ADMS_SENSITIVITIES
625 .setAnalyticSensitivityAvailable(
true)
626 .setSensitivityFunctor(&modSens)
627 #endif // Xyce_ADMS_SENSITIVITIES
630 .setDescription(
"Flicker-noise coefficient of the ideal base current")
631 #ifdef Xyce_ADMS_SENSITIVITIES
632 .setAnalyticSensitivityAvailable(
true)
633 .setSensitivityFunctor(&modSens)
634 #endif // Xyce_ADMS_SENSITIVITIES
637 .setDescription(
"Flicker-noise coefficient of the non-ideal base current")
638 #ifdef Xyce_ADMS_SENSITIVITIES
639 .setAnalyticSensitivityAvailable(
true)
640 .setSensitivityFunctor(&modSens)
641 #endif // Xyce_ADMS_SENSITIVITIES
644 .setDescription(
"Switch for white noise contribution due to avalanche");
647 .setDescription(
"Base-substrate saturation current")
648 #ifdef Xyce_ADMS_SENSITIVITIES
649 .setAnalyticSensitivityAvailable(
true)
650 .setSensitivityFunctor(&modSens)
651 #endif // Xyce_ADMS_SENSITIVITIES
655 .setDescription(
"Collector-substrate ideal saturation current")
656 #ifdef Xyce_ADMS_SENSITIVITIES
657 .setAnalyticSensitivityAvailable(
true)
658 .setSensitivityFunctor(&modSens)
659 #endif // Xyce_ADMS_SENSITIVITIES
663 .setDescription(
"Base-substrate high injection knee current")
664 #ifdef Xyce_ADMS_SENSITIVITIES
665 .setAnalyticSensitivityAvailable(
true)
666 .setSensitivityFunctor(&modSens)
667 #endif // Xyce_ADMS_SENSITIVITIES
671 .setDescription(
"Zero-bias collector-substrate depletion capacitance")
672 #ifdef Xyce_ADMS_SENSITIVITIES
673 .setAnalyticSensitivityAvailable(
true)
674 .setSensitivityFunctor(&modSens)
675 #endif // Xyce_ADMS_SENSITIVITIES
679 .setDescription(
"Collector-substrate diffusion voltage")
680 #ifdef Xyce_ADMS_SENSITIVITIES
681 .setAnalyticSensitivityAvailable(
true)
682 .setSensitivityFunctor(&modSens)
683 #endif // Xyce_ADMS_SENSITIVITIES
686 .setDescription(
"Collector-substrate grading coefficient")
687 #ifdef Xyce_ADMS_SENSITIVITIES
688 .setAnalyticSensitivityAvailable(
true)
689 .setSensitivityFunctor(&modSens)
690 #endif // Xyce_ADMS_SENSITIVITIES
694 .setDescription(
"band-gap voltage of the substrate")
695 #ifdef Xyce_ADMS_SENSITIVITIES
696 .setAnalyticSensitivityAvailable(
true)
697 .setSensitivityFunctor(&modSens)
698 #endif // Xyce_ADMS_SENSITIVITIES
701 .setDescription(
"Substrate temperature coefficient")
702 #ifdef Xyce_ADMS_SENSITIVITIES
703 .setAnalyticSensitivityAvailable(
true)
704 .setSensitivityFunctor(&modSens)
705 #endif // Xyce_ADMS_SENSITIVITIES
708 .setDescription(
"Temperature coefficient for mobility of minorities in the substrate")
709 #ifdef Xyce_ADMS_SENSITIVITIES
710 .setAnalyticSensitivityAvailable(
true)
711 .setSensitivityFunctor(&modSens)
712 #endif // Xyce_ADMS_SENSITIVITIES
715 .setDescription(
"Multiplication factor")
716 #ifdef Xyce_ADMS_SENSITIVITIES
717 .setAnalyticSensitivityAvailable(
true)
718 .setSensitivityFunctor(&modSens)
719 #endif // Xyce_ADMS_SENSITIVITIES
722 .setDescription(
"Flag for NPN (1) or PNP (-1) transistor type");
724 .setDescription(
"Minimum conductance")
725 #ifdef Xyce_ADMS_SENSITIVITIES
726 .setAnalyticSensitivityAvailable(
true)
727 .setSensitivityFunctor(&modSens)
728 #endif // Xyce_ADMS_SENSITIVITIES
747 if (!(
given(
"MULT")))
762 if ( (!((
MULT >0.0))) )
764 UserError0(*
this) <<
"ADMSbjt504va: Parameter MULT value " <<
MULT <<
" out of range ] 0.0, (+inf) [";
795 :
DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
825 f_c1_Equ_c1_Node_Ptr(0),
826 f_c1_Equ_c2_Node_Ptr(0),
827 f_c2_Equ_c1_Node_Ptr(0),
828 f_c2_Equ_c2_Node_Ptr(0),
829 f_c1_Equ_b2_Node_Ptr(0),
830 f_c2_Equ_b2_Node_Ptr(0),
831 f_e1_Equ_c1_Node_Ptr(0),
832 f_e1_Equ_c2_Node_Ptr(0),
833 f_e1_Equ_b2_Node_Ptr(0),
834 f_c2_Equ_e1_Node_Ptr(0),
835 f_e1_Equ_e1_Node_Ptr(0),
836 f_b1_Equ_b1_Node_Ptr(0),
837 f_b1_Equ_e1_Node_Ptr(0),
838 f_e1_Equ_b1_Node_Ptr(0),
839 f_b2_Equ_b2_Node_Ptr(0),
840 f_b2_Equ_e1_Node_Ptr(0),
841 f_b2_Equ_c1_Node_Ptr(0),
842 f_b2_Equ_c2_Node_Ptr(0),
843 f_b1_Equ_s_Node_Ptr(0),
844 f_b1_Equ_c1_Node_Ptr(0),
845 f_s_Equ_s_Node_Ptr(0),
846 f_s_Equ_c1_Node_Ptr(0),
847 f_b1_Equ_c4_Node_Ptr(0),
848 f_s_Equ_c4_Node_Ptr(0),
849 f_b1_Equ_c2_Node_Ptr(0),
850 f_s_Equ_c2_Node_Ptr(0),
851 f_b1_Equ_b2_Node_Ptr(0),
852 f_s_Equ_b2_Node_Ptr(0),
853 f_s_Equ_b1_Node_Ptr(0),
854 f_b_Equ_s_Node_Ptr(0),
855 f_b_Equ_c1_Node_Ptr(0),
856 f_b_Equ_c2_Node_Ptr(0),
857 f_b_Equ_b2_Node_Ptr(0),
858 f_b_Equ_e1_Node_Ptr(0),
859 f_s_Equ_e1_Node_Ptr(0),
860 f_b_Equ_c3_Node_Ptr(0),
861 f_b_Equ_c4_Node_Ptr(0),
862 f_s_Equ_c3_Node_Ptr(0),
863 f_b_Equ_b1_Node_Ptr(0),
864 f_b_Equ_b_Node_Ptr(0),
865 f_s_Equ_b_Node_Ptr(0),
866 f_b_Equ_c_Node_Ptr(0),
867 f_s_Equ_c_Node_Ptr(0),
868 f_c1_Equ_s_Node_Ptr(0),
869 f_b1_Equ_c3_Node_Ptr(0),
870 f_b2_Equ_c3_Node_Ptr(0),
871 f_b2_Equ_c4_Node_Ptr(0),
872 f_b1_Equ_b_Node_Ptr(0),
873 f_b2_Equ_b_Node_Ptr(0),
874 f_b2_Equ_b1_Node_Ptr(0),
875 f_b1_Equ_c_Node_Ptr(0),
876 f_b2_Equ_c_Node_Ptr(0),
877 f_c2_Equ_c3_Node_Ptr(0),
878 f_c2_Equ_c4_Node_Ptr(0),
879 f_c2_Equ_b1_Node_Ptr(0),
880 f_c2_Equ_b_Node_Ptr(0),
881 f_c2_Equ_c_Node_Ptr(0),
882 f_e_Equ_e_Node_Ptr(0),
883 f_e_Equ_e1_Node_Ptr(0),
884 f_e1_Equ_e_Node_Ptr(0),
885 f_noi_Equ_noi_Node_Ptr(0),
886 f_noi_Equ_e1_Node_Ptr(0),
887 f_e1_Equ_noi_Node_Ptr(0),
888 f_b2_Equ_noi_Node_Ptr(0),
889 f_c2_Equ_noi_Node_Ptr(0),
890 f_e1_Equ_c3_Node_Ptr(0),
891 f_e1_Equ_c4_Node_Ptr(0),
892 f_e1_Equ_b_Node_Ptr(0),
893 f_e1_Equ_c_Node_Ptr(0),
894 f_b_Equ_e_Node_Ptr(0),
895 f_e_Equ_b_Node_Ptr(0),
896 f_c_Equ_b_Node_Ptr(0),
897 f_c_Equ_c_Node_Ptr(0),
898 f_c3_Equ_s_Node_Ptr(0),
899 f_c3_Equ_c1_Node_Ptr(0),
900 f_c3_Equ_c2_Node_Ptr(0),
901 f_c3_Equ_b2_Node_Ptr(0),
902 f_c3_Equ_e1_Node_Ptr(0),
903 f_c3_Equ_c3_Node_Ptr(0),
904 f_c3_Equ_c4_Node_Ptr(0),
905 f_c3_Equ_b1_Node_Ptr(0),
906 f_c3_Equ_b_Node_Ptr(0),
907 f_c3_Equ_c_Node_Ptr(0),
908 f_c_Equ_c3_Node_Ptr(0),
909 f_c_Equ_c4_Node_Ptr(0),
910 f_c_Equ_c1_Node_Ptr(0),
911 f_c_Equ_c2_Node_Ptr(0),
912 f_c_Equ_b2_Node_Ptr(0),
913 f_c_Equ_b1_Node_Ptr(0),
914 f_c4_Equ_c4_Node_Ptr(0),
915 f_c4_Equ_c1_Node_Ptr(0),
916 f_c1_Equ_c4_Node_Ptr(0),
917 f_c4_Equ_b2_Node_Ptr(0),
918 f_c4_Equ_e1_Node_Ptr(0),
919 f_c4_Equ_c2_Node_Ptr(0),
920 f_c4_Equ_b1_Node_Ptr(0),
921 f_c4_Equ_c3_Node_Ptr(0),
922 f_c1_Equ_e1_Node_Ptr(0),
923 f_c1_Equ_b1_Node_Ptr(0),
924 f_c1_Equ_c3_Node_Ptr(0),
925 f_c4_Equ_s_Node_Ptr(0),
926 f_c4_Equ_b_Node_Ptr(0),
927 f_c4_Equ_c_Node_Ptr(0),
928 f_c1_Equ_b_Node_Ptr(0),
929 f_c1_Equ_c_Node_Ptr(0),
930 f_noi_Equ_b2_Node_Ptr(0),
931 f_noi_Equ_c1_Node_Ptr(0),
932 f_noi_Equ_c2_Node_Ptr(0),
933 q_c1_Equ_c1_Node_Ptr(0),
934 q_c1_Equ_c2_Node_Ptr(0),
935 q_c2_Equ_c1_Node_Ptr(0),
936 q_c2_Equ_c2_Node_Ptr(0),
937 q_c1_Equ_b2_Node_Ptr(0),
938 q_c2_Equ_b2_Node_Ptr(0),
939 q_e1_Equ_c1_Node_Ptr(0),
940 q_e1_Equ_c2_Node_Ptr(0),
941 q_e1_Equ_b2_Node_Ptr(0),
942 q_c2_Equ_e1_Node_Ptr(0),
943 q_e1_Equ_e1_Node_Ptr(0),
944 q_b1_Equ_b1_Node_Ptr(0),
945 q_b1_Equ_e1_Node_Ptr(0),
946 q_e1_Equ_b1_Node_Ptr(0),
947 q_b2_Equ_b2_Node_Ptr(0),
948 q_b2_Equ_e1_Node_Ptr(0),
949 q_b2_Equ_c1_Node_Ptr(0),
950 q_b2_Equ_c2_Node_Ptr(0),
951 q_b1_Equ_s_Node_Ptr(0),
952 q_b1_Equ_c1_Node_Ptr(0),
953 q_s_Equ_s_Node_Ptr(0),
954 q_s_Equ_c1_Node_Ptr(0),
955 q_b1_Equ_c4_Node_Ptr(0),
956 q_s_Equ_c4_Node_Ptr(0),
957 q_b1_Equ_c2_Node_Ptr(0),
958 q_s_Equ_c2_Node_Ptr(0),
959 q_b1_Equ_b2_Node_Ptr(0),
960 q_s_Equ_b2_Node_Ptr(0),
961 q_s_Equ_b1_Node_Ptr(0),
962 q_b_Equ_s_Node_Ptr(0),
963 q_b_Equ_c1_Node_Ptr(0),
964 q_b_Equ_c2_Node_Ptr(0),
965 q_b_Equ_b2_Node_Ptr(0),
966 q_b_Equ_e1_Node_Ptr(0),
967 q_s_Equ_e1_Node_Ptr(0),
968 q_b_Equ_c3_Node_Ptr(0),
969 q_b_Equ_c4_Node_Ptr(0),
970 q_s_Equ_c3_Node_Ptr(0),
971 q_b_Equ_b1_Node_Ptr(0),
972 q_b_Equ_b_Node_Ptr(0),
973 q_s_Equ_b_Node_Ptr(0),
974 q_b_Equ_c_Node_Ptr(0),
975 q_s_Equ_c_Node_Ptr(0),
976 q_c1_Equ_s_Node_Ptr(0),
977 q_b1_Equ_c3_Node_Ptr(0),
978 q_b2_Equ_c3_Node_Ptr(0),
979 q_b2_Equ_c4_Node_Ptr(0),
980 q_b1_Equ_b_Node_Ptr(0),
981 q_b2_Equ_b_Node_Ptr(0),
982 q_b2_Equ_b1_Node_Ptr(0),
983 q_b1_Equ_c_Node_Ptr(0),
984 q_b2_Equ_c_Node_Ptr(0),
985 q_c2_Equ_c3_Node_Ptr(0),
986 q_c2_Equ_c4_Node_Ptr(0),
987 q_c2_Equ_b1_Node_Ptr(0),
988 q_c2_Equ_b_Node_Ptr(0),
989 q_c2_Equ_c_Node_Ptr(0),
990 q_e_Equ_e_Node_Ptr(0),
991 q_e_Equ_e1_Node_Ptr(0),
992 q_e1_Equ_e_Node_Ptr(0),
993 q_noi_Equ_noi_Node_Ptr(0),
994 q_noi_Equ_e1_Node_Ptr(0),
995 q_e1_Equ_noi_Node_Ptr(0),
996 q_b2_Equ_noi_Node_Ptr(0),
997 q_c2_Equ_noi_Node_Ptr(0),
998 q_e1_Equ_c3_Node_Ptr(0),
999 q_e1_Equ_c4_Node_Ptr(0),
1000 q_e1_Equ_b_Node_Ptr(0),
1001 q_e1_Equ_c_Node_Ptr(0),
1002 q_b_Equ_e_Node_Ptr(0),
1003 q_e_Equ_b_Node_Ptr(0),
1004 q_c_Equ_b_Node_Ptr(0),
1005 q_c_Equ_c_Node_Ptr(0),
1006 q_c3_Equ_s_Node_Ptr(0),
1007 q_c3_Equ_c1_Node_Ptr(0),
1008 q_c3_Equ_c2_Node_Ptr(0),
1009 q_c3_Equ_b2_Node_Ptr(0),
1010 q_c3_Equ_e1_Node_Ptr(0),
1011 q_c3_Equ_c3_Node_Ptr(0),
1012 q_c3_Equ_c4_Node_Ptr(0),
1013 q_c3_Equ_b1_Node_Ptr(0),
1014 q_c3_Equ_b_Node_Ptr(0),
1015 q_c3_Equ_c_Node_Ptr(0),
1016 q_c_Equ_c3_Node_Ptr(0),
1017 q_c_Equ_c4_Node_Ptr(0),
1018 q_c_Equ_c1_Node_Ptr(0),
1019 q_c_Equ_c2_Node_Ptr(0),
1020 q_c_Equ_b2_Node_Ptr(0),
1021 q_c_Equ_b1_Node_Ptr(0),
1022 q_c4_Equ_c4_Node_Ptr(0),
1023 q_c4_Equ_c1_Node_Ptr(0),
1024 q_c1_Equ_c4_Node_Ptr(0),
1025 q_c4_Equ_b2_Node_Ptr(0),
1026 q_c4_Equ_e1_Node_Ptr(0),
1027 q_c4_Equ_c2_Node_Ptr(0),
1028 q_c4_Equ_b1_Node_Ptr(0),
1029 q_c4_Equ_c3_Node_Ptr(0),
1030 q_c1_Equ_e1_Node_Ptr(0),
1031 q_c1_Equ_b1_Node_Ptr(0),
1032 q_c1_Equ_c3_Node_Ptr(0),
1033 q_c4_Equ_s_Node_Ptr(0),
1034 q_c4_Equ_b_Node_Ptr(0),
1035 q_c4_Equ_c_Node_Ptr(0),
1036 q_c1_Equ_b_Node_Ptr(0),
1037 q_c1_Equ_c_Node_Ptr(0),
1038 q_noi_Equ_b2_Node_Ptr(0),
1039 q_noi_Equ_c1_Node_Ptr(0),
1040 q_noi_Equ_c2_Node_Ptr(0),
1041 admsTemperature(getDeviceOptions().temp.getImmutableValue<double>())
1189 for (
int i=0;i<mapSize;++i)
1194 for (
int j=0;j<rowSize;++j)
1207 if (!
given(
"XYCEADMSINSTTEMP"))
1260 std::vector< std::vector<int> > tempStamp;
1261 std::vector<int> tempMap;
1262 std::vector< std::vector<int> > tempMap2;
1264 int OriginalSize =
jacMap.size();
1274 tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1276 tempStamp, tempMap, tempMap2,
1285 tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1287 tempStamp, tempMap, tempMap2,
1322 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1324 Xyce::dout() << std::endl << section_divider << std::endl
1325 <<
"In ADMSbjt504va::Instance::register LIDs\n\n"
1326 <<
"name = " <<
getName() << std::endl
1327 <<
"number of internal variables: " <<
numIntVars << std::endl
1328 <<
"number of external variables: " <<
numExtVars << std::endl;
1338 li_c = extLIDVecRef[i++];
1339 li_b = extLIDVecRef[i++];
1340 li_e = extLIDVecRef[i++];
1341 li_s = extLIDVecRef[i++];
1345 li_e1 = intLIDVecRef[i++];
1346 li_b1 = intLIDVecRef[i++];
1347 li_b2 = intLIDVecRef[i++];
1348 li_c3 = intLIDVecRef[i++];
1350 li_c4 = intLIDVecRef[i++];
1353 li_c2 = intLIDVecRef[i++];
1355 li_c1 = intLIDVecRef[i++];
1358 li_noi = intLIDVecRef[i++];
1361 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1363 Xyce::dout() <<
"\nSolution and RHS variables:\n";
1364 Xyce::dout() <<
"\nli_c = " <<
li_c << std::endl;
1365 Xyce::dout() <<
"\nli_b = " <<
li_b << std::endl;
1366 Xyce::dout() <<
"\nli_e = " <<
li_e << std::endl;
1367 Xyce::dout() <<
"\nli_s = " <<
li_s << std::endl;
1368 Xyce::dout() <<
"\nli_e1 = " <<
li_e1 << std::endl;
1369 Xyce::dout() <<
"\nli_b1 = " <<
li_b1 << std::endl;
1370 Xyce::dout() <<
"\nli_b2 = " <<
li_b2 << std::endl;
1371 Xyce::dout() <<
"\nli_c3 = " <<
li_c3 << std::endl;
1372 Xyce::dout() <<
"\nli_c4 = " <<
li_c4 << std::endl;
1373 Xyce::dout() <<
"\nli_c2 = " <<
li_c2 << std::endl;
1374 Xyce::dout() <<
"\nli_c1 = " <<
li_c1 << std::endl;
1375 Xyce::dout() <<
"\nli_noi = " <<
li_noi << std::endl;
1377 Xyce::dout() <<
"\nEnd of ADMSbjt504va::Instance::register LIDs\n";
1378 Xyce::dout() << section_divider << std::endl;
1420 int numSta = staLIDVecRef.size();
1458 std::vector<int> & map=
jacMap;
1459 std::vector< std::vector<int> > & map2=
jacMap2;
1804 bool bsuccess =
true;
1834 bool bsuccess =
true;
1856 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
1858 Xyce::dout() << std::endl << subsection_divider << std::endl;
1859 Xyce::dout() <<
" In ADMSbjt504va::Instance::updateIntermediateVars\n\n";
1860 Xyce::dout() <<
" name = " <<
getName() << std::endl;
1874 double exponentFBC1fB2;
2053 double Vb1b2_orig,Vb1b2_limited,Vb1b2_old;
2054 double Vb1e1_orig,Vb1e1_limited,Vb1e1_old;
2055 double Vb2c2_orig,Vb2c2_limited,Vb2c2_old;
2056 double Vb2c1_orig,Vb2c1_limited,Vb2c1_old;
2072 for (
int i=0; i < 12+0 ; ++i)
2080 for (
int i=0; i < 15 ; ++i)
2162 Vb1b2_old = Vb1b2_limited;
2163 Vb1e1_old = Vb1e1_limited;
2164 Vb2c2_old = Vb2c2_limited;
2165 Vb2c1_old = Vb2c1_limited;
2185 if (Vb2c1_limited != Vb2c1_orig)
2206 if (Vb2c2_limited != Vb2c2_orig)
2228 if (Vb1e1_limited != Vb1e1_orig)
2249 if (Vb1b2_limited != Vb1b2_orig)
2295 Vb1c4 = (((Vb1b2+Vb2c2)-Vc1c2)-Vc4c1);
2296 Vcc3 = ((((-Vbc)+Vbb1)+Vb1c4)-Vc3c4);
2298 Vsc4 = (Vsc1-Vc4c1);
2299 Vsc3 = (Vsc4-Vc3c4);
2307 eVb2c2 = (expl*(1.0+((Vb2c2*(
model_.
VtINV))-400.0)));
2316 eVb2e1 = (expl*(1.0+((Vb2e1*(
model_.
VtINV))-400.0)));
2325 eVb1e1 = (expl*(1.0+((Vb1e1*(
model_.
VtINV))-400.0)));
2334 eVb1c4 = (expl*(1.0+((Vb1c4*(
model_.
VtINV))-400.0)));
2352 eVbc3 = (expl*(1.0+((Vbc3*(
model_.
VtINV))-400.0)));
2361 eVsc1 = (expl*(1.0+((Vsc1*(
model_.
VtINV))-400.0)));
2370 eVsc3 = (expl*(1.0+((Vsc3*(
model_.
VtINV))-400.0)));
2379 eVsc4 = (expl*(1.0+((Vsc4*(
model_.
VtINV))-400.0)));
2417 K0 = sqrt((1.0+(4.0*eVb2c2VDC)));
2418 Kw = sqrt((1.0+(4.0*eVb2c1VDC)));
2419 pW = ((2.0*eVb2c1VDC)/(1.0+Kw));
2424 Ec = ((
model_.
Vt)*((K0-Kw)-log(((K0+1.0)/(Kw+1.0)))));
2434 tmpV = (100.0+log((1.0+(Vb2c1-100.0))));
2439 eps2 = (eps_VDC*eps_VDC);
2440 x2 = (Vqs_th*Vqs_th);
2443 Vqs = ((0.5*eps2)/(sqrt((x2+eps2))-Vqs_th));
2447 Vqs = (0.5*(sqrt((x2+eps2))+Vqs_th));
2451 Ic1c2_Iqs = (Ic1c2/Iqs);
2457 if ((Ic1c2_Iqs<1.0))
2459 alpha1 = (1.0+((
model_.
AXI)*log((1.0+exp(dxa)))));
2463 alpha1 = (Ic1c2_Iqs+((
model_.
AXI)*log((1.0+exp((-dxa))))));
2469 yi = ((1.0+sqrt((1.0+(((4.0*alpha)*vyi)*(1.0+vyi)))))/((2.0*alpha)*(1.0+vyi)));
2470 xi_w = (1.0-(yi/(1.0+(pW*yi))));
2472 gp0_help = ((2.0*gp0)+(pW*((pW+gp0)+1.0)));
2473 gp02 = (0.5*(gp0-1.0));
2474 sqr_arg = ((gp02*gp02)+gp0_help);
2477 p0star = (gp02+sqrt(sqr_arg));
2481 p0star = (gp0_help/(sqrt(sqr_arg)-gp02));
2483 if ((p0star<1.0e-40))
2490 Vxi0 = (B1+sqrt(((B1*B1)+B2)));
2491 Vch = ((
model_.
VDC_T)*(0.1+((2.0*Ic1c2)/(Ic1c2+Iqs))));
2498 p0star = ((2.0*eVb2c2VDC)/(1.0+K0));
2499 eVb2c2star = eVb2c2;
2500 if (((fabs(Vc1c2)<(1.0e-5*(
model_.
Vt)))||(fabs(Ec)<((1.0e-40*(
model_.
Vt))*(K0+Kw)))))
2502 pav = (0.5*(p0star+pW));
2503 xi_w = (pav/(pav+1.0));
2507 xi_w = (Ec/((Ec+Vb2c2)-Vb2c1));
2520 dxa = ((Vb2e1-Vfe)/a_VDE);
2523 Vje = (Vb2e1-(a_VDE*log((1.0+exp(dxa)))));
2527 Vje = (Vfe-(a_VDE*log((1.0+exp((-dxa))))));
2533 Vjunc = (Vb2c1+Vxi0);
2540 dxa = ((Vjunc-Vfc)/Vch);
2543 Vjc = (Vjunc-(Vch*log((1.0+exp(dxa)))));
2547 Vjc = (Vfc-(Vch*log((1.0+exp((-dxa))))));
2556 n0 = (f1/(1.0+sqrt((1.0+f1))));
2557 f2 = (If0*eVb2c2star);
2558 nB = (f2/(1.0+sqrt((1.0+f2))));
2573 q1I = ((0.5*eps2)/(sqrt((x2+eps2))-q0I));
2577 q1I = (0.5*(sqrt((x2+eps2))+q0I));
2580 qBI = (q1I*(1.0+(0.5*(n0+nB))));
2611 tmpExp = (expl*(1.0+(((0.5*Vb1c4)*(
model_.
VtINV))-400.0)));
2645 g2 = (4.0*eVb1c4VDC);
2646 nBex = ((g1-If0)/(1.0+sqrt((1.0+g1))));
2647 pWex = (g2/(1.0+sqrt((1.0+g2))));
2672 XnBex = ((Xg1-If0)/(1.0+sqrt((1.0+Xg1))));
2691 VBex = ((0.5*eps2)/(sqrt((x2+eps2))-vdif));
2695 VBex = (0.5*(sqrt((x2+eps2))+vdif));
2698 Fex = (VBex/((Vex_bias+((XIMex+XIMsub)*(
model_.
RCCxx_TM)))+VBex));
2708 XIsub = (Fex*XIMsub);
2720 q1Q = ((0.5*eps2)/(sqrt((x2+eps2))-q0Q));
2724 q1Q = (0.5*(sqrt((x2+eps2))+q0Q));
2727 qBQ = (q1Q*(1.0+(0.5*(n0+nB))));
2736 xd = sqrt(((2.0*sqr_arg)/dEdx0));
2743 xi_w1 = (1.0-(0.5*xi_w));
2746 Wd = ((xd*Weff)/sqrt(((xd*xd)+(Weff*Weff))));
2748 E0 = (Eav+(((0.5*Wd)*dEdx0)*Icap_IHC));
2755 SHw = (1.0+((2.0*(
model_.
SFH))*(1.0+(2.0*xi_w))));
2757 Ew = (Eav-(((0.5*Wd)*dEdx0)*(Efi-(Ic1c2/((
model_.
IHC_M)*SHw)))));
2758 sqr_arg = (((Ew-E0)*(Ew-E0))+((((0.1*Eav)*Eav)*Icap)/(
model_.
IHC_M)));
2759 Em = (0.5*((Ew+E0)+sqrt(sqr_arg)));
2761 EmEav_Em = ((Em-Eav)/Em);
2762 if ((fabs(EmEav_Em)>1.0e-7))
2764 lambda = ((0.5*Wd)/EmEav_Em);
2772 Iavl = ((Ic1c2*
Gem)/((
Gem+(
Gem/Gmax))+1.0));
2774 if ((eVb2c2star>0.0))
2776 Vb2c2star = ((
model_.
Vt)*log(eVb2c2star));
2787 dxa = ((Vb1e1-Vfe)/a_VDE);
2790 Vje_s = (Vb1e1-(a_VDE*log((1.0+exp(dxa)))));
2794 Vje_s = (Vfe-(a_VDE*log((1.0+exp((-dxa))))));
2801 Qbe_qs = (((0.5*Qb0)*n0)*q1Q);
2802 Qbc_qs = (((0.5*Qb0)*nB)*q1Q);
2808 dxa = ((Vb1c4-Vfc)/a_VDC);
2811 Vjcex = (Vb1c4-(a_VDC*log((1.0+exp(dxa)))));
2815 Vjcex = (Vfc-(a_VDC*log((1.0+exp((-dxa))))));
2825 dxa = ((Vbc3-Vfc)/a_VDC);
2828 XVjcex = (Vbc3-(a_VDC*log((1.0+exp(dxa)))));
2832 XVjcex = (Vfc-(a_VDC*log((1.0+exp((-dxa))))));
2844 dxa = ((Vsc1-Vfs)/a_VDS);
2847 Vjs = (Vsc1-(a_VDS*log((1.0+exp(dxa)))));
2851 Vjs = (Vfs-(a_VDS*log((1.0+exp((-dxa))))));
2866 Qe = (Qe0*(tmpExp-1.0));
2868 Qepi = (((0.5*Qepi0)*xi_w)*((p0star+pW)+2.0));
2874 Xg2 = (4.0*eVbc3VDC);
2875 XpWex = (Xg2/(1.0+sqrt((1.0+Xg2))));
2882 Vb2e1Vfe = ((Vb2e1-Vfe)/a_VDE);
2885 dVjeVb2e1 = (1.0/(1.0+exp(Vb2e1Vfe)));
2889 dVjeVb2e1 = (exp((-Vb2e1Vfe))/(1.0+exp((-Vb2e1Vfe))));
2891 dVteVb2e1 = ((dVteVje*dVjeVb2e1)+3.0);
2893 dn0Vb2e1 = (((If0*eVb2e1)*(
model_.
VtINV))*(0.5/sqrt((1.0+f1))));
2894 dQbeVb2e1 = (((0.5*Qb0)*q1Q)*dn0Vb2e1);
2896 Qb1b2 = ((0.2*Vb1b2)*((dQteVb2e1+dQbeVb2e1)+dQeVb2e1));
2897 Qbc = ((Qbe_qs*0.33333333333333333333)+Qbc_qs);
2898 Qbe = ((2.0*Qbe_qs)*0.33333333333333333333);
3001 contribTemp= cor_exp_1;
3012 contribTemp= cor_exp_2;
3022 contribTemp= (((
model_.
TYPE)*((Qte+Qbe)+Qe)));
3042 contribTemp= (((
model_.
TYPE)*((Qtc+Qbc)+Qepi)));
3285 Xyce::dout() <<
" probeVars[admsProbeID_V_noi_e1] = "
3287 Xyce::dout() <<
" probeVars[admsProbeID_V_c3_c1] = "
3289 Xyce::dout() <<
" probeVars[admsProbeID_V_c3_c4] = "
3291 Xyce::dout() <<
" probeVars[admsProbeID_V_c4_c1] = "
3293 Xyce::dout() <<
" probeVars[admsProbeID_V_b_c] = "
3295 Xyce::dout() <<
" probeVars[admsProbeID_V_b_e] = "
3297 Xyce::dout() <<
" probeVars[admsProbeID_V_b_b1] = "
3299 Xyce::dout() <<
" probeVars[admsProbeID_V_e_e1] = "
3301 Xyce::dout() <<
" probeVars[admsProbeID_V_c1_c2] = "
3303 Xyce::dout() <<
" probeVars[admsProbeID_V_s_c1] = "
3305 Xyce::dout() <<
" probeVars[admsProbeID_V_b1_b2] = "
3307 Xyce::dout() <<
" probeVars[admsProbeID_V_b1_e1] = "
3309 Xyce::dout() <<
" probeVars[admsProbeID_V_b2_e1] = "
3311 Xyce::dout() <<
" probeVars[admsProbeID_V_b2_c2] = "
3313 Xyce::dout() <<
" probeVars[admsProbeID_V_b2_c1] = "
3315 Xyce::dout() <<
" staticContributions[admsNodeID_c] = "
3332 Xyce::dout() <<
" dynamicContributions[admsNodeID_c] = "
3349 Xyce::dout() <<
" Jdxp_static[admsNodeID_c] = "
3351 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c] = "
3353 Xyce::dout() <<
" staticContributions[admsNodeID_b] = "
3370 Xyce::dout() <<
" dynamicContributions[admsNodeID_b] = "
3387 Xyce::dout() <<
" Jdxp_static[admsNodeID_b] = "
3389 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_b] = "
3391 Xyce::dout() <<
" staticContributions[admsNodeID_e] = "
3408 Xyce::dout() <<
" dynamicContributions[admsNodeID_e] = "
3425 Xyce::dout() <<
" Jdxp_static[admsNodeID_e] = "
3427 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_e] = "
3429 Xyce::dout() <<
" staticContributions[admsNodeID_s] = "
3446 Xyce::dout() <<
" dynamicContributions[admsNodeID_s] = "
3463 Xyce::dout() <<
" Jdxp_static[admsNodeID_s] = "
3465 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_s] = "
3467 Xyce::dout() <<
" staticContributions[admsNodeID_e1] = "
3484 Xyce::dout() <<
" dynamicContributions[admsNodeID_e1] = "
3501 Xyce::dout() <<
" Jdxp_static[admsNodeID_e1] = "
3503 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_e1] = "
3505 Xyce::dout() <<
" staticContributions[admsNodeID_b1] = "
3522 Xyce::dout() <<
" dynamicContributions[admsNodeID_b1] = "
3539 Xyce::dout() <<
" Jdxp_static[admsNodeID_b1] = "
3541 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_b1] = "
3543 Xyce::dout() <<
" staticContributions[admsNodeID_b2] = "
3560 Xyce::dout() <<
" dynamicContributions[admsNodeID_b2] = "
3577 Xyce::dout() <<
" Jdxp_static[admsNodeID_b2] = "
3579 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_b2] = "
3581 Xyce::dout() <<
" staticContributions[admsNodeID_c3] = "
3598 Xyce::dout() <<
" dynamicContributions[admsNodeID_c3] = "
3615 Xyce::dout() <<
" Jdxp_static[admsNodeID_c3] = "
3617 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c3] = "
3619 Xyce::dout() <<
" staticContributions[admsNodeID_c4] = "
3636 Xyce::dout() <<
" dynamicContributions[admsNodeID_c4] = "
3653 Xyce::dout() <<
" Jdxp_static[admsNodeID_c4] = "
3655 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c4] = "
3657 Xyce::dout() <<
" staticContributions[admsNodeID_c2] = "
3674 Xyce::dout() <<
" dynamicContributions[admsNodeID_c2] = "
3691 Xyce::dout() <<
" Jdxp_static[admsNodeID_c2] = "
3693 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c2] = "
3695 Xyce::dout() <<
" staticContributions[admsNodeID_c1] = "
3712 Xyce::dout() <<
" dynamicContributions[admsNodeID_c1] = "
3729 Xyce::dout() <<
" Jdxp_static[admsNodeID_c1] = "
3731 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c1] = "
3733 Xyce::dout() <<
" staticContributions[admsNodeID_noi] = "
3750 Xyce::dout() <<
" dynamicContributions[admsNodeID_noi] = "
3767 Xyce::dout() <<
" Jdxp_static[admsNodeID_noi] = "
3769 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_noi] = "
3773 Xyce::dout() <<
"This step was limited by this device." << std::endl;
3789 bool bsuccess =
true;
3792 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3794 Xyce::dout() << subsection_divider << std::endl;
3795 Xyce::dout() <<
"ADMSbjt504va::Instance::loadDAEdFdx (" <<
getName() <<
"):" << std::endl;
3800 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3807 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3814 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3821 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3828 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3835 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3842 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3849 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3856 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3863 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3870 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3877 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3884 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3891 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3898 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3905 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3912 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3919 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3926 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3933 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3940 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3947 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3954 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3961 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3968 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3975 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3982 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3989 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3996 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4003 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4010 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4017 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4024 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4031 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4038 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4045 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4052 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4059 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4066 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4073 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4080 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4087 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4094 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4101 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4108 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4115 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4122 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4129 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4136 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4143 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4150 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4157 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4164 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4171 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4178 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4185 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4192 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4199 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4206 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4213 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4220 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4227 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4234 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4241 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4248 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4255 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4262 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4269 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4276 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4283 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4290 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4297 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4304 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4311 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4318 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4325 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4332 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4339 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4346 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4353 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4360 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4367 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4374 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4381 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4388 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4395 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4402 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4409 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4416 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4423 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4430 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4437 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4444 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4451 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4458 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4465 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4472 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4479 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4486 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4493 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4500 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4507 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4527 bool bsuccess =
true;
4530 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4532 Xyce::dout() << subsection_divider << std::endl;
4533 Xyce::dout() <<
"ADMSbjt504va::Instance::loadDAEdQdx (" <<
getName() <<
"):" << std::endl;
4538 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4545 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4552 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4559 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4566 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4573 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4580 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4587 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4594 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4601 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4608 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4615 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4622 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4629 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4636 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4643 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4650 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4657 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4664 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4671 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4678 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4685 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4692 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4699 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4706 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4713 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4720 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4727 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4734 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4741 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4748 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4755 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4762 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4769 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4776 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4783 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4790 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4797 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4804 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4811 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4818 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4825 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4832 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4839 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4846 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4853 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4860 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4867 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4874 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4881 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4888 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4895 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4902 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4909 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4916 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4923 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4930 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4937 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4944 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4951 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4958 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4965 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4972 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4979 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4986 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4993 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5000 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5007 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5014 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5021 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5028 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5035 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5042 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5049 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5056 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5063 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5070 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5077 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5084 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5091 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5098 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5105 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5112 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5158 UserError0(*
this) <<
"ADMSbjt504va: Parameter LEVEL value " <<
LEVEL <<
" out of range [ 504, 505 [";
5162 if ( (!((
TREF >=(-273.0)))) )
5164 UserError0(*
this) <<
"ADMSbjt504va: Parameter TREF value " <<
TREF <<
" out of range [ (-273.0), (+inf) [";
5170 UserError0(*
this) <<
"ADMSbjt504va: Parameter EXMOD value " <<
EXMOD <<
" out of range [ 0, 2 ]";
5176 UserError0(*
this) <<
"ADMSbjt504va: Parameter EXPHI value " <<
EXPHI <<
" out of range [ 0, 1 ]";
5182 UserError0(*
this) <<
"ADMSbjt504va: Parameter EXAVL value " <<
EXAVL <<
" out of range [ 0, 1 ]";
5188 UserError0(*
this) <<
"ADMSbjt504va: Parameter EXSUB value " <<
EXSUB <<
" out of range [ 0, 1 ]";
5192 if ( (!((
IS >0.0))) )
5194 UserError0(*
this) <<
"ADMSbjt504va: Parameter IS value " <<
IS <<
" out of range ] 0.0, (+inf) [";
5198 if ( (!((
IK >=1.0*1.0e-12))) )
5200 UserError0(*
this) <<
"ADMSbjt504va: Parameter IK value " <<
IK <<
" out of range [ 1.0*1.0e-12, (+inf) [";
5204 if ( (!((
VER >=0.01))) )
5206 UserError0(*
this) <<
"ADMSbjt504va: Parameter VER value " <<
VER <<
" out of range [ 0.01, (+inf) [";
5210 if ( (!((
VEF >=0.01))) )
5212 UserError0(*
this) <<
"ADMSbjt504va: Parameter VEF value " <<
VEF <<
" out of range [ 0.01, (+inf) [";
5216 if ( (!((
BF >=0.1*1.0e-3))) )
5218 UserError0(*
this) <<
"ADMSbjt504va: Parameter BF value " <<
BF <<
" out of range [ 0.1*1.0e-3, (+inf) [";
5222 if ( (!((
IBF >=0.0))) )
5224 UserError0(*
this) <<
"ADMSbjt504va: Parameter IBF value " <<
IBF <<
" out of range [ 0.0, (+inf) [";
5228 if ( (!((
MLF >=0.1))) )
5230 UserError0(*
this) <<
"ADMSbjt504va: Parameter MLF value " <<
MLF <<
" out of range [ 0.1, (+inf) [";
5234 if ( (!((
XIBI >=0.0 &&
XIBI <=1.0 ))) )
5236 UserError0(*
this) <<
"ADMSbjt504va: Parameter XIBI value " <<
XIBI <<
" out of range [ 0.0, 1.0 ]";
5240 if ( (!((
IZEB >=0.0))) )
5242 UserError0(*
this) <<
"ADMSbjt504va: Parameter IZEB value " <<
IZEB <<
" out of range [ 0.0, (+inf) [";
5246 if ( (!((
NZEB >=0.0))) )
5248 UserError0(*
this) <<
"ADMSbjt504va: Parameter NZEB value " <<
NZEB <<
" out of range [ 0.0, (+inf) [";
5252 if ( (!((
BRI >=1.0e-4))) )
5254 UserError0(*
this) <<
"ADMSbjt504va: Parameter BRI value " <<
BRI <<
" out of range [ 1.0e-4, (+inf) [";
5258 if ( (!((
IBR >=0.0))) )
5260 UserError0(*
this) <<
"ADMSbjt504va: Parameter IBR value " <<
IBR <<
" out of range [ 0.0, (+inf) [";
5264 if ( (!((
XEXT >=0.0 &&
XEXT <=1.0 ))) )
5266 UserError0(*
this) <<
"ADMSbjt504va: Parameter XEXT value " <<
XEXT <<
" out of range [ 0.0, 1.0 ]";
5270 if ( (!((
WAVL >=1.0*1.0e-9))) )
5272 UserError0(*
this) <<
"ADMSbjt504va: Parameter WAVL value " <<
WAVL <<
" out of range [ 1.0*1.0e-9, (+inf) [";
5276 if ( (!((
VAVL >=0.01))) )
5278 UserError0(*
this) <<
"ADMSbjt504va: Parameter VAVL value " <<
VAVL <<
" out of range [ 0.01, (+inf) [";
5282 if ( (!((
SFH >=0.0))) )
5284 UserError0(*
this) <<
"ADMSbjt504va: Parameter SFH value " <<
SFH <<
" out of range [ 0.0, (+inf) [";
5288 if ( (!((
RE >=1.0*1.0e-3))) )
5290 UserError0(*
this) <<
"ADMSbjt504va: Parameter RE value " <<
RE <<
" out of range [ 1.0*1.0e-3, (+inf) [";
5294 if ( (!((
RBC >=1.0*1.0e-3))) )
5296 UserError0(*
this) <<
"ADMSbjt504va: Parameter RBC value " <<
RBC <<
" out of range [ 1.0*1.0e-3, (+inf) [";
5300 if ( (!((
RBV >=1.0*1.0e-3))) )
5302 UserError0(*
this) <<
"ADMSbjt504va: Parameter RBV value " <<
RBV <<
" out of range [ 1.0*1.0e-3, (+inf) [";
5306 if ( (!((
RCC >=1.0*1.0e-3))) )
5308 UserError0(*
this) <<
"ADMSbjt504va: Parameter RCC value " <<
RCC <<
" out of range [ 1.0*1.0e-3, (+inf) [";
5312 if ( (!((
RCV >=1.0*1.0e-3))) )
5314 UserError0(*
this) <<
"ADMSbjt504va: Parameter RCV value " <<
RCV <<
" out of range [ 1.0*1.0e-3, (+inf) [";
5318 if ( (!((
SCRCV >=1.0*1.0e-3))) )
5320 UserError0(*
this) <<
"ADMSbjt504va: Parameter SCRCV value " <<
SCRCV <<
" out of range [ 1.0*1.0e-3, (+inf) [";
5324 if ( (!((
IHC >=1.0*1.0e-12))) )
5326 UserError0(*
this) <<
"ADMSbjt504va: Parameter IHC value " <<
IHC <<
" out of range [ 1.0*1.0e-12, (+inf) [";
5330 if ( (!((
AXI >=0.02))) )
5332 UserError0(*
this) <<
"ADMSbjt504va: Parameter AXI value " <<
AXI <<
" out of range [ 0.02, (+inf) [";
5336 if ( (!((
CJE >=0.0))) )
5338 UserError0(*
this) <<
"ADMSbjt504va: Parameter CJE value " <<
CJE <<
" out of range [ 0.0, (+inf) [";
5342 if ( (!((
VDE >=0.05))) )
5344 UserError0(*
this) <<
"ADMSbjt504va: Parameter VDE value " <<
VDE <<
" out of range [ 0.05, (+inf) [";
5348 if ( (!((
PE >=0.01 &&
PE <0.99 ))) )
5350 UserError0(*
this) <<
"ADMSbjt504va: Parameter PE value " <<
PE <<
" out of range [ 0.01, 0.99 [";
5354 if ( (!((
XCJE >=0.0 &&
XCJE <=1.0 ))) )
5356 UserError0(*
this) <<
"ADMSbjt504va: Parameter XCJE value " <<
XCJE <<
" out of range [ 0.0, 1.0 ]";
5360 if ( (!((
CBEO >=0.0))) )
5362 UserError0(*
this) <<
"ADMSbjt504va: Parameter CBEO value " <<
CBEO <<
" out of range [ 0.0, (+inf) [";
5366 if ( (!((
CJC >=0.0))) )
5368 UserError0(*
this) <<
"ADMSbjt504va: Parameter CJC value " <<
CJC <<
" out of range [ 0.0, (+inf) [";
5372 if ( (!((
VDC >=0.05))) )
5374 UserError0(*
this) <<
"ADMSbjt504va: Parameter VDC value " <<
VDC <<
" out of range [ 0.05, (+inf) [";
5378 if ( (!((
PC >=0.01 &&
PC <0.99 ))) )
5380 UserError0(*
this) <<
"ADMSbjt504va: Parameter PC value " <<
PC <<
" out of range [ 0.01, 0.99 [";
5384 if ( (!((
XP >=0.0 &&
XP <0.99 ))) )
5386 UserError0(*
this) <<
"ADMSbjt504va: Parameter XP value " <<
XP <<
" out of range [ 0.0, 0.99 [";
5390 if ( (!((
MC >=0.0 &&
MC <1.0 ))) )
5392 UserError0(*
this) <<
"ADMSbjt504va: Parameter MC value " <<
MC <<
" out of range [ 0.0, 1.0 [";
5396 if ( (!((
XCJC >=0.0 &&
XCJC <=1.0 ))) )
5398 UserError0(*
this) <<
"ADMSbjt504va: Parameter XCJC value " <<
XCJC <<
" out of range [ 0.0, 1.0 ]";
5402 if ( (!((
RCBLX >=0.0))) )
5404 UserError0(*
this) <<
"ADMSbjt504va: Parameter RCBLX value " <<
RCBLX <<
" out of range [ 0.0, (+inf) [";
5408 if ( (!((
RCBLI >=0.0))) )
5410 UserError0(*
this) <<
"ADMSbjt504va: Parameter RCBLI value " <<
RCBLI <<
" out of range [ 0.0, (+inf) [";
5414 if ( (!((
CBCO >=0.0))) )
5416 UserError0(*
this) <<
"ADMSbjt504va: Parameter CBCO value " <<
CBCO <<
" out of range [ 0.0, (+inf) [";
5420 if ( (!((
MTAU >=0.1))) )
5422 UserError0(*
this) <<
"ADMSbjt504va: Parameter MTAU value " <<
MTAU <<
" out of range [ 0.1, (+inf) [";
5426 if ( (!((
TAUE >=0.0))) )
5428 UserError0(*
this) <<
"ADMSbjt504va: Parameter TAUE value " <<
TAUE <<
" out of range [ 0.0, (+inf) [";
5432 if ( (!((
TAUB >0.0))) )
5434 UserError0(*
this) <<
"ADMSbjt504va: Parameter TAUB value " <<
TAUB <<
" out of range ] 0.0, (+inf) [";
5438 if ( (!((
TEPI >=0.0))) )
5440 UserError0(*
this) <<
"ADMSbjt504va: Parameter TEPI value " <<
TEPI <<
" out of range [ 0.0, (+inf) [";
5444 if ( (!((
TAUR >=0.0))) )
5446 UserError0(*
this) <<
"ADMSbjt504va: Parameter TAUR value " <<
TAUR <<
" out of range [ 0.0, (+inf) [";
5450 if ( (!((
XREC >=0.0))) )
5452 UserError0(*
this) <<
"ADMSbjt504va: Parameter XREC value " <<
XREC <<
" out of range [ 0.0, (+inf) [";
5456 if ( (!((
ACBL >=0.0))) )
5458 UserError0(*
this) <<
"ADMSbjt504va: Parameter ACBL value " <<
ACBL <<
" out of range [ 0.0, (+inf) [";
5462 if ( (!((
VGB >=0.1))) )
5464 UserError0(*
this) <<
"ADMSbjt504va: Parameter VGB value " <<
VGB <<
" out of range [ 0.1, (+inf) [";
5468 if ( (!((
VGC >=0.1))) )
5470 UserError0(*
this) <<
"ADMSbjt504va: Parameter VGC value " <<
VGC <<
" out of range [ 0.1, (+inf) [";
5474 if ( (!((
VGJ >=0.1))) )
5476 UserError0(*
this) <<
"ADMSbjt504va: Parameter VGJ value " <<
VGJ <<
" out of range [ 0.1, (+inf) [";
5480 if ( (!((
VGZEB >=0.1))) )
5482 UserError0(*
this) <<
"ADMSbjt504va: Parameter VGZEB value " <<
VGZEB <<
" out of range [ 0.1, (+inf) [";
5488 if ( (!((
TVGEB >=0.0))) )
5490 UserError0(*
this) <<
"ADMSbjt504va: Parameter TVGEB value " <<
TVGEB <<
" out of range [ 0.0, (+inf) [";
5494 if ( (!((
AF >=0.01))) )
5496 UserError0(*
this) <<
"ADMSbjt504va: Parameter AF value " <<
AF <<
" out of range [ 0.01, (+inf) [";
5500 if ( (!((
KF >=0.0))) )
5502 UserError0(*
this) <<
"ADMSbjt504va: Parameter KF value " <<
KF <<
" out of range [ 0.0, (+inf) [";
5506 if ( (!((
KFN >=0.0))) )
5508 UserError0(*
this) <<
"ADMSbjt504va: Parameter KFN value " <<
KFN <<
" out of range [ 0.0, (+inf) [";
5512 if ( (!((
KAVL >=0 &&
KAVL <=1 ))) )
5514 UserError0(*
this) <<
"ADMSbjt504va: Parameter KAVL value " <<
KAVL <<
" out of range [ 0, 1 ]";
5518 if ( (!((
ISS >=0.0))) )
5520 UserError0(*
this) <<
"ADMSbjt504va: Parameter ISS value " <<
ISS <<
" out of range [ 0.0, (+inf) [";
5526 if ( (!((
IKS >=1.0*1.0e-12))) )
5528 UserError0(*
this) <<
"ADMSbjt504va: Parameter IKS value " <<
IKS <<
" out of range [ 1.0*1.0e-12, (+inf) [";
5532 if ( (!((
CJS >=0))) )
5534 UserError0(*
this) <<
"ADMSbjt504va: Parameter CJS value " <<
CJS <<
" out of range [ 0, (+inf) [";
5538 if ( (!((
VDS >0.05))) )
5540 UserError0(*
this) <<
"ADMSbjt504va: Parameter VDS value " <<
VDS <<
" out of range ] 0.05, (+inf) [";
5544 if ( (!((
PS >0.01 &&
PS <0.99 ))) )
5546 UserError0(*
this) <<
"ADMSbjt504va: Parameter PS value " <<
PS <<
" out of range ] 0.01, 0.99 [";
5550 if ( (!((
VGS >=0.1))) )
5552 UserError0(*
this) <<
"ADMSbjt504va: Parameter VGS value " <<
VGS <<
" out of range [ 0.1, (+inf) [";
5556 if ( (!((
MULT >0.0))) )
5558 UserError0(*
this) <<
"ADMSbjt504va: Parameter MULT value " <<
MULT <<
" out of range ] 0.0, (+inf) [";
5562 if ( (!((
TYPE >=(-1) &&
TYPE <=1 ))) )
5564 UserError0(*
this) <<
"ADMSbjt504va: Parameter TYPE value " <<
TYPE <<
" out of range [ (-1), 1 ]";
5568 if ( (!((
GMIN >0 &&
GMIN <=1e-10 ))) )
5570 UserError0(*
this) <<
"ADMSbjt504va: Parameter GMIN value " <<
GMIN <<
" out of range ] 0, 1e-10 ]";
5599 double CJE_T_div_CJE;
5611 double inv_VGZEB_Tr;
5633 invMULT = (1.0/
MULT);
5639 Trk = (
TREF+273.15);
5647 VGZEBOK = (0.05+(0.1*log((1.0+exp(dxa)))));
5651 VGZEBOK = ((
VGZEB+(((
AVGEB*Trk)*Trk)/(Trk+
TVGEB)))+(0.1*log((1.0+exp((-dxa))))));
5656 inv_VGZEB_Tr = (1.0/VGZEB_Tr);
5657 inv_VDE = (1.0/
VDE);
5662 Vt = (8.61708691805812512584e-5*
Tk);
5663 Vtr = (8.61708691805812512584e-5*Trk);
5666 VdtINV = (
VtINV-VtrINV);
5675 VGZEB_T = (0.05+(0.1*log((1.0+exp(dxa)))));
5683 UdeT = (((((-3.0)*
Vt)*log(tN))+(
VDE*tN))+((1.0-tN)*
VGB));
5688 dxa = ((0.05-UdeT)/
Vt);
5691 VDE_T = (UdeT+(
Vt*log((1.0+exp(dxa)))));
5695 VDE_T = (0.05+(
Vt*log((1.0+exp((-dxa))))));
5699 UdcT = (((((-3.0)*
Vt)*log(tN))+(
VDC*tN))+((1.0-tN)*
VGC));
5704 dxa = ((0.05-UdcT)/
Vt);
5707 VDC_T = (UdcT+(
Vt*log((1.0+exp(dxa)))));
5711 VDC_T = (0.05+(
Vt*log((1.0+exp((-dxa))))));
5715 UdsT = (((((-3.0)*
Vt)*log(tN))+(
VDS*tN))+((1.0-tN)*
VGS));
5720 dxa = ((0.05-UdsT)/
Vt);
5723 VDS_T = (UdsT+(
Vt*log((1.0+exp(dxa)))));
5727 VDS_T = (0.05+(
Vt*log((1.0+exp((-dxa))))));
5733 CJE_T = (
CJE*CJE_T_div_CJE);
5736 CJCscaleINV = (1.0/CJCscale);
5737 CJC_T = (
CJC*CJCscale);
5739 RE_T = (
RE*exp((lntN*
AE)));
5741 RBC_T = (
RBC*exp((lntN*
AEX)));
5742 RCCxx_T = (
RCC*exp((lntN*
AC)));
5744 RCCin_T = (
RCBLI*exp((lntN*ACBL)));
5745 RCV_T = (
RCV*exp((lntN*
AEPI)));
5749 IK_T = (
IK*exp((lntN*(1.0-
AB))));
5750 IBF_T = ((
IBF*exp((lntN*(6.0-(2.0*
MLF)))))*exp((((-
VGJ)*VdtINV)/
MLF)));
5751 IBR_T = (((
IBR*tN)*tN)*exp((((-
VGC)*VdtINV)/2.0)));
5752 tempx = pow((
VGZEB_T*inv_VGZEB_Tr),(-0.5));
5753 y = (1.0/CJE_T_div_CJE);
5756 tempx = exp((lntN*
AQBO));
5759 ISS_T = ((
ISS*exp((lntN*(4.0-
AS))))*exp(((-
VGS)*VdtINV)));
5760 ICSS_T = ((
ICSS*exp((lntN*(3.5-(0.5*
ASUB)))))*exp(((-
VGS)*VdtINV)));
5776 BnT = (Bn*((1.0+(7.2e-4*Tk300))-((1.6e-6*Tk300)*Tk300)));
5795 RE_TM = (RE_T*invMULT);
5796 RBC_TM = (RBC_T*invMULT);
5797 RBV_TM = (RBV_T*invMULT);
5799 RCCex_TM = (RCCex_T*invMULT);
5800 RCCin_TM = (RCCin_T*invMULT);
5801 RCV_TM = (RCV_T*invMULT);
5843 std::vector<Instance*>::iterator iter;
5847 for (iter=first; iter!=last; ++iter)
5849 (*iter)->processParams();
5867 :
DeviceModel(model_block, configuration.getModelParameters(), factory_block),
5918 TAUR(520.0*1.0e-12),
6017 if (!
given(
"XYCEADMSMODTEMP"))
6042 std::vector<Instance*>::iterator iterI;
6047 for (iterI = firstI; iterI != lastI; ++iterI)
6063 std::vector<Instance*>::const_iterator iter;
6069 os <<
" name model name Parameters" << std::endl;
6070 for (i=0, iter=first; iter!=last; ++iter, ++i)
6072 os <<
" " << i <<
": " << (*iter)->getName() <<
" ";
6076 os <<
"MULT = " << (*iter)->MULT << std::endl;
6101 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
6113 .registerDevice(
"q", 504)
6114 .registerModelType(
"npn", 504)
6115 .registerModelType(
"pnp", 504);
6120 #ifdef Xyce_ADMS_SENSITIVITIES
6129 void evaluateInitialInstance(
6133 bool instancePar_given_MULT,
6154 bool modelPar_given_TREF,
6156 bool modelPar_given_DTA,
6158 bool modelPar_given_IS,
6160 bool modelPar_given_IK,
6162 bool modelPar_given_VER,
6164 bool modelPar_given_VEF,
6166 bool modelPar_given_BF,
6168 bool modelPar_given_IBF,
6170 bool modelPar_given_MLF,
6172 bool modelPar_given_XIBI,
6174 bool modelPar_given_IZEB,
6176 bool modelPar_given_NZEB,
6178 bool modelPar_given_BRI,
6180 bool modelPar_given_IBR,
6182 bool modelPar_given_VLR,
6184 bool modelPar_given_XEXT,
6186 bool modelPar_given_WAVL,
6188 bool modelPar_given_VAVL,
6190 bool modelPar_given_SFH,
6192 bool modelPar_given_RE,
6194 bool modelPar_given_RBC,
6196 bool modelPar_given_RBV,
6198 bool modelPar_given_RCC,
6200 bool modelPar_given_RCV,
6202 bool modelPar_given_SCRCV,
6204 bool modelPar_given_IHC,
6206 bool modelPar_given_AXI,
6208 bool modelPar_given_CJE,
6210 bool modelPar_given_VDE,
6212 bool modelPar_given_PE,
6214 bool modelPar_given_XCJE,
6216 bool modelPar_given_CBEO,
6218 bool modelPar_given_CJC,
6220 bool modelPar_given_VDC,
6222 bool modelPar_given_PC,
6224 bool modelPar_given_XP,
6226 bool modelPar_given_MC,
6228 bool modelPar_given_XCJC,
6230 bool modelPar_given_RCBLX,
6232 bool modelPar_given_RCBLI,
6234 bool modelPar_given_CBCO,
6236 bool modelPar_given_MTAU,
6238 bool modelPar_given_TAUE,
6240 bool modelPar_given_TAUB,
6242 bool modelPar_given_TEPI,
6244 bool modelPar_given_TAUR,
6246 bool modelPar_given_DEG,
6248 bool modelPar_given_XREC,
6250 bool modelPar_given_AQBO,
6252 bool modelPar_given_AE,
6254 bool modelPar_given_AB,
6256 bool modelPar_given_AEPI,
6258 bool modelPar_given_AEX,
6260 bool modelPar_given_AC,
6262 bool modelPar_given_ACBL,
6264 bool modelPar_given_DVGBF,
6266 bool modelPar_given_DVGBR,
6268 bool modelPar_given_VGB,
6270 bool modelPar_given_VGC,
6272 bool modelPar_given_VGJ,
6274 bool modelPar_given_VGZEB,
6276 bool modelPar_given_AVGEB,
6278 bool modelPar_given_TVGEB,
6280 bool modelPar_given_DVGTE,
6282 bool modelPar_given_DAIS,
6284 bool modelPar_given_AF,
6286 bool modelPar_given_KF,
6288 bool modelPar_given_KFN,
6290 bool modelPar_given_ISS,
6292 bool modelPar_given_ICSS,
6294 bool modelPar_given_IKS,
6296 bool modelPar_given_CJS,
6298 bool modelPar_given_VDS,
6300 bool modelPar_given_PS,
6302 bool modelPar_given_VGS,
6304 bool modelPar_given_AS,
6306 bool modelPar_given_ASUB,
6308 bool modelPar_given_MULT,
6310 bool modelPar_given_GMIN,
6313 bool modelPar_given_LEVEL,
6315 bool modelPar_given_EXMOD,
6317 bool modelPar_given_EXPHI,
6319 bool modelPar_given_EXAVL,
6321 bool modelPar_given_EXSUB,
6323 bool modelPar_given_KAVL,
6325 bool modelPar_given_TYPE
6379 double admsTemperature,
double adms_vt_nom)
6393 void evaluateInitialModel(
6397 bool modelPar_given_TREF,
6399 bool modelPar_given_DTA,
6401 bool modelPar_given_IS,
6403 bool modelPar_given_IK,
6405 bool modelPar_given_VER,
6407 bool modelPar_given_VEF,
6409 bool modelPar_given_BF,
6411 bool modelPar_given_IBF,
6413 bool modelPar_given_MLF,
6415 bool modelPar_given_XIBI,
6417 bool modelPar_given_IZEB,
6419 bool modelPar_given_NZEB,
6421 bool modelPar_given_BRI,
6423 bool modelPar_given_IBR,
6425 bool modelPar_given_VLR,
6427 bool modelPar_given_XEXT,
6429 bool modelPar_given_WAVL,
6431 bool modelPar_given_VAVL,
6433 bool modelPar_given_SFH,
6435 bool modelPar_given_RE,
6437 bool modelPar_given_RBC,
6439 bool modelPar_given_RBV,
6441 bool modelPar_given_RCC,
6443 bool modelPar_given_RCV,
6445 bool modelPar_given_SCRCV,
6447 bool modelPar_given_IHC,
6449 bool modelPar_given_AXI,
6451 bool modelPar_given_CJE,
6453 bool modelPar_given_VDE,
6455 bool modelPar_given_PE,
6457 bool modelPar_given_XCJE,
6459 bool modelPar_given_CBEO,
6461 bool modelPar_given_CJC,
6463 bool modelPar_given_VDC,
6465 bool modelPar_given_PC,
6467 bool modelPar_given_XP,
6469 bool modelPar_given_MC,
6471 bool modelPar_given_XCJC,
6473 bool modelPar_given_RCBLX,
6475 bool modelPar_given_RCBLI,
6477 bool modelPar_given_CBCO,
6479 bool modelPar_given_MTAU,
6481 bool modelPar_given_TAUE,
6483 bool modelPar_given_TAUB,
6485 bool modelPar_given_TEPI,
6487 bool modelPar_given_TAUR,
6489 bool modelPar_given_DEG,
6491 bool modelPar_given_XREC,
6493 bool modelPar_given_AQBO,
6495 bool modelPar_given_AE,
6497 bool modelPar_given_AB,
6499 bool modelPar_given_AEPI,
6501 bool modelPar_given_AEX,
6503 bool modelPar_given_AC,
6505 bool modelPar_given_ACBL,
6507 bool modelPar_given_DVGBF,
6509 bool modelPar_given_DVGBR,
6511 bool modelPar_given_VGB,
6513 bool modelPar_given_VGC,
6515 bool modelPar_given_VGJ,
6517 bool modelPar_given_VGZEB,
6519 bool modelPar_given_AVGEB,
6521 bool modelPar_given_TVGEB,
6523 bool modelPar_given_DVGTE,
6525 bool modelPar_given_DAIS,
6527 bool modelPar_given_AF,
6529 bool modelPar_given_KF,
6531 bool modelPar_given_KFN,
6533 bool modelPar_given_ISS,
6535 bool modelPar_given_ICSS,
6537 bool modelPar_given_IKS,
6539 bool modelPar_given_CJS,
6541 bool modelPar_given_VDS,
6543 bool modelPar_given_PS,
6545 bool modelPar_given_VGS,
6547 bool modelPar_given_AS,
6549 bool modelPar_given_ASUB,
6551 bool modelPar_given_MULT,
6553 bool modelPar_given_GMIN,
6556 bool modelPar_given_LEVEL,
6558 bool modelPar_given_EXMOD,
6560 bool modelPar_given_EXPHI,
6562 bool modelPar_given_EXAVL,
6564 bool modelPar_given_EXSUB,
6566 bool modelPar_given_KAVL,
6568 bool modelPar_given_TYPE
6622 double admsTemperature)
6668 if ((modelPar_TYPE==1))
6670 modelVar_An = 7.03e7;
6675 modelVar_An = 1.58e8;
6678 modelVar_Xext1 = (1.0-modelPar_XEXT);
6679 modelVar_CBEO_M = (modelPar_CBEO*modelPar_MULT);
6680 modelVar_CBCO_M = (modelPar_CBCO*modelPar_MULT);
6681 invMULT = (1.0/modelPar_MULT);
6682 modelVar_SCRCV_M = (modelPar_SCRCV*invMULT);
6683 modelVar_KF_M = (modelPar_KF*pow(modelPar_MULT,(1.0-modelPar_AF)));
6684 modelVar_KFN_M = (modelPar_KFN*pow(modelPar_MULT,(1.0-((2.0*(modelPar_MLF-1.0))+(modelPar_AF*(2.0-modelPar_MLF))))));
6685 modelVar_pow2_2mPE = pow(2.0,(2.0-modelPar_PE));
6686 modelVar_pow2_PEm2 = (1.0/modelVar_pow2_2mPE);
6687 Trk = (modelPar_TREF+273.15);
6692 dxa = (((modelPar_VGZEB+(((modelPar_AVGEB*Trk)*Trk)/(Trk+modelPar_TVGEB)))-0.05)/0.1);
6693 if (((modelPar_VGZEB+(((modelPar_AVGEB*Trk)*Trk)/(Trk+modelPar_TVGEB)))<0.05))
6695 VGZEBOK = (0.05+(0.1*log((1.0+exp(dxa)))));
6699 VGZEBOK = ((modelPar_VGZEB+(((modelPar_AVGEB*Trk)*Trk)/(Trk+modelPar_TVGEB)))+(0.1*log((1.0+exp((-dxa))))));
6703 VGZEB_Tr = modelPar_VGZEB;
6704 inv_VGZEB_Tr = (1.0/VGZEB_Tr);
6705 inv_VDE = (1.0/modelPar_VDE);
6707 modelVar_Tk = ((admsTemperature+modelPar_DTA)+Vdt);
6708 Tamb = (admsTemperature+modelPar_DTA);
6709 tN = (modelVar_Tk/Trk);
6710 modelVar_Vt = (8.61708691805812512584e-5*modelVar_Tk);
6711 Vtr = (8.61708691805812512584e-5*Trk);
6712 modelVar_VtINV = (1.0/modelVar_Vt);
6714 VdtINV = (modelVar_VtINV-VtrINV);
6720 dxa = (((VGZEBOK-(((modelPar_AVGEB*modelVar_Tk)*modelVar_Tk)/(modelVar_Tk+modelPar_TVGEB)))-0.05)/0.1);
6721 if (((VGZEBOK-(((modelPar_AVGEB*modelVar_Tk)*modelVar_Tk)/(modelVar_Tk+modelPar_TVGEB)))<0.05))
6723 modelVar_VGZEB_T = (0.05+(0.1*log((1.0+exp(dxa)))));
6727 modelVar_VGZEB_T = ((VGZEBOK-(((modelPar_AVGEB*modelVar_Tk)*modelVar_Tk)/(modelVar_Tk+modelPar_TVGEB)))+(0.1*log((1.0+exp((-dxa))))));
6729 modelVar_VGZEB_T = modelVar_VGZEB_T;
6731 UdeT = (((((-3.0)*modelVar_Vt)*log(tN))+(modelPar_VDE*tN))+((1.0-tN)*modelPar_VGB));
6736 dxa = ((0.05-UdeT)/modelVar_Vt);
6739 modelVar_VDE_T = (UdeT+(modelVar_Vt*log((1.0+exp(dxa)))));
6743 modelVar_VDE_T = (0.05+(modelVar_Vt*log((1.0+exp((-dxa))))));
6745 modelVar_VDE_T = modelVar_VDE_T;
6747 UdcT = (((((-3.0)*modelVar_Vt)*log(tN))+(modelPar_VDC*tN))+((1.0-tN)*modelPar_VGC));
6752 dxa = ((0.05-UdcT)/modelVar_Vt);
6755 modelVar_VDC_T = (UdcT+(modelVar_Vt*log((1.0+exp(dxa)))));
6759 modelVar_VDC_T = (0.05+(modelVar_Vt*log((1.0+exp((-dxa))))));
6761 modelVar_VDC_T = modelVar_VDC_T;
6763 UdsT = (((((-3.0)*modelVar_Vt)*log(tN))+(modelPar_VDS*tN))+((1.0-tN)*modelPar_VGS));
6768 dxa = ((0.05-UdsT)/modelVar_Vt);
6771 modelVar_VDS_T = (UdsT+(modelVar_Vt*log((1.0+exp(dxa)))));
6775 modelVar_VDS_T = (0.05+(modelVar_Vt*log((1.0+exp((-dxa))))));
6777 modelVar_VDS_T = modelVar_VDS_T;
6779 modelVar_inv_VDE_T = (1.0/modelVar_VDE_T);
6780 CJE_T_div_CJE = pow((modelPar_VDE*modelVar_inv_VDE_T),modelPar_PE);
6781 CJE_T = (modelPar_CJE*CJE_T_div_CJE);
6782 CJS_T = (modelPar_CJS*pow((modelPar_VDS/modelVar_VDS_T),modelPar_PS));
6783 CJCscale = (((1.0-modelPar_XP)*pow((modelPar_VDC/modelVar_VDC_T),modelPar_PC))+modelPar_XP);
6784 CJCscaleINV = (1.0/CJCscale);
6785 CJC_T = (modelPar_CJC*CJCscale);
6786 modelVar_XP_T = (modelPar_XP*CJCscaleINV);
6787 RE_T = (modelPar_RE*exp((lntN*modelPar_AE)));
6788 RBV_T = (modelPar_RBV*exp((lntN*(modelPar_AB-modelPar_AQBO))));
6789 RBC_T = (modelPar_RBC*exp((lntN*modelPar_AEX)));
6790 RCCxx_T = (modelPar_RCC*exp((lntN*modelPar_AC)));
6791 RCCex_T = (modelPar_RCBLX*exp((lntN*modelPar_ACBL)));
6792 RCCin_T = (modelPar_RCBLI*exp((lntN*modelPar_ACBL)));
6793 RCV_T = (modelPar_RCV*exp((lntN*modelPar_AEPI)));
6794 modelVar_BF_T = ((modelPar_BF*exp((lntN*((modelPar_AE-modelPar_AB)-modelPar_AQBO))))*exp(((-modelPar_DVGBF)*VdtINV)));
6795 modelVar_BRI_T = (modelPar_BRI*exp(((-modelPar_DVGBR)*VdtINV)));
6796 modelVar_IS_T = ((modelPar_IS*exp((lntN*(((4.0-modelPar_AB)-modelPar_AQBO)+modelPar_DAIS))))*exp(((-modelPar_VGB)*VdtINV)));
6797 IK_T = (modelPar_IK*exp((lntN*(1.0-modelPar_AB))));
6798 IBF_T = ((modelPar_IBF*exp((lntN*(6.0-(2.0*modelPar_MLF)))))*exp((((-modelPar_VGJ)*VdtINV)/modelPar_MLF)));
6799 IBR_T = (((modelPar_IBR*tN)*tN)*exp((((-modelPar_VGC)*VdtINV)/2.0)));
6800 tempx = pow((modelVar_VGZEB_T*inv_VGZEB_Tr),(-0.5));
6801 y = (1.0/CJE_T_div_CJE);
6802 modelVar_nZEB_T = ((((((((modelPar_NZEB*modelVar_VGZEB_T)*modelVar_VGZEB_T)*tempx)*y)*modelPar_VDE)*modelVar_inv_VDE_T)*inv_VGZEB_Tr)*inv_VGZEB_Tr);
6803 IZEB_T = (((((((modelPar_IZEB*tempx)*modelVar_VDE_T)*modelVar_VDE_T)*inv_VDE)*inv_VDE)*CJE_T_div_CJE)*exp((modelPar_NZEB-modelVar_nZEB_T)));
6804 tempx = exp((lntN*modelPar_AQBO));
6805 modelVar_VEF_T = ((modelPar_VEF*tempx)*CJCscaleINV);
6806 modelVar_VER_T = ((modelPar_VER*tempx)*y);
6807 ISS_T = ((modelPar_ISS*exp((lntN*(4.0-modelPar_AS))))*exp(((-modelPar_VGS)*VdtINV)));
6808 ICSS_T = ((modelPar_ICSS*exp((lntN*(3.5-(0.5*modelPar_ASUB)))))*exp(((-modelPar_VGS)*VdtINV)));
6811 modelVar_IKS_T = (((modelPar_IKS*exp((lntN*(1.0-modelPar_AS))))*(modelVar_IS_T/modelPar_IS))*(modelPar_ISS/ISS_T));
6815 modelVar_IKS_T = (modelPar_IKS*exp((lntN*(1.0-modelPar_AS))));
6817 modelVar_TAUE_T = ((modelPar_TAUE*exp((lntN*(modelPar_AB-2.0))))*exp(((-modelPar_DVGTE)*VdtINV)));
6818 modelVar_TAUB_T = (modelPar_TAUB*exp((lntN*((modelPar_AQBO+modelPar_AB)-1.0))));
6819 modelVar_TEPI_T = (modelPar_TEPI*exp((lntN*(modelPar_AEPI-1.0))));
6820 modelVar_TAUR_T = ((modelPar_TAUR*(modelVar_TAUB_T+modelVar_TEPI_T))/(modelPar_TAUB+modelPar_TEPI));
6821 Tk300 = (modelVar_Tk-300.0);
6822 if ((modelVar_Tk<525.0))
6824 modelVar_BnT = (Bn*((1.0+(7.2e-4*Tk300))-((1.6e-6*Tk300)*Tk300)));
6828 modelVar_BnT = (Bn*1.081);
6830 modelVar_DEG_T = (modelPar_DEG*exp((lntN*modelPar_AQBO)));
6831 modelVar_IS_TM = (modelVar_IS_T*modelPar_MULT);
6832 modelVar_IK_TM = (IK_T*modelPar_MULT);
6833 modelVar_IBF_TM = (IBF_T*modelPar_MULT);
6834 modelVar_IBR_TM = (IBR_T*modelPar_MULT);
6835 modelVar_IZEB_TM = (IZEB_T*modelPar_MULT);
6836 modelVar_IHC_M = (modelPar_IHC*modelPar_MULT);
6837 modelVar_ISS_TM = (ISS_T*modelPar_MULT);
6838 modelVar_ICSS_TM = (ICSS_T*modelPar_MULT);
6839 modelVar_IKS_TM = (modelVar_IKS_T*modelPar_MULT);
6840 modelVar_CJE_TM = (CJE_T*modelPar_MULT);
6841 modelVar_CJC_TM = (CJC_T*modelPar_MULT);
6842 modelVar_CJS_TM = (CJS_T*modelPar_MULT);
6843 modelVar_RE_TM = (RE_T*invMULT);
6844 modelVar_RBC_TM = (RBC_T*invMULT);
6845 modelVar_RBV_TM = (RBV_T*invMULT);
6846 modelVar_RCCxx_TM = (RCCxx_T*invMULT);
6847 RCCex_TM = (RCCex_T*invMULT);
6848 RCCin_TM = (RCCin_T*invMULT);
6849 modelVar_RCV_TM = (RCV_T*invMULT);
6850 if ((modelPar_RCC>0.0))
6852 modelVar_GCCxx_TM = (1.0/modelVar_RCCxx_TM);
6856 modelVar_GCCxx_TM = 0;
6858 if ((modelPar_RCBLX>0.0))
6860 modelVar_GCCex_TM = (1.0/RCCex_TM);
6864 modelVar_GCCex_TM = 0;
6866 if ((modelPar_RCBLI>0.0))
6868 modelVar_GCCin_TM = (1.0/RCCin_TM);
6872 modelVar_GCCin_TM = 0;
6891 void evaluateModelEquations(
6892 std::vector <double> & probeVars,
6894 const int admsProbeID_V_noi_e1,
6895 const int admsProbeID_V_c3_c1,
6896 const int admsProbeID_V_c3_c4,
6897 const int admsProbeID_V_c4_c1,
6898 const int admsProbeID_V_b_c,
6899 const int admsProbeID_V_b_e,
6900 const int admsProbeID_V_b_b1,
6901 const int admsProbeID_V_e_e1,
6902 const int admsProbeID_V_c1_c2,
6903 const int admsProbeID_V_s_c1,
6904 const int admsProbeID_V_b1_b2,
6905 const int admsProbeID_V_b1_e1,
6906 const int admsProbeID_V_b2_e1,
6907 const int admsProbeID_V_b2_c2,
6908 const int admsProbeID_V_b2_c1,
6910 const int admsNodeID_c,
6911 const int admsNodeID_b,
6912 const int admsNodeID_e,
6913 const int admsNodeID_s,
6914 const int admsNodeID_e1,
6915 const int admsNodeID_b1,
6916 const int admsNodeID_b2,
6917 const int admsNodeID_c3,
6918 const int admsNodeID_c4,
6919 const int admsNodeID_c2,
6920 const int admsNodeID_c1,
6921 const int admsNodeID_noi,
6925 bool instancePar_given_MULT,
6946 bool modelPar_given_TREF,
6948 bool modelPar_given_DTA,
6950 bool modelPar_given_IS,
6952 bool modelPar_given_IK,
6954 bool modelPar_given_VER,
6956 bool modelPar_given_VEF,
6958 bool modelPar_given_BF,
6960 bool modelPar_given_IBF,
6962 bool modelPar_given_MLF,
6964 bool modelPar_given_XIBI,
6966 bool modelPar_given_IZEB,
6968 bool modelPar_given_NZEB,
6970 bool modelPar_given_BRI,
6972 bool modelPar_given_IBR,
6974 bool modelPar_given_VLR,
6976 bool modelPar_given_XEXT,
6978 bool modelPar_given_WAVL,
6980 bool modelPar_given_VAVL,
6982 bool modelPar_given_SFH,
6984 bool modelPar_given_RE,
6986 bool modelPar_given_RBC,
6988 bool modelPar_given_RBV,
6990 bool modelPar_given_RCC,
6992 bool modelPar_given_RCV,
6994 bool modelPar_given_SCRCV,
6996 bool modelPar_given_IHC,
6998 bool modelPar_given_AXI,
7000 bool modelPar_given_CJE,
7002 bool modelPar_given_VDE,
7004 bool modelPar_given_PE,
7006 bool modelPar_given_XCJE,
7008 bool modelPar_given_CBEO,
7010 bool modelPar_given_CJC,
7012 bool modelPar_given_VDC,
7014 bool modelPar_given_PC,
7016 bool modelPar_given_XP,
7018 bool modelPar_given_MC,
7020 bool modelPar_given_XCJC,
7022 bool modelPar_given_RCBLX,
7024 bool modelPar_given_RCBLI,
7026 bool modelPar_given_CBCO,
7028 bool modelPar_given_MTAU,
7030 bool modelPar_given_TAUE,
7032 bool modelPar_given_TAUB,
7034 bool modelPar_given_TEPI,
7036 bool modelPar_given_TAUR,
7038 bool modelPar_given_DEG,
7040 bool modelPar_given_XREC,
7042 bool modelPar_given_AQBO,
7044 bool modelPar_given_AE,
7046 bool modelPar_given_AB,
7048 bool modelPar_given_AEPI,
7050 bool modelPar_given_AEX,
7052 bool modelPar_given_AC,
7054 bool modelPar_given_ACBL,
7056 bool modelPar_given_DVGBF,
7058 bool modelPar_given_DVGBR,
7060 bool modelPar_given_VGB,
7062 bool modelPar_given_VGC,
7064 bool modelPar_given_VGJ,
7066 bool modelPar_given_VGZEB,
7068 bool modelPar_given_AVGEB,
7070 bool modelPar_given_TVGEB,
7072 bool modelPar_given_DVGTE,
7074 bool modelPar_given_DAIS,
7076 bool modelPar_given_AF,
7078 bool modelPar_given_KF,
7080 bool modelPar_given_KFN,
7082 bool modelPar_given_ISS,
7084 bool modelPar_given_ICSS,
7086 bool modelPar_given_IKS,
7088 bool modelPar_given_CJS,
7090 bool modelPar_given_VDS,
7092 bool modelPar_given_PS,
7094 bool modelPar_given_VGS,
7096 bool modelPar_given_AS,
7098 bool modelPar_given_ASUB,
7100 bool modelPar_given_MULT,
7102 bool modelPar_given_GMIN,
7105 bool modelPar_given_LEVEL,
7107 bool modelPar_given_EXMOD,
7109 bool modelPar_given_EXPHI,
7111 bool modelPar_given_EXAVL,
7113 bool modelPar_given_EXSUB,
7115 bool modelPar_given_KAVL,
7117 bool modelPar_given_TYPE
7172 double admsTemperature,
double adms_vt_nom,
double gmin, std::vector <AdmsSensFadType> & staticContributions, std::vector <AdmsSensFadType> & dynamicContributions,
const Instance & theInstance)
7368 Vb2c1 = probeVars[admsProbeID_V_b2_c1];
7370 Vb2c2 = probeVars[admsProbeID_V_b2_c2];
7372 Vb2e1 = (modelPar_TYPE*(probeVars[admsProbeID_V_b2_e1]));
7373 Vb1e1 = probeVars[admsProbeID_V_b1_e1];
7375 Vb1b2 = probeVars[admsProbeID_V_b1_b2];
7377 Vsc1 = (modelPar_TYPE*(probeVars[admsProbeID_V_s_c1]));
7378 Vc1c2 = (modelPar_TYPE*(probeVars[admsProbeID_V_c1_c2]));
7379 Vee1 = (modelPar_TYPE*(probeVars[admsProbeID_V_e_e1]));
7380 Vbb1 = (modelPar_TYPE*(probeVars[admsProbeID_V_b_b1]));
7381 Vbe = (modelPar_TYPE*(probeVars[admsProbeID_V_b_e]));
7382 Vbc = (modelPar_TYPE*(probeVars[admsProbeID_V_b_c]));
7383 if ((modelPar_RCBLX>0.0))
7385 if ((modelPar_RCBLI>0.0))
7387 Vc4c1 = (modelPar_TYPE*(probeVars[admsProbeID_V_c4_c1]));
7388 Vc3c4 = (modelPar_TYPE*(probeVars[admsProbeID_V_c3_c4]));
7393 Vc3c4 = (modelPar_TYPE*(probeVars[admsProbeID_V_c3_c1]));
7398 if ((modelPar_RCBLI>0.0))
7400 Vc4c1 = (modelPar_TYPE*(probeVars[admsProbeID_V_c4_c1]));
7409 Vb1c4 = (((Vb1b2+Vb2c2)-Vc1c2)-Vc4c1);
7410 Vcc3 = ((((-Vbc)+Vbb1)+Vb1c4)-Vc3c4);
7412 Vsc4 = (Vsc1-Vc4c1);
7413 Vsc3 = (Vsc4-Vc3c4);
7414 if (((Vb2c2*modelVar_VtINV)<400.0))
7416 eVb2c2 = exp((Vb2c2*modelVar_VtINV));
7421 eVb2c2 = (expl*(1.0+((Vb2c2*modelVar_VtINV)-400.0)));
7423 if (((Vb2e1*modelVar_VtINV)<400.0))
7425 eVb2e1 = exp((Vb2e1*modelVar_VtINV));
7430 eVb2e1 = (expl*(1.0+((Vb2e1*modelVar_VtINV)-400.0)));
7432 if (((Vb1e1*modelVar_VtINV)<400.0))
7434 eVb1e1 = exp((Vb1e1*modelVar_VtINV));
7439 eVb1e1 = (expl*(1.0+((Vb1e1*modelVar_VtINV)-400.0)));
7441 if (((Vb1c4*modelVar_VtINV)<400.0))
7443 eVb1c4 = exp((Vb1c4*modelVar_VtINV));
7448 eVb1c4 = (expl*(1.0+((Vb1c4*modelVar_VtINV)-400.0)));
7450 if (((Vb1b2*modelVar_VtINV)<400.0))
7452 instanceVar_eVb1b2 = exp((Vb1b2*modelVar_VtINV));
7457 instanceVar_eVb1b2 = (expl*(1.0+((Vb1b2*modelVar_VtINV)-400.0)));
7459 if (((Vbc3*modelVar_VtINV)<400.0))
7461 eVbc3 = exp((Vbc3*modelVar_VtINV));
7466 eVbc3 = (expl*(1.0+((Vbc3*modelVar_VtINV)-400.0)));
7468 if (((Vsc1*modelVar_VtINV)<400.0))
7470 eVsc1 = exp((Vsc1*modelVar_VtINV));
7475 eVsc1 = (expl*(1.0+((Vsc1*modelVar_VtINV)-400.0)));
7477 if (((Vsc3*modelVar_VtINV)<400.0))
7479 eVsc3 = exp((Vsc3*modelVar_VtINV));
7484 eVsc3 = (expl*(1.0+((Vsc3*modelVar_VtINV)-400.0)));
7486 if (((Vsc4*modelVar_VtINV)<400.0))
7488 eVsc4 = exp((Vsc4*modelVar_VtINV));
7493 eVsc4 = (expl*(1.0+((Vsc4*modelVar_VtINV)-400.0)));
7495 if ((((Vbc3-modelVar_VDC_T)*modelVar_VtINV)<400.0))
7497 eVbc3VDC = exp(((Vbc3-modelVar_VDC_T)*modelVar_VtINV));
7502 eVbc3VDC = (expl*(1.0+(((Vbc3-modelVar_VDC_T)*modelVar_VtINV)-400.0)));
7504 if ((((Vb1c4-modelVar_VDC_T)*modelVar_VtINV)<400.0))
7506 eVb1c4VDC = exp(((Vb1c4-modelVar_VDC_T)*modelVar_VtINV));
7511 eVb1c4VDC = (expl*(1.0+(((Vb1c4-modelVar_VDC_T)*modelVar_VtINV)-400.0)));
7513 if ((((Vb2c2-modelVar_VDC_T)*modelVar_VtINV)<400.0))
7515 eVb2c2VDC = exp(((Vb2c2-modelVar_VDC_T)*modelVar_VtINV));
7520 eVb2c2VDC = (expl*(1.0+(((Vb2c2-modelVar_VDC_T)*modelVar_VtINV)-400.0)));
7522 if ((((Vb2c1-modelVar_VDC_T)*modelVar_VtINV)<400.0))
7524 eVb2c1VDC = exp(((Vb2c1-modelVar_VDC_T)*modelVar_VtINV));
7529 eVb2c1VDC = (expl*(1.0+(((Vb2c1-modelVar_VDC_T)*modelVar_VtINV)-400.0)));
7531 K0 = sqrt((1.0+(4.0*eVb2c2VDC)));
7532 Kw = sqrt((1.0+(4.0*eVb2c1VDC)));
7533 pW = ((2.0*eVb2c1VDC)/(1.0+Kw));
7538 Ec = (modelVar_Vt*((K0-Kw)-log(((K0+1.0)/(Kw+1.0)))));
7539 Ic1c2 = ((Ec+Vc1c2)/modelVar_RCV_TM);
7548 tmpV = (100.0+log((1.0+(Vb2c1-100.0))));
7551 Vqs_th = ((modelVar_VDC_T+((2.0*modelVar_Vt)*log(((((0.5*Ic1c2)*modelVar_RCV_TM)*modelVar_VtINV)+1.0))))-tmpV);
7552 eps_VDC = (0.2*modelVar_VDC_T);
7553 eps2 = (eps_VDC*eps_VDC);
7554 x2 = (Vqs_th*Vqs_th);
7557 Vqs = ((0.5*eps2)/(sqrt((x2+eps2))-Vqs_th));
7561 Vqs = (0.5*(sqrt((x2+eps2))+Vqs_th));
7564 Iqs = ((Vqs*(Vqs+(modelVar_IHC_M*modelVar_SCRCV_M)))/(modelVar_SCRCV_M*(Vqs+(modelVar_IHC_M*modelVar_RCV_TM))));
7565 Ic1c2_Iqs = (Ic1c2/Iqs);
7570 dxa = ((Ic1c2_Iqs-1.0)/modelPar_AXI);
7571 if ((Ic1c2_Iqs<1.0))
7573 alpha1 = (1.0+(modelPar_AXI*log((1.0+exp(dxa)))));
7577 alpha1 = (Ic1c2_Iqs+(modelPar_AXI*log((1.0+exp((-dxa))))));
7581 alpha = (alpha1/(1.0+(modelPar_AXI*log((1.0+exp(((-1.0)/modelPar_AXI)))))));
7582 vyi = (Vqs/(modelVar_IHC_M*modelVar_SCRCV_M));
7583 yi = ((1.0+sqrt((1.0+(((4.0*alpha)*vyi)*(1.0+vyi)))))/((2.0*alpha)*(1.0+vyi)));
7584 xi_w = (1.0-(yi/(1.0+(pW*yi))));
7585 gp0 = ((((0.5*Ic1c2)*modelVar_RCV_TM)*xi_w)*modelVar_VtINV);
7586 gp0_help = ((2.0*gp0)+(pW*((pW+gp0)+1.0)));
7587 gp02 = (0.5*(gp0-1.0));
7588 sqr_arg = ((gp02*gp02)+gp0_help);
7591 p0star = (gp02+sqrt(sqr_arg));
7595 p0star = (gp0_help/(sqrt(sqr_arg)-gp02));
7597 if ((p0star<1.0e-40))
7601 eVb2c2star = ((p0star*(p0star+1.0))*exp((modelVar_VDC_T*modelVar_VtINV)));
7602 B1 = ((0.5*modelVar_SCRCV_M)*(Ic1c2-modelVar_IHC_M));
7603 B2 = (((modelVar_SCRCV_M*modelVar_RCV_TM)*modelVar_IHC_M)*Ic1c2);
7604 Vxi0 = (B1+sqrt(((B1*B1)+B2)));
7605 Vch = (modelVar_VDC_T*(0.1+((2.0*Ic1c2)/(Ic1c2+Iqs))));
7606 Icap = ((modelVar_IHC_M*Ic1c2)/(modelVar_IHC_M+Ic1c2));
7607 Icap_IHC = (modelVar_IHC_M/(modelVar_IHC_M+Ic1c2));
7612 p0star = ((2.0*eVb2c2VDC)/(1.0+K0));
7613 eVb2c2star = eVb2c2;
7614 if (((fabs(Vc1c2)<(1.0e-5*modelVar_Vt))||(fabs(Ec)<((1.0e-40*modelVar_Vt)*(K0+Kw)))))
7616 pav = (0.5*(p0star+pW));
7617 xi_w = (pav/(pav+1.0));
7621 xi_w = (Ec/((Ec+Vb2c2)-Vb2c1));
7624 Vch = (0.1*modelVar_VDC_T);
7626 Icap_IHC = (1.0-(Icap/modelVar_IHC_M));
7628 Vfe = (modelVar_VDE_T*(1.0-pow(3.0,((-1.0)/modelPar_PE))));
7629 a_VDE = (0.1*modelVar_VDE_T);
7634 dxa = ((Vb2e1-Vfe)/a_VDE);
7637 Vje = (Vb2e1-(a_VDE*log((1.0+exp(dxa)))));
7641 Vje = (Vfe-(a_VDE*log((1.0+exp((-dxa))))));
7645 E0BE = pow((1.0-(Vje*modelVar_inv_VDE_T)),(1.0-modelPar_PE));
7646 Vte = (((modelVar_VDE_T/(1.0-modelPar_PE))*(1.0-E0BE))+(3.0*(Vb2e1-Vje)));
7647 Vjunc = (Vb2c1+Vxi0);
7648 bjc = ((2.0-modelVar_XP_T)/(1.0-modelVar_XP_T));
7649 Vfc = (modelVar_VDC_T*(1.0-pow(bjc,((-1.0)/modelPar_PC))));
7654 dxa = ((Vjunc-Vfc)/Vch);
7657 Vjc = (Vjunc-(Vch*log((1.0+exp(dxa)))));
7661 Vjc = (Vfc-(Vch*log((1.0+exp((-dxa))))));
7665 fI = pow(Icap_IHC,modelPar_MC);
7666 Vcv = (((modelVar_VDC_T/(1.0-modelPar_PC))*(1.0-(fI*pow((1.0-(Vjc/modelVar_VDC_T)),(1.0-modelPar_PC)))))+((fI*bjc)*(Vjunc-Vjc)));
7667 Vtc = (((1.0-modelVar_XP_T)*Vcv)+(modelVar_XP_T*Vb2c1));
7668 If0 = ((4.0*modelVar_IS_TM)/modelVar_IK_TM);
7670 n0 = (f1/(1.0+sqrt((1.0+f1))));
7671 f2 = (If0*eVb2c2star);
7672 nB = (f2/(1.0+sqrt((1.0+f2))));
7673 if ((modelPar_DEG==0.0))
7675 q0I = ((1.0+(Vte/modelVar_VER_T))+(Vtc/modelVar_VEF_T));
7679 termE = ((((Vte/modelVar_VER_T)+1.0)*modelVar_DEG_T)*modelVar_VtINV);
7680 termC = ((((-Vtc)/modelVar_VEF_T)*modelVar_DEG_T)*modelVar_VtINV);
7681 q0I = ((exp(termE)-exp(termC))/(exp((modelVar_DEG_T*modelVar_VtINV))-1.0));
7687 q1I = ((0.5*eps2)/(sqrt((x2+eps2))-q0I));
7691 q1I = (0.5*(sqrt((x2+eps2))+q0I));
7694 instanceVar_qBI = (q1I*(1.0+(0.5*(n0+nB))));
7695 instanceVar_Ir = (modelVar_IS_TM*eVb2c2star);
7696 instanceVar_If = (modelVar_IS_TM*eVb2e1);
7697 In = ((instanceVar_If-instanceVar_Ir)/instanceVar_qBI);
7698 Ibf0 = (modelVar_IS_TM/modelVar_BF_T);
7699 if ((modelPar_XREC==0.0))
7701 instanceVar_Ib1 = (((1.0-modelPar_XIBI)*Ibf0)*(eVb2e1-1.0));
7705 instanceVar_Ib1 = (((1.0-modelPar_XIBI)*Ibf0)*(((1.0-modelPar_XREC)*(eVb2e1-1.0))+((modelPar_XREC*((eVb2e1+eVb2c2star)-2.0))*(1.0+(Vtc/modelVar_VEF_T)))));
7707 instanceVar_Ib1_s = ((modelPar_XIBI*Ibf0)*(eVb1e1-1.0));
7708 if ((((Vb2e1*modelVar_VtINV)/modelPar_MLF)<400.0))
7710 tmpExp = exp(((Vb2e1*modelVar_VtINV)/modelPar_MLF));
7715 tmpExp = (expl*(1.0+(((Vb2e1*modelVar_VtINV)/modelPar_MLF)-400.0)));
7717 instanceVar_Ib2 = ((modelVar_IBF_TM*(tmpExp-1.0))+(modelPar_GMIN*Vb2e1));
7718 if ((((0.5*Vb1c4)*modelVar_VtINV)<400.0))
7720 tmpExp = exp(((0.5*Vb1c4)*modelVar_VtINV));
7725 tmpExp = (expl*(1.0+(((0.5*Vb1c4)*modelVar_VtINV)-400.0)));
7727 instanceVar_Ib3 = (((modelVar_IBR_TM*(eVb1c4-1.0))/(tmpExp+exp(((0.5*modelPar_VLR)*modelVar_VtINV))))+(modelPar_GMIN*Vb1c4));
7728 if ((((modelPar_IZEB>0.0)&&(modelPar_NZEB>0.0))&&(Vb2e1<0)))
7730 if (((modelVar_nZEB_T*(1-(modelVar_pow2_2mPE/(2.0*E0BE))))<400.0))
7732 eZEB = exp((modelVar_nZEB_T*(1-(modelVar_pow2_2mPE/(2.0*E0BE)))));
7737 eZEB = (expl*(1.0+((modelVar_nZEB_T*(1-(modelVar_pow2_2mPE/(2.0*E0BE))))-400.0)));
7739 x = (Vb2e1*modelVar_inv_VDE_T);
7740 dE0BE = ((pow((-x),((-2.0)-modelPar_PE))*((modelPar_PE*((1-(modelPar_PE*modelPar_PE))-((3*x)*(modelPar_PE-1))))-(((6*x)*x)*((modelPar_PE-1)+x))))*0.16666666666666666667);
7741 if (((((Vb2e1*modelVar_pow2_2mPE)*modelVar_nZEB_T)/(modelVar_VGZEB_T*dE0BE))<400.0))
7743 edZEB = exp((((Vb2e1*modelVar_pow2_2mPE)*modelVar_nZEB_T)/(modelVar_VGZEB_T*dE0BE)));
7748 edZEB = (expl*(1.0+((((Vb2e1*modelVar_pow2_2mPE)*modelVar_nZEB_T)/(modelVar_VGZEB_T*dE0BE))-400.0)));
7750 DZEB = ((-Vb2e1)-(((modelVar_VGZEB_T*dE0BE)*(1-edZEB))/(modelVar_pow2_2mPE*modelVar_nZEB_T)));
7751 instanceVar_Izteb = ((((((2.0*modelVar_IZEB_TM)*DZEB)*E0BE)*eZEB)*modelVar_inv_VDE_T)*modelVar_pow2_PEm2);
7756 instanceVar_Izteb = 0;
7759 g2 = (4.0*eVb1c4VDC);
7760 nBex = ((g1-If0)/(1.0+sqrt((1.0+g1))));
7761 pWex = (g2/(1.0+sqrt((1.0+g2))));
7762 instanceVar_Iex = ((modelVar_IK_TM*nBex)/(2.0*modelVar_BRI_T));
7763 if ((modelPar_EXSUB==1.0))
7765 instanceVar_Isub = (((2.0*modelVar_ISS_TM)*(eVb1c4-eVsc4))/(1.0+sqrt((1.0+((4.0*(modelVar_IS_TM/modelVar_IKS_TM))*eVb1c4)))));
7769 instanceVar_Isub = (((2.0*modelVar_ISS_TM)*(eVb1c4-1.0))/(1.0+sqrt((1.0+((4.0*(modelVar_IS_TM/modelVar_IKS_TM))*eVb1c4)))));
7771 if ((modelPar_ICSS<0.0))
7773 Isf = (modelVar_ISS_TM*(eVsc1-1.0));
7777 Isf = (modelVar_ICSS_TM*(eVsc1-1.0));
7779 instanceVar_XIex = 0.0;
7780 instanceVar_XIsub = 0.0;
7781 if (((modelPar_EXMOD==1)||(modelPar_EXMOD==2)))
7783 instanceVar_Iex = (instanceVar_Iex*modelVar_Xext1);
7784 instanceVar_Isub = (instanceVar_Isub*modelVar_Xext1);
7786 XnBex = ((Xg1-If0)/(1.0+sqrt((1.0+Xg1))));
7787 XIMex = ((((modelPar_XEXT*0.5)*modelVar_IK_TM)*XnBex)/modelVar_BRI_T);
7788 if ((modelPar_EXSUB==1.0))
7790 XIMsub = ((((modelPar_XEXT*2.0)*modelVar_ISS_TM)*(eVbc3-eVsc3))/(1.0+sqrt((1.0+(((4.0*modelVar_IS_T)/modelVar_IKS_T)*eVbc3)))));
7794 XIMsub = ((((modelPar_XEXT*2.0)*modelVar_ISS_TM)*(eVbc3-1.0))/(1.0+sqrt((1.0+(((4.0*modelVar_IS_T)/modelVar_IKS_T)*eVbc3)))));
7796 if ((modelPar_EXMOD==1))
7798 Vex_bias = ((modelPar_XEXT*((modelVar_IS_TM/modelVar_BRI_T)+modelVar_ISS_TM))*modelVar_RCCxx_TM);
7799 Vex = (modelVar_Vt*(2.0-log((Vex_bias*modelVar_VtINV))));
7805 VBex = ((0.5*eps2)/(sqrt((x2+eps2))-vdif));
7809 VBex = (0.5*(sqrt((x2+eps2))+vdif));
7812 Fex = (VBex/((Vex_bias+((XIMex+XIMsub)*modelVar_RCCxx_TM))+VBex));
7821 instanceVar_XIex = (Fex*XIMex);
7822 instanceVar_XIsub = (Fex*XIMsub);
7829 q0Q = ((1.0+(Vte/modelVar_VER_T))+(Vtc/modelVar_VEF_T));
7834 q1Q = ((0.5*eps2)/(sqrt((x2+eps2))-q0Q));
7838 q1Q = (0.5*(sqrt((x2+eps2))+q0Q));
7841 qBQ = (q1Q*(1.0+(0.5*(n0+nB))));
7842 instanceVar_Rb2 = ((3.0*modelVar_RBV_TM)/qBQ);
7843 Ib1b2 = ((((2.0*modelVar_Vt)*(instanceVar_eVb1b2-1.0))+Vb1b2)/instanceVar_Rb2);
7845 instanceVar_Gem = 0.0;
7846 if (((Ic1c2>0.0)&&(Vb2c1<modelVar_VDC_T)))
7848 dEdx0 = ((2.0*modelPar_VAVL)/(modelPar_WAVL*modelPar_WAVL));
7849 sqr_arg = ((modelVar_VDC_T-Vb2c1)/Icap_IHC);
7850 xd = sqrt(((2.0*sqr_arg)/dEdx0));
7851 if ((modelPar_EXAVL==0.0))
7853 Weff = modelPar_WAVL;
7857 xi_w1 = (1.0-(0.5*xi_w));
7858 Weff = ((modelPar_WAVL*xi_w1)*xi_w1);
7860 Wd = ((xd*Weff)/sqrt(((xd*xd)+(Weff*Weff))));
7861 Eav = ((modelVar_VDC_T-Vb2c1)/Wd);
7862 E0 = (Eav+(((0.5*Wd)*dEdx0)*Icap_IHC));
7863 if ((modelPar_EXAVL==0))
7869 SHw = (1.0+((2.0*modelPar_SFH)*(1.0+(2.0*xi_w))));
7870 Efi = ((1.0+modelPar_SFH)/(1.0+(2.0*modelPar_SFH)));
7871 Ew = (Eav-(((0.5*Wd)*dEdx0)*(Efi-(Ic1c2/(modelVar_IHC_M*SHw)))));
7872 sqr_arg = (((Ew-E0)*(Ew-E0))+((((0.1*Eav)*Eav)*Icap)/modelVar_IHC_M));
7873 Em = (0.5*((Ew+E0)+sqrt(sqr_arg)));
7875 EmEav_Em = ((Em-Eav)/Em);
7876 if ((fabs(EmEav_Em)>1.0e-7))
7878 lambda = ((0.5*Wd)/EmEav_Em);
7879 instanceVar_Gem = ((((modelVar_An/modelVar_BnT)*Em)*lambda)*(exp(((-modelVar_BnT)/Em))-exp((((-modelVar_BnT)/Em)*(1.0+(Weff/lambda))))));
7883 instanceVar_Gem = ((modelVar_An*Weff)*exp(((-modelVar_BnT)/Em)));
7885 Gmax = (((modelVar_Vt/(Ic1c2*(modelVar_RBC_TM+instanceVar_Rb2)))+(instanceVar_qBI/modelVar_BF_T))+(modelVar_RE_TM/(modelVar_RBC_TM+instanceVar_Rb2)));
7886 Iavl = ((Ic1c2*instanceVar_Gem)/((instanceVar_Gem+(instanceVar_Gem/Gmax))+1.0));
7888 if ((eVb2c2star>0.0))
7890 Vb2c2star = (modelVar_Vt*log(eVb2c2star));
7896 Qte = (((1.0-modelPar_XCJE)*modelVar_CJE_TM)*Vte);
7901 dxa = ((Vb1e1-Vfe)/a_VDE);
7904 Vje_s = (Vb1e1-(a_VDE*log((1.0+exp(dxa)))));
7908 Vje_s = (Vfe-(a_VDE*log((1.0+exp((-dxa))))));
7912 Qte_s = ((modelPar_XCJE*modelVar_CJE_TM)*(((modelVar_VDE_T/(1.0-modelPar_PE))*(1.0-pow((1.0-(Vje_s*modelVar_inv_VDE_T)),(1.0-modelPar_PE))))+(3.0*(Vb1e1-Vje_s))));
7913 Qtc = ((modelPar_XCJC*modelVar_CJC_TM)*Vtc);
7914 Qb0 = (modelVar_TAUB_T*modelVar_IK_TM);
7915 Qbe_qs = (((0.5*Qb0)*n0)*q1Q);
7916 Qbc_qs = (((0.5*Qb0)*nB)*q1Q);
7917 a_VDC = (0.1*modelVar_VDC_T);
7922 dxa = ((Vb1c4-Vfc)/a_VDC);
7925 Vjcex = (Vb1c4-(a_VDC*log((1.0+exp(dxa)))));
7929 Vjcex = (Vfc-(a_VDC*log((1.0+exp((-dxa))))));
7933 Vtexv = (((modelVar_VDC_T/(1.0-modelPar_PC))*(1.0-pow((1.0-(Vjcex/modelVar_VDC_T)),(1.0-modelPar_PC))))+(bjc*(Vb1c4-Vjcex)));
7934 Qtex = (((modelVar_CJC_TM*(((1.0-modelVar_XP_T)*Vtexv)+(modelVar_XP_T*Vb1c4)))*(1.0-modelPar_XCJC))*(1.0-modelPar_XEXT));
7939 dxa = ((Vbc3-Vfc)/a_VDC);
7942 XVjcex = (Vbc3-(a_VDC*log((1.0+exp(dxa)))));
7946 XVjcex = (Vfc-(a_VDC*log((1.0+exp((-dxa))))));
7950 XVtexv = (((modelVar_VDC_T/(1.0-modelPar_PC))*(1.0-pow((1.0-(XVjcex/modelVar_VDC_T)),(1.0-modelPar_PC))))+(bjc*(Vbc3-XVjcex)));
7951 XQtex = (((modelVar_CJC_TM*(((1.0-modelVar_XP_T)*XVtexv)+(modelVar_XP_T*Vbc3)))*(1.0-modelPar_XCJC))*modelPar_XEXT);
7952 a_VDS = (0.1*modelVar_VDS_T);
7953 Vfs = (modelVar_VDS_T*(1.0-pow(2.0,((-1.0)/modelPar_PS))));
7958 dxa = ((Vsc1-Vfs)/a_VDS);
7961 Vjs = (Vsc1-(a_VDS*log((1.0+exp(dxa)))));
7965 Vjs = (Vfs-(a_VDS*log((1.0+exp((-dxa))))));
7969 Qts = (modelVar_CJS_TM*(((modelVar_VDS_T/(1.0-modelPar_PS))*(1.0-pow((1.0-(Vjs/modelVar_VDS_T)),(1.0-modelPar_PS))))+(2.0*(Vsc1-Vjs))));
7970 Qe0 = ((modelVar_TAUE_T*modelVar_IK_TM)*pow((modelVar_IS_TM/modelVar_IK_TM),(1.0/modelPar_MTAU)));
7971 if (((Vb2e1/(modelPar_MTAU*modelVar_Vt))<400.0))
7973 tmpExp = exp((Vb2e1/(modelPar_MTAU*modelVar_Vt)));
7978 tmpExp = (expl*(1.0+((Vb2e1/(modelPar_MTAU*modelVar_Vt))-400.0)));
7980 Qe = (Qe0*(tmpExp-1.0));
7981 Qepi0 = (((4.0*modelVar_TEPI_T)*modelVar_Vt)/modelVar_RCV_TM);
7982 Qepi = (((0.5*Qepi0)*xi_w)*((p0star+pW)+2.0));
7983 Qex = (((modelVar_TAUR_T*0.5)*((Qb0*nBex)+(Qepi0*pWex)))/(modelVar_TAUB_T+modelVar_TEPI_T));
7985 if ((modelPar_EXMOD==1))
7987 Qex = (Qex*(1.0-modelPar_XEXT));
7988 Xg2 = (4.0*eVbc3VDC);
7989 XpWex = (Xg2/(1.0+sqrt((1.0+Xg2))));
7990 XQex = (((((0.5*Fex)*modelPar_XEXT)*modelVar_TAUR_T)*((Qb0*XnBex)+(Qepi0*XpWex)))/(modelVar_TAUB_T+modelVar_TEPI_T));
7993 if ((modelPar_EXPHI==1))
7995 dVteVje = (pow((1.0-(Vje*modelVar_inv_VDE_T)),(-modelPar_PE))-3.0);
7996 Vb2e1Vfe = ((Vb2e1-Vfe)/a_VDE);
7999 dVjeVb2e1 = (1.0/(1.0+exp(Vb2e1Vfe)));
8003 dVjeVb2e1 = (exp((-Vb2e1Vfe))/(1.0+exp((-Vb2e1Vfe))));
8005 dVteVb2e1 = ((dVteVje*dVjeVb2e1)+3.0);
8006 dQteVb2e1 = (((1.0-modelPar_XCJE)*modelVar_CJE_TM)*dVteVb2e1);
8007 dn0Vb2e1 = (((If0*eVb2e1)*modelVar_VtINV)*(0.5/sqrt((1.0+f1))));
8008 dQbeVb2e1 = (((0.5*Qb0)*q1Q)*dn0Vb2e1);
8009 dQeVb2e1 = ((Qe+Qe0)/(modelPar_MTAU*modelVar_Vt));
8010 Qb1b2 = ((0.2*Vb1b2)*((dQteVb2e1+dQbeVb2e1)+dQeVb2e1));
8011 Qbc = ((Qbe_qs*0.33333333333333333333)+Qbc_qs);
8012 Qbe = ((2.0*Qbe_qs)*0.33333333333333333333);
8020 staticContributions[admsNodeID_c1] += (modelPar_TYPE*Ic1c2);
8021 staticContributions[admsNodeID_c2] -= (modelPar_TYPE*Ic1c2);
8023 staticContributions[admsNodeID_c2] += (modelPar_TYPE*In);
8024 staticContributions[admsNodeID_e1] -= (modelPar_TYPE*In);
8026 staticContributions[admsNodeID_b1] += (modelPar_TYPE*instanceVar_Ib1_s);
8027 staticContributions[admsNodeID_e1] -= (modelPar_TYPE*instanceVar_Ib1_s);
8029 staticContributions[admsNodeID_b2] += (modelPar_TYPE*((instanceVar_Ib1+instanceVar_Ib2)-instanceVar_Izteb));
8030 staticContributions[admsNodeID_e1] -= (modelPar_TYPE*((instanceVar_Ib1+instanceVar_Ib2)-instanceVar_Izteb));
8032 staticContributions[admsNodeID_b1] += (modelPar_TYPE*instanceVar_Isub);
8033 staticContributions[admsNodeID_s] -= (modelPar_TYPE*instanceVar_Isub);
8035 staticContributions[admsNodeID_b] += (modelPar_TYPE*instanceVar_XIsub);
8036 staticContributions[admsNodeID_s] -= (modelPar_TYPE*instanceVar_XIsub);
8038 staticContributions[admsNodeID_s] += (modelPar_TYPE*Isf);
8039 staticContributions[admsNodeID_c1] -= (modelPar_TYPE*Isf);
8041 staticContributions[admsNodeID_b1] += (modelPar_TYPE*Ib1b2);
8042 staticContributions[admsNodeID_b2] -= (modelPar_TYPE*Ib1b2);
8044 staticContributions[admsNodeID_b2] += (modelPar_TYPE*((-1.0)*Iavl));
8045 staticContributions[admsNodeID_c2] -= (modelPar_TYPE*((-1.0)*Iavl));
8047 staticContributions[admsNodeID_e] += ((modelPar_TYPE*Vee1)/modelVar_RE_TM);
8048 staticContributions[admsNodeID_e1] -= ((modelPar_TYPE*Vee1)/modelVar_RE_TM);
8050 staticContributions[admsNodeID_b] += ((modelPar_TYPE*Vbb1)/modelVar_RBC_TM);
8051 staticContributions[admsNodeID_b1] -= ((modelPar_TYPE*Vbb1)/modelVar_RBC_TM);
8053 staticContributions[admsNodeID_noi] += (probeVars[admsProbeID_V_noi_e1]);
8054 staticContributions[admsNodeID_e1] -= (probeVars[admsProbeID_V_noi_e1]);
8055 cor_exp_1 = (sqrt((1.0+(2.0*instanceVar_Gem)))*(probeVars[admsProbeID_V_noi_e1]));
8057 staticContributions[admsNodeID_b2] += cor_exp_1;
8058 staticContributions[admsNodeID_e1] -= cor_exp_1;
8059 cor_exp_2 = (((2.0+(2.0*instanceVar_Gem))/sqrt((1.0+(2.0*instanceVar_Gem))))*(probeVars[admsProbeID_V_noi_e1]));
8061 staticContributions[admsNodeID_e1] += cor_exp_2;
8062 staticContributions[admsNodeID_c2] -= cor_exp_2;
8064 dynamicContributions[admsNodeID_b2] += ((modelPar_TYPE*((Qte+Qbe)+Qe)));
8065 dynamicContributions[admsNodeID_e1] -= ((modelPar_TYPE*((Qte+Qbe)+Qe)));
8067 dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*Qte_s));
8068 dynamicContributions[admsNodeID_e1] -= ((modelPar_TYPE*Qte_s));
8070 dynamicContributions[admsNodeID_b2] += ((modelPar_TYPE*((Qtc+Qbc)+Qepi)));
8071 dynamicContributions[admsNodeID_c2] -= ((modelPar_TYPE*((Qtc+Qbc)+Qepi)));
8073 dynamicContributions[admsNodeID_s] += ((modelPar_TYPE*Qts));
8074 dynamicContributions[admsNodeID_c1] -= ((modelPar_TYPE*Qts));
8076 dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*Qb1b2));
8077 dynamicContributions[admsNodeID_b2] -= ((modelPar_TYPE*Qb1b2));
8079 dynamicContributions[admsNodeID_b] += (((modelPar_TYPE*modelVar_CBEO_M)*Vbe));
8080 dynamicContributions[admsNodeID_e] -= (((modelPar_TYPE*modelVar_CBEO_M)*Vbe));
8082 dynamicContributions[admsNodeID_b] += (((modelPar_TYPE*modelVar_CBCO_M)*Vbc));
8083 dynamicContributions[admsNodeID_c] -= (((modelPar_TYPE*modelVar_CBCO_M)*Vbc));
8085 if ((modelPar_RCBLX>0.0))
8088 staticContributions[admsNodeID_b] += (modelPar_TYPE*instanceVar_XIex);
8089 staticContributions[admsNodeID_c3] -= (modelPar_TYPE*instanceVar_XIex);
8091 staticContributions[admsNodeID_c] += ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8092 staticContributions[admsNodeID_c3] -= ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8094 dynamicContributions[admsNodeID_b] += ((modelPar_TYPE*(XQtex+XQex)));
8095 dynamicContributions[admsNodeID_c3] -= ((modelPar_TYPE*(XQtex+XQex)));
8096 if ((modelPar_RCBLI>0.0))
8099 staticContributions[admsNodeID_c4] += ((modelPar_TYPE*Vc4c1)*modelVar_GCCin_TM);
8100 staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vc4c1)*modelVar_GCCin_TM);
8102 staticContributions[admsNodeID_b1] += (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8103 staticContributions[admsNodeID_c4] -= (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8105 staticContributions[admsNodeID_c3] += ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8106 staticContributions[admsNodeID_c4] -= ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8108 dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*(Qtex+Qex)));
8109 dynamicContributions[admsNodeID_c4] -= ((modelPar_TYPE*(Qtex+Qex)));
8116 staticContributions[admsNodeID_b1] += (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8117 staticContributions[admsNodeID_c1] -= (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8119 dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*(Qtex+Qex)));
8120 dynamicContributions[admsNodeID_c1] -= ((modelPar_TYPE*(Qtex+Qex)));
8122 staticContributions[admsNodeID_c3] += ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8123 staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8130 if ((modelPar_RCBLI>0.0))
8133 staticContributions[admsNodeID_b] += (modelPar_TYPE*instanceVar_XIex);
8134 staticContributions[admsNodeID_c4] -= (modelPar_TYPE*instanceVar_XIex);
8136 staticContributions[admsNodeID_c] += ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8137 staticContributions[admsNodeID_c4] -= ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8139 staticContributions[admsNodeID_c4] += ((modelPar_TYPE*Vc4c1)*modelVar_GCCin_TM);
8140 staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vc4c1)*modelVar_GCCin_TM);
8142 staticContributions[admsNodeID_b1] += (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8143 staticContributions[admsNodeID_c4] -= (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8145 dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*(Qtex+Qex)));
8146 dynamicContributions[admsNodeID_c4] -= ((modelPar_TYPE*(Qtex+Qex)));
8148 dynamicContributions[admsNodeID_b] += ((modelPar_TYPE*(XQtex+XQex)));
8149 dynamicContributions[admsNodeID_c4] -= ((modelPar_TYPE*(XQtex+XQex)));
8154 staticContributions[admsNodeID_b] += (modelPar_TYPE*instanceVar_XIex);
8155 staticContributions[admsNodeID_c1] -= (modelPar_TYPE*instanceVar_XIex);
8157 staticContributions[admsNodeID_c] += ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8158 staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vcc3)*modelVar_GCCxx_TM);
8162 staticContributions[admsNodeID_b1] += (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8163 staticContributions[admsNodeID_c1] -= (modelPar_TYPE*(instanceVar_Ib3+instanceVar_Iex));
8165 dynamicContributions[admsNodeID_b1] += ((modelPar_TYPE*(Qtex+Qex)));
8166 dynamicContributions[admsNodeID_c1] -= ((modelPar_TYPE*(Qtex+Qex)));
8168 dynamicContributions[admsNodeID_b] += ((modelPar_TYPE*(XQtex+XQex)));
8169 dynamicContributions[admsNodeID_c1] -= ((modelPar_TYPE*(XQtex+XQex)));
8171 staticContributions[admsNodeID_c3] += ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8172 staticContributions[admsNodeID_c1] -= ((modelPar_TYPE*Vc3c4)*modelVar_GCCex_TM);
8203 void InstanceSensitivity::operator()
8205 const ParameterBase &entity,
8206 const std::string &name,
8207 std::vector<double> & dfdp,
8208 std::vector<double> & dqdp,
8209 std::vector<double> & dbdp,
8210 std::vector<int> & Findices,
8211 std::vector<int> & Qindices,
8212 std::vector<int> & Bindices
8215 const ParameterBase * e1 = &entity;
8216 const Instance & in = *(
dynamic_cast<const Instance *
> (e1));
8217 const Model & mod =in.model_;
8221 Findices.resize(12+0);
8222 Qindices.resize(12+0);
8224 std::vector <double> probeVars(15);
8225 std::vector <AdmsSensFadType> staticContributions(12+0);
8226 std::vector <AdmsSensFadType> dynamicContributions(12+0);
8230 for (
int i=0; i < 12+0 ; ++i)
8232 staticContributions[i]=0;
8233 dynamicContributions[i]=0;
8239 bool modelPar_given_TREF=mod.given(
"TREF");
8241 bool modelPar_given_DTA=mod.given(
"DTA");
8243 bool modelPar_given_IS=mod.given(
"IS");
8245 bool modelPar_given_IK=mod.given(
"IK");
8247 bool modelPar_given_VER=mod.given(
"VER");
8249 bool modelPar_given_VEF=mod.given(
"VEF");
8251 bool modelPar_given_BF=mod.given(
"BF");
8253 bool modelPar_given_IBF=mod.given(
"IBF");
8255 bool modelPar_given_MLF=mod.given(
"MLF");
8257 bool modelPar_given_XIBI=mod.given(
"XIBI");
8259 bool modelPar_given_IZEB=mod.given(
"IZEB");
8261 bool modelPar_given_NZEB=mod.given(
"NZEB");
8263 bool modelPar_given_BRI=mod.given(
"BRI");
8265 bool modelPar_given_IBR=mod.given(
"IBR");
8267 bool modelPar_given_VLR=mod.given(
"VLR");
8269 bool modelPar_given_XEXT=mod.given(
"XEXT");
8271 bool modelPar_given_WAVL=mod.given(
"WAVL");
8273 bool modelPar_given_VAVL=mod.given(
"VAVL");
8275 bool modelPar_given_SFH=mod.given(
"SFH");
8277 bool modelPar_given_RE=mod.given(
"RE");
8279 bool modelPar_given_RBC=mod.given(
"RBC");
8281 bool modelPar_given_RBV=mod.given(
"RBV");
8283 bool modelPar_given_RCC=mod.given(
"RCC");
8285 bool modelPar_given_RCV=mod.given(
"RCV");
8287 bool modelPar_given_SCRCV=mod.given(
"SCRCV");
8289 bool modelPar_given_IHC=mod.given(
"IHC");
8291 bool modelPar_given_AXI=mod.given(
"AXI");
8293 bool modelPar_given_CJE=mod.given(
"CJE");
8295 bool modelPar_given_VDE=mod.given(
"VDE");
8297 bool modelPar_given_PE=mod.given(
"PE");
8299 bool modelPar_given_XCJE=mod.given(
"XCJE");
8301 bool modelPar_given_CBEO=mod.given(
"CBEO");
8303 bool modelPar_given_CJC=mod.given(
"CJC");
8305 bool modelPar_given_VDC=mod.given(
"VDC");
8307 bool modelPar_given_PC=mod.given(
"PC");
8309 bool modelPar_given_XP=mod.given(
"XP");
8311 bool modelPar_given_MC=mod.given(
"MC");
8313 bool modelPar_given_XCJC=mod.given(
"XCJC");
8315 bool modelPar_given_RCBLX=mod.given(
"RCBLX");
8317 bool modelPar_given_RCBLI=mod.given(
"RCBLI");
8319 bool modelPar_given_CBCO=mod.given(
"CBCO");
8321 bool modelPar_given_MTAU=mod.given(
"MTAU");
8323 bool modelPar_given_TAUE=mod.given(
"TAUE");
8325 bool modelPar_given_TAUB=mod.given(
"TAUB");
8327 bool modelPar_given_TEPI=mod.given(
"TEPI");
8329 bool modelPar_given_TAUR=mod.given(
"TAUR");
8331 bool modelPar_given_DEG=mod.given(
"DEG");
8333 bool modelPar_given_XREC=mod.given(
"XREC");
8335 bool modelPar_given_AQBO=mod.given(
"AQBO");
8337 bool modelPar_given_AE=mod.given(
"AE");
8339 bool modelPar_given_AB=mod.given(
"AB");
8341 bool modelPar_given_AEPI=mod.given(
"AEPI");
8343 bool modelPar_given_AEX=mod.given(
"AEX");
8345 bool modelPar_given_AC=mod.given(
"AC");
8347 bool modelPar_given_ACBL=mod.given(
"ACBL");
8349 bool modelPar_given_DVGBF=mod.given(
"DVGBF");
8351 bool modelPar_given_DVGBR=mod.given(
"DVGBR");
8353 bool modelPar_given_VGB=mod.given(
"VGB");
8355 bool modelPar_given_VGC=mod.given(
"VGC");
8357 bool modelPar_given_VGJ=mod.given(
"VGJ");
8359 bool modelPar_given_VGZEB=mod.given(
"VGZEB");
8361 bool modelPar_given_AVGEB=mod.given(
"AVGEB");
8363 bool modelPar_given_TVGEB=mod.given(
"TVGEB");
8365 bool modelPar_given_DVGTE=mod.given(
"DVGTE");
8367 bool modelPar_given_DAIS=mod.given(
"DAIS");
8369 bool modelPar_given_AF=mod.given(
"AF");
8371 bool modelPar_given_KF=mod.given(
"KF");
8373 bool modelPar_given_KFN=mod.given(
"KFN");
8375 bool modelPar_given_ISS=mod.given(
"ISS");
8377 bool modelPar_given_ICSS=mod.given(
"ICSS");
8379 bool modelPar_given_IKS=mod.given(
"IKS");
8381 bool modelPar_given_CJS=mod.given(
"CJS");
8383 bool modelPar_given_VDS=mod.given(
"VDS");
8385 bool modelPar_given_PS=mod.given(
"PS");
8387 bool modelPar_given_VGS=mod.given(
"VGS");
8389 bool modelPar_given_AS=mod.given(
"AS");
8391 bool modelPar_given_ASUB=mod.given(
"ASUB");
8393 bool modelPar_given_MULT=mod.given(
"MULT");
8395 bool modelPar_given_GMIN=mod.given(
"GMIN");
8402 int modelPar_LEVEL=mod.LEVEL;
8403 bool modelPar_given_LEVEL=mod.given(
"LEVEL");
8404 int modelPar_EXMOD=mod.EXMOD;
8405 bool modelPar_given_EXMOD=mod.given(
"EXMOD");
8406 int modelPar_EXPHI=mod.EXPHI;
8407 bool modelPar_given_EXPHI=mod.given(
"EXPHI");
8408 int modelPar_EXAVL=mod.EXAVL;
8409 bool modelPar_given_EXAVL=mod.given(
"EXAVL");
8410 int modelPar_EXSUB=mod.EXSUB;
8411 bool modelPar_given_EXSUB=mod.given(
"EXSUB");
8412 int modelPar_KAVL=mod.KAVL;
8413 bool modelPar_given_KAVL=mod.given(
"KAVL");
8414 int modelPar_TYPE=mod.TYPE;
8415 bool modelPar_given_TYPE=mod.given(
"TYPE");
8423 unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> inParamMap;
8427 bool instancePar_given_MULT=in.given(
"MULT");
8428 inParamMap[
"MULT"] = &instancePar_MULT;
8442 inParamMap[name]->diff(0,1);
8525 Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
8529 probeVars[in.admsProbeID_V_noi_e1] = (*solVectorPtr)[in.li_noi] - (*solVectorPtr)[in.li_e1];
8530 probeVars[in.admsProbeID_V_c3_c1] = (*solVectorPtr)[in.li_c3] - (*solVectorPtr)[in.li_c1];
8531 probeVars[in.admsProbeID_V_c3_c4] = (*solVectorPtr)[in.li_c3] - (*solVectorPtr)[in.li_c4];
8532 probeVars[in.admsProbeID_V_c4_c1] = (*solVectorPtr)[in.li_c4] - (*solVectorPtr)[in.li_c1];
8533 probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
8534 probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
8535 probeVars[in.admsProbeID_V_b_b1] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_b1];
8536 probeVars[in.admsProbeID_V_e_e1] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_e1];
8537 probeVars[in.admsProbeID_V_c1_c2] = (*solVectorPtr)[in.li_c1] - (*solVectorPtr)[in.li_c2];
8538 probeVars[in.admsProbeID_V_s_c1] = (*solVectorPtr)[in.li_s] - (*solVectorPtr)[in.li_c1];
8539 probeVars[in.admsProbeID_V_b1_b2] = (*solVectorPtr)[in.li_b1] - (*solVectorPtr)[in.li_b2];
8540 probeVars[in.admsProbeID_V_b1_e1] = (*solVectorPtr)[in.li_b1] - (*solVectorPtr)[in.li_e1];
8541 probeVars[in.admsProbeID_V_b2_e1] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_e1];
8542 probeVars[in.admsProbeID_V_b2_c2] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_c2];
8543 probeVars[in.admsProbeID_V_b2_c1] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_c1];
8546 probeVars[in.admsProbeID_V_b1_b2] *= modelPar_TYPE;
8547 probeVars[in.admsProbeID_V_b1_e1] *= modelPar_TYPE;
8548 probeVars[in.admsProbeID_V_b2_c2] *= modelPar_TYPE;
8549 probeVars[in.admsProbeID_V_b2_c1] *= modelPar_TYPE;
8556 evaluateInitialModel(
8560 modelPar_given_TREF,
8578 modelPar_given_XIBI,
8580 modelPar_given_IZEB,
8582 modelPar_given_NZEB,
8590 modelPar_given_XEXT,
8592 modelPar_given_WAVL,
8594 modelPar_given_VAVL,
8608 modelPar_given_SCRCV,
8620 modelPar_given_XCJE,
8622 modelPar_given_CBEO,
8634 modelPar_given_XCJC,
8636 modelPar_given_RCBLX,
8638 modelPar_given_RCBLI,
8640 modelPar_given_CBCO,
8642 modelPar_given_MTAU,
8644 modelPar_given_TAUE,
8646 modelPar_given_TAUB,
8648 modelPar_given_TEPI,
8650 modelPar_given_TAUR,
8654 modelPar_given_XREC,
8656 modelPar_given_AQBO,
8662 modelPar_given_AEPI,
8668 modelPar_given_ACBL,
8670 modelPar_given_DVGBF,
8672 modelPar_given_DVGBR,
8680 modelPar_given_VGZEB,
8682 modelPar_given_AVGEB,
8684 modelPar_given_TVGEB,
8686 modelPar_given_DVGTE,
8688 modelPar_given_DAIS,
8698 modelPar_given_ICSS,
8712 modelPar_given_ASUB,
8714 modelPar_given_MULT,
8716 modelPar_given_GMIN,
8719 modelPar_given_LEVEL,
8721 modelPar_given_EXMOD,
8723 modelPar_given_EXPHI,
8725 modelPar_given_EXAVL,
8727 modelPar_given_EXSUB,
8729 modelPar_given_KAVL,
8789 evaluateModelEquations(
8792 in.admsProbeID_V_noi_e1,
8793 in.admsProbeID_V_c3_c1,
8794 in.admsProbeID_V_c3_c4,
8795 in.admsProbeID_V_c4_c1,
8796 in.admsProbeID_V_b_c,
8797 in.admsProbeID_V_b_e,
8798 in.admsProbeID_V_b_b1,
8799 in.admsProbeID_V_e_e1,
8800 in.admsProbeID_V_c1_c2,
8801 in.admsProbeID_V_s_c1,
8802 in.admsProbeID_V_b1_b2,
8803 in.admsProbeID_V_b1_e1,
8804 in.admsProbeID_V_b2_e1,
8805 in.admsProbeID_V_b2_c2,
8806 in.admsProbeID_V_b2_c1,
8824 instancePar_given_MULT,
8845 modelPar_given_TREF,
8863 modelPar_given_XIBI,
8865 modelPar_given_IZEB,
8867 modelPar_given_NZEB,
8875 modelPar_given_XEXT,
8877 modelPar_given_WAVL,
8879 modelPar_given_VAVL,
8893 modelPar_given_SCRCV,
8905 modelPar_given_XCJE,
8907 modelPar_given_CBEO,
8919 modelPar_given_XCJC,
8921 modelPar_given_RCBLX,
8923 modelPar_given_RCBLI,
8925 modelPar_given_CBCO,
8927 modelPar_given_MTAU,
8929 modelPar_given_TAUE,
8931 modelPar_given_TAUB,
8933 modelPar_given_TEPI,
8935 modelPar_given_TAUR,
8939 modelPar_given_XREC,
8941 modelPar_given_AQBO,
8947 modelPar_given_AEPI,
8953 modelPar_given_ACBL,
8955 modelPar_given_DVGBF,
8957 modelPar_given_DVGBR,
8965 modelPar_given_VGZEB,
8967 modelPar_given_AVGEB,
8969 modelPar_given_TVGEB,
8971 modelPar_given_DVGTE,
8973 modelPar_given_DAIS,
8983 modelPar_given_ICSS,
8997 modelPar_given_ASUB,
8999 modelPar_given_MULT,
9001 modelPar_given_GMIN,
9004 modelPar_given_LEVEL,
9006 modelPar_given_EXMOD,
9008 modelPar_given_EXPHI,
9010 modelPar_given_EXAVL,
9012 modelPar_given_EXSUB,
9014 modelPar_given_KAVL,
9072 in.getDeviceOptions().gmin,
9073 staticContributions,
9074 dynamicContributions,
9080 dfdp[in.admsNodeID_c] += staticContributions[in.admsNodeID_c].dx(0);
9081 dqdp[in.admsNodeID_c] += dynamicContributions[in.admsNodeID_c].dx(0);
9082 Findices[in.admsNodeID_c] = in.li_c;
9083 Qindices[in.admsNodeID_c] = in.li_c;
9084 dfdp[in.admsNodeID_b] += staticContributions[in.admsNodeID_b].dx(0);
9085 dqdp[in.admsNodeID_b] += dynamicContributions[in.admsNodeID_b].dx(0);
9086 Findices[in.admsNodeID_b] = in.li_b;
9087 Qindices[in.admsNodeID_b] = in.li_b;
9088 dfdp[in.admsNodeID_e] += staticContributions[in.admsNodeID_e].dx(0);
9089 dqdp[in.admsNodeID_e] += dynamicContributions[in.admsNodeID_e].dx(0);
9090 Findices[in.admsNodeID_e] = in.li_e;
9091 Qindices[in.admsNodeID_e] = in.li_e;
9092 dfdp[in.admsNodeID_s] += staticContributions[in.admsNodeID_s].dx(0);
9093 dqdp[in.admsNodeID_s] += dynamicContributions[in.admsNodeID_s].dx(0);
9094 Findices[in.admsNodeID_s] = in.li_s;
9095 Qindices[in.admsNodeID_s] = in.li_s;
9096 dfdp[in.admsNodeID_e1] += staticContributions[in.admsNodeID_e1].dx(0);
9097 dqdp[in.admsNodeID_e1] += dynamicContributions[in.admsNodeID_e1].dx(0);
9098 Findices[in.admsNodeID_e1] = in.li_e1;
9099 Qindices[in.admsNodeID_e1] = in.li_e1;
9100 dfdp[in.admsNodeID_b1] += staticContributions[in.admsNodeID_b1].dx(0);
9101 dqdp[in.admsNodeID_b1] += dynamicContributions[in.admsNodeID_b1].dx(0);
9102 Findices[in.admsNodeID_b1] = in.li_b1;
9103 Qindices[in.admsNodeID_b1] = in.li_b1;
9104 dfdp[in.admsNodeID_b2] += staticContributions[in.admsNodeID_b2].dx(0);
9105 dqdp[in.admsNodeID_b2] += dynamicContributions[in.admsNodeID_b2].dx(0);
9106 Findices[in.admsNodeID_b2] = in.li_b2;
9107 Qindices[in.admsNodeID_b2] = in.li_b2;
9108 dfdp[in.admsNodeID_c3] += staticContributions[in.admsNodeID_c3].dx(0);
9109 dqdp[in.admsNodeID_c3] += dynamicContributions[in.admsNodeID_c3].dx(0);
9110 Findices[in.admsNodeID_c3] = in.li_c3;
9111 Qindices[in.admsNodeID_c3] = in.li_c3;
9112 dfdp[in.admsNodeID_c4] += staticContributions[in.admsNodeID_c4].dx(0);
9113 dqdp[in.admsNodeID_c4] += dynamicContributions[in.admsNodeID_c4].dx(0);
9114 Findices[in.admsNodeID_c4] = in.li_c4;
9115 Qindices[in.admsNodeID_c4] = in.li_c4;
9116 dfdp[in.admsNodeID_c2] += staticContributions[in.admsNodeID_c2].dx(0);
9117 dqdp[in.admsNodeID_c2] += dynamicContributions[in.admsNodeID_c2].dx(0);
9118 Findices[in.admsNodeID_c2] = in.li_c2;
9119 Qindices[in.admsNodeID_c2] = in.li_c2;
9120 dfdp[in.admsNodeID_c1] += staticContributions[in.admsNodeID_c1].dx(0);
9121 dqdp[in.admsNodeID_c1] += dynamicContributions[in.admsNodeID_c1].dx(0);
9122 Findices[in.admsNodeID_c1] = in.li_c1;
9123 Qindices[in.admsNodeID_c1] = in.li_c1;
9124 dfdp[in.admsNodeID_noi] += staticContributions[in.admsNodeID_noi].dx(0);
9125 dqdp[in.admsNodeID_noi] += dynamicContributions[in.admsNodeID_noi].dx(0);
9126 Findices[in.admsNodeID_noi] = in.li_noi;
9127 Qindices[in.admsNodeID_noi] = in.li_noi;
9154 void ModelSensitivity::operator()
9156 const ParameterBase &entity,
9157 const std::string &name,
9158 std::vector<double> & dfdp,
9159 std::vector<double> & dqdp,
9160 std::vector<double> & dbdp,
9161 std::vector<int> & Findices,
9162 std::vector<int> & Qindices,
9163 std::vector<int> & Bindices
9166 const ParameterBase * e1 = &entity;
9167 const Model & mod = *(
dynamic_cast<const Model *
> (e1));
9168 int sizeInstance = mod.instanceContainer.size();
9170 dfdp.resize((12+0)*sizeInstance);
9171 dqdp.resize((12+0)*sizeInstance);
9172 Findices.resize((12+0)*sizeInstance);
9173 Qindices.resize((12+0)*sizeInstance);
9175 std::vector <double> probeVars(15);
9176 std::vector <AdmsSensFadType> staticContributions(12+0);
9177 std::vector <AdmsSensFadType> dynamicContributions(12+0);
9184 unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> modParamMap;
9188 bool modelPar_given_TREF=mod.given(
"TREF");
9189 modParamMap[
"TREF"] = &modelPar_TREF;
9191 bool modelPar_given_DTA=mod.given(
"DTA");
9192 modParamMap[
"DTA"] = &modelPar_DTA;
9194 bool modelPar_given_IS=mod.given(
"IS");
9195 modParamMap[
"IS"] = &modelPar_IS;
9197 bool modelPar_given_IK=mod.given(
"IK");
9198 modParamMap[
"IK"] = &modelPar_IK;
9200 bool modelPar_given_VER=mod.given(
"VER");
9201 modParamMap[
"VER"] = &modelPar_VER;
9203 bool modelPar_given_VEF=mod.given(
"VEF");
9204 modParamMap[
"VEF"] = &modelPar_VEF;
9206 bool modelPar_given_BF=mod.given(
"BF");
9207 modParamMap[
"BF"] = &modelPar_BF;
9209 bool modelPar_given_IBF=mod.given(
"IBF");
9210 modParamMap[
"IBF"] = &modelPar_IBF;
9212 bool modelPar_given_MLF=mod.given(
"MLF");
9213 modParamMap[
"MLF"] = &modelPar_MLF;
9215 bool modelPar_given_XIBI=mod.given(
"XIBI");
9216 modParamMap[
"XIBI"] = &modelPar_XIBI;
9218 bool modelPar_given_IZEB=mod.given(
"IZEB");
9219 modParamMap[
"IZEB"] = &modelPar_IZEB;
9221 bool modelPar_given_NZEB=mod.given(
"NZEB");
9222 modParamMap[
"NZEB"] = &modelPar_NZEB;
9224 bool modelPar_given_BRI=mod.given(
"BRI");
9225 modParamMap[
"BRI"] = &modelPar_BRI;
9227 bool modelPar_given_IBR=mod.given(
"IBR");
9228 modParamMap[
"IBR"] = &modelPar_IBR;
9230 bool modelPar_given_VLR=mod.given(
"VLR");
9231 modParamMap[
"VLR"] = &modelPar_VLR;
9233 bool modelPar_given_XEXT=mod.given(
"XEXT");
9234 modParamMap[
"XEXT"] = &modelPar_XEXT;
9236 bool modelPar_given_WAVL=mod.given(
"WAVL");
9237 modParamMap[
"WAVL"] = &modelPar_WAVL;
9239 bool modelPar_given_VAVL=mod.given(
"VAVL");
9240 modParamMap[
"VAVL"] = &modelPar_VAVL;
9242 bool modelPar_given_SFH=mod.given(
"SFH");
9243 modParamMap[
"SFH"] = &modelPar_SFH;
9245 bool modelPar_given_RE=mod.given(
"RE");
9246 modParamMap[
"RE"] = &modelPar_RE;
9248 bool modelPar_given_RBC=mod.given(
"RBC");
9249 modParamMap[
"RBC"] = &modelPar_RBC;
9251 bool modelPar_given_RBV=mod.given(
"RBV");
9252 modParamMap[
"RBV"] = &modelPar_RBV;
9254 bool modelPar_given_RCC=mod.given(
"RCC");
9255 modParamMap[
"RCC"] = &modelPar_RCC;
9257 bool modelPar_given_RCV=mod.given(
"RCV");
9258 modParamMap[
"RCV"] = &modelPar_RCV;
9260 bool modelPar_given_SCRCV=mod.given(
"SCRCV");
9261 modParamMap[
"SCRCV"] = &modelPar_SCRCV;
9263 bool modelPar_given_IHC=mod.given(
"IHC");
9264 modParamMap[
"IHC"] = &modelPar_IHC;
9266 bool modelPar_given_AXI=mod.given(
"AXI");
9267 modParamMap[
"AXI"] = &modelPar_AXI;
9269 bool modelPar_given_CJE=mod.given(
"CJE");
9270 modParamMap[
"CJE"] = &modelPar_CJE;
9272 bool modelPar_given_VDE=mod.given(
"VDE");
9273 modParamMap[
"VDE"] = &modelPar_VDE;
9275 bool modelPar_given_PE=mod.given(
"PE");
9276 modParamMap[
"PE"] = &modelPar_PE;
9278 bool modelPar_given_XCJE=mod.given(
"XCJE");
9279 modParamMap[
"XCJE"] = &modelPar_XCJE;
9281 bool modelPar_given_CBEO=mod.given(
"CBEO");
9282 modParamMap[
"CBEO"] = &modelPar_CBEO;
9284 bool modelPar_given_CJC=mod.given(
"CJC");
9285 modParamMap[
"CJC"] = &modelPar_CJC;
9287 bool modelPar_given_VDC=mod.given(
"VDC");
9288 modParamMap[
"VDC"] = &modelPar_VDC;
9290 bool modelPar_given_PC=mod.given(
"PC");
9291 modParamMap[
"PC"] = &modelPar_PC;
9293 bool modelPar_given_XP=mod.given(
"XP");
9294 modParamMap[
"XP"] = &modelPar_XP;
9296 bool modelPar_given_MC=mod.given(
"MC");
9297 modParamMap[
"MC"] = &modelPar_MC;
9299 bool modelPar_given_XCJC=mod.given(
"XCJC");
9300 modParamMap[
"XCJC"] = &modelPar_XCJC;
9302 bool modelPar_given_RCBLX=mod.given(
"RCBLX");
9303 modParamMap[
"RCBLX"] = &modelPar_RCBLX;
9305 bool modelPar_given_RCBLI=mod.given(
"RCBLI");
9306 modParamMap[
"RCBLI"] = &modelPar_RCBLI;
9308 bool modelPar_given_CBCO=mod.given(
"CBCO");
9309 modParamMap[
"CBCO"] = &modelPar_CBCO;
9311 bool modelPar_given_MTAU=mod.given(
"MTAU");
9312 modParamMap[
"MTAU"] = &modelPar_MTAU;
9314 bool modelPar_given_TAUE=mod.given(
"TAUE");
9315 modParamMap[
"TAUE"] = &modelPar_TAUE;
9317 bool modelPar_given_TAUB=mod.given(
"TAUB");
9318 modParamMap[
"TAUB"] = &modelPar_TAUB;
9320 bool modelPar_given_TEPI=mod.given(
"TEPI");
9321 modParamMap[
"TEPI"] = &modelPar_TEPI;
9323 bool modelPar_given_TAUR=mod.given(
"TAUR");
9324 modParamMap[
"TAUR"] = &modelPar_TAUR;
9326 bool modelPar_given_DEG=mod.given(
"DEG");
9327 modParamMap[
"DEG"] = &modelPar_DEG;
9329 bool modelPar_given_XREC=mod.given(
"XREC");
9330 modParamMap[
"XREC"] = &modelPar_XREC;
9332 bool modelPar_given_AQBO=mod.given(
"AQBO");
9333 modParamMap[
"AQBO"] = &modelPar_AQBO;
9335 bool modelPar_given_AE=mod.given(
"AE");
9336 modParamMap[
"AE"] = &modelPar_AE;
9338 bool modelPar_given_AB=mod.given(
"AB");
9339 modParamMap[
"AB"] = &modelPar_AB;
9341 bool modelPar_given_AEPI=mod.given(
"AEPI");
9342 modParamMap[
"AEPI"] = &modelPar_AEPI;
9344 bool modelPar_given_AEX=mod.given(
"AEX");
9345 modParamMap[
"AEX"] = &modelPar_AEX;
9347 bool modelPar_given_AC=mod.given(
"AC");
9348 modParamMap[
"AC"] = &modelPar_AC;
9350 bool modelPar_given_ACBL=mod.given(
"ACBL");
9351 modParamMap[
"ACBL"] = &modelPar_ACBL;
9353 bool modelPar_given_DVGBF=mod.given(
"DVGBF");
9354 modParamMap[
"DVGBF"] = &modelPar_DVGBF;
9356 bool modelPar_given_DVGBR=mod.given(
"DVGBR");
9357 modParamMap[
"DVGBR"] = &modelPar_DVGBR;
9359 bool modelPar_given_VGB=mod.given(
"VGB");
9360 modParamMap[
"VGB"] = &modelPar_VGB;
9362 bool modelPar_given_VGC=mod.given(
"VGC");
9363 modParamMap[
"VGC"] = &modelPar_VGC;
9365 bool modelPar_given_VGJ=mod.given(
"VGJ");
9366 modParamMap[
"VGJ"] = &modelPar_VGJ;
9368 bool modelPar_given_VGZEB=mod.given(
"VGZEB");
9369 modParamMap[
"VGZEB"] = &modelPar_VGZEB;
9371 bool modelPar_given_AVGEB=mod.given(
"AVGEB");
9372 modParamMap[
"AVGEB"] = &modelPar_AVGEB;
9374 bool modelPar_given_TVGEB=mod.given(
"TVGEB");
9375 modParamMap[
"TVGEB"] = &modelPar_TVGEB;
9377 bool modelPar_given_DVGTE=mod.given(
"DVGTE");
9378 modParamMap[
"DVGTE"] = &modelPar_DVGTE;
9380 bool modelPar_given_DAIS=mod.given(
"DAIS");
9381 modParamMap[
"DAIS"] = &modelPar_DAIS;
9383 bool modelPar_given_AF=mod.given(
"AF");
9384 modParamMap[
"AF"] = &modelPar_AF;
9386 bool modelPar_given_KF=mod.given(
"KF");
9387 modParamMap[
"KF"] = &modelPar_KF;
9389 bool modelPar_given_KFN=mod.given(
"KFN");
9390 modParamMap[
"KFN"] = &modelPar_KFN;
9392 bool modelPar_given_ISS=mod.given(
"ISS");
9393 modParamMap[
"ISS"] = &modelPar_ISS;
9395 bool modelPar_given_ICSS=mod.given(
"ICSS");
9396 modParamMap[
"ICSS"] = &modelPar_ICSS;
9398 bool modelPar_given_IKS=mod.given(
"IKS");
9399 modParamMap[
"IKS"] = &modelPar_IKS;
9401 bool modelPar_given_CJS=mod.given(
"CJS");
9402 modParamMap[
"CJS"] = &modelPar_CJS;
9404 bool modelPar_given_VDS=mod.given(
"VDS");
9405 modParamMap[
"VDS"] = &modelPar_VDS;
9407 bool modelPar_given_PS=mod.given(
"PS");
9408 modParamMap[
"PS"] = &modelPar_PS;
9410 bool modelPar_given_VGS=mod.given(
"VGS");
9411 modParamMap[
"VGS"] = &modelPar_VGS;
9413 bool modelPar_given_AS=mod.given(
"AS");
9414 modParamMap[
"AS"] = &modelPar_AS;
9416 bool modelPar_given_ASUB=mod.given(
"ASUB");
9417 modParamMap[
"ASUB"] = &modelPar_ASUB;
9419 bool modelPar_given_MULT=mod.given(
"MULT");
9420 modParamMap[
"MULT"] = &modelPar_MULT;
9422 bool modelPar_given_GMIN=mod.given(
"GMIN");
9423 modParamMap[
"GMIN"] = &modelPar_GMIN;
9430 int modelPar_LEVEL=mod.LEVEL;
9431 bool modelPar_given_LEVEL=mod.given(
"LEVEL");
9432 int modelPar_EXMOD=mod.EXMOD;
9433 bool modelPar_given_EXMOD=mod.given(
"EXMOD");
9434 int modelPar_EXPHI=mod.EXPHI;
9435 bool modelPar_given_EXPHI=mod.given(
"EXPHI");
9436 int modelPar_EXAVL=mod.EXAVL;
9437 bool modelPar_given_EXAVL=mod.given(
"EXAVL");
9438 int modelPar_EXSUB=mod.EXSUB;
9439 bool modelPar_given_EXSUB=mod.given(
"EXSUB");
9440 int modelPar_KAVL=mod.KAVL;
9441 bool modelPar_given_KAVL=mod.given(
"KAVL");
9442 int modelPar_TYPE=mod.TYPE;
9443 bool modelPar_given_TYPE=mod.given(
"TYPE");
9450 modParamMap[name]->diff(0,1);
9513 evaluateInitialModel(
9517 modelPar_given_TREF,
9535 modelPar_given_XIBI,
9537 modelPar_given_IZEB,
9539 modelPar_given_NZEB,
9547 modelPar_given_XEXT,
9549 modelPar_given_WAVL,
9551 modelPar_given_VAVL,
9565 modelPar_given_SCRCV,
9577 modelPar_given_XCJE,
9579 modelPar_given_CBEO,
9591 modelPar_given_XCJC,
9593 modelPar_given_RCBLX,
9595 modelPar_given_RCBLI,
9597 modelPar_given_CBCO,
9599 modelPar_given_MTAU,
9601 modelPar_given_TAUE,
9603 modelPar_given_TAUB,
9605 modelPar_given_TEPI,
9607 modelPar_given_TAUR,
9611 modelPar_given_XREC,
9613 modelPar_given_AQBO,
9619 modelPar_given_AEPI,
9625 modelPar_given_ACBL,
9627 modelPar_given_DVGBF,
9629 modelPar_given_DVGBR,
9637 modelPar_given_VGZEB,
9639 modelPar_given_AVGEB,
9641 modelPar_given_TVGEB,
9643 modelPar_given_DVGTE,
9645 modelPar_given_DAIS,
9655 modelPar_given_ICSS,
9669 modelPar_given_ASUB,
9671 modelPar_given_MULT,
9673 modelPar_given_GMIN,
9676 modelPar_given_LEVEL,
9678 modelPar_given_EXMOD,
9680 modelPar_given_EXPHI,
9682 modelPar_given_EXAVL,
9684 modelPar_given_EXSUB,
9686 modelPar_given_KAVL,
9748 for (std::vector<Instance*>::const_iterator in_it=mod.instanceContainer.begin(); in_it != mod.instanceContainer.end(); ++in_it,++inst)
9751 Instance & in=*(*in_it);
9753 for (
int i=0; i < 12+0 ; ++i)
9755 staticContributions[i]=0;
9756 dynamicContributions[i]=0;
9764 bool instancePar_given_MULT=in.given(
"MULT");
9780 if (!(in.given(
"MULT")))
9782 instancePar_MULT = modelPar_MULT;
9809 Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
9812 probeVars[in.admsProbeID_V_noi_e1] = (*solVectorPtr)[in.li_noi] - (*solVectorPtr)[in.li_e1];
9813 probeVars[in.admsProbeID_V_c3_c1] = (*solVectorPtr)[in.li_c3] - (*solVectorPtr)[in.li_c1];
9814 probeVars[in.admsProbeID_V_c3_c4] = (*solVectorPtr)[in.li_c3] - (*solVectorPtr)[in.li_c4];
9815 probeVars[in.admsProbeID_V_c4_c1] = (*solVectorPtr)[in.li_c4] - (*solVectorPtr)[in.li_c1];
9816 probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
9817 probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
9818 probeVars[in.admsProbeID_V_b_b1] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_b1];
9819 probeVars[in.admsProbeID_V_e_e1] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_e1];
9820 probeVars[in.admsProbeID_V_c1_c2] = (*solVectorPtr)[in.li_c1] - (*solVectorPtr)[in.li_c2];
9821 probeVars[in.admsProbeID_V_s_c1] = (*solVectorPtr)[in.li_s] - (*solVectorPtr)[in.li_c1];
9822 probeVars[in.admsProbeID_V_b1_b2] = (*solVectorPtr)[in.li_b1] - (*solVectorPtr)[in.li_b2];
9823 probeVars[in.admsProbeID_V_b1_e1] = (*solVectorPtr)[in.li_b1] - (*solVectorPtr)[in.li_e1];
9824 probeVars[in.admsProbeID_V_b2_e1] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_e1];
9825 probeVars[in.admsProbeID_V_b2_c2] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_c2];
9826 probeVars[in.admsProbeID_V_b2_c1] = (*solVectorPtr)[in.li_b2] - (*solVectorPtr)[in.li_c1];
9829 probeVars[in.admsProbeID_V_b1_b2] *= modelPar_TYPE;
9830 probeVars[in.admsProbeID_V_b1_e1] *= modelPar_TYPE;
9831 probeVars[in.admsProbeID_V_b2_c2] *= modelPar_TYPE;
9832 probeVars[in.admsProbeID_V_b2_c1] *= modelPar_TYPE;
9838 evaluateModelEquations(
9841 in.admsProbeID_V_noi_e1,
9842 in.admsProbeID_V_c3_c1,
9843 in.admsProbeID_V_c3_c4,
9844 in.admsProbeID_V_c4_c1,
9845 in.admsProbeID_V_b_c,
9846 in.admsProbeID_V_b_e,
9847 in.admsProbeID_V_b_b1,
9848 in.admsProbeID_V_e_e1,
9849 in.admsProbeID_V_c1_c2,
9850 in.admsProbeID_V_s_c1,
9851 in.admsProbeID_V_b1_b2,
9852 in.admsProbeID_V_b1_e1,
9853 in.admsProbeID_V_b2_e1,
9854 in.admsProbeID_V_b2_c2,
9855 in.admsProbeID_V_b2_c1,
9873 instancePar_given_MULT,
9894 modelPar_given_TREF,
9912 modelPar_given_XIBI,
9914 modelPar_given_IZEB,
9916 modelPar_given_NZEB,
9924 modelPar_given_XEXT,
9926 modelPar_given_WAVL,
9928 modelPar_given_VAVL,
9942 modelPar_given_SCRCV,
9954 modelPar_given_XCJE,
9956 modelPar_given_CBEO,
9968 modelPar_given_XCJC,
9970 modelPar_given_RCBLX,
9972 modelPar_given_RCBLI,
9974 modelPar_given_CBCO,
9976 modelPar_given_MTAU,
9978 modelPar_given_TAUE,
9980 modelPar_given_TAUB,
9982 modelPar_given_TEPI,
9984 modelPar_given_TAUR,
9988 modelPar_given_XREC,
9990 modelPar_given_AQBO,
9996 modelPar_given_AEPI,
10002 modelPar_given_ACBL,
10004 modelPar_given_DVGBF,
10006 modelPar_given_DVGBR,
10008 modelPar_given_VGB,
10010 modelPar_given_VGC,
10012 modelPar_given_VGJ,
10014 modelPar_given_VGZEB,
10016 modelPar_given_AVGEB,
10018 modelPar_given_TVGEB,
10020 modelPar_given_DVGTE,
10022 modelPar_given_DAIS,
10028 modelPar_given_KFN,
10030 modelPar_given_ISS,
10032 modelPar_given_ICSS,
10034 modelPar_given_IKS,
10036 modelPar_given_CJS,
10038 modelPar_given_VDS,
10042 modelPar_given_VGS,
10046 modelPar_given_ASUB,
10048 modelPar_given_MULT,
10050 modelPar_given_GMIN,
10053 modelPar_given_LEVEL,
10055 modelPar_given_EXMOD,
10057 modelPar_given_EXPHI,
10059 modelPar_given_EXAVL,
10061 modelPar_given_EXSUB,
10063 modelPar_given_KAVL,
10065 modelPar_given_TYPE
10081 modelVar_pow2_2mPE,
10082 modelVar_pow2_PEm2,
10083 modelVar_inv_VDE_T,
10119 in.admsTemperature,
10121 in.getDeviceOptions().gmin,
10122 staticContributions,
10123 dynamicContributions,
10129 dfdp[in.admsNodeID_c+inst*(12+0)] += staticContributions[in.admsNodeID_c].dx(0);
10130 dqdp[in.admsNodeID_c+inst*(12+0)] += dynamicContributions[in.admsNodeID_c].dx(0);
10131 Findices[in.admsNodeID_c+inst*(12+0)] = in.li_c;
10132 Qindices[in.admsNodeID_c+inst*(12+0)] = in.li_c;
10133 dfdp[in.admsNodeID_b+inst*(12+0)] += staticContributions[in.admsNodeID_b].dx(0);
10134 dqdp[in.admsNodeID_b+inst*(12+0)] += dynamicContributions[in.admsNodeID_b].dx(0);
10135 Findices[in.admsNodeID_b+inst*(12+0)] = in.li_b;
10136 Qindices[in.admsNodeID_b+inst*(12+0)] = in.li_b;
10137 dfdp[in.admsNodeID_e+inst*(12+0)] += staticContributions[in.admsNodeID_e].dx(0);
10138 dqdp[in.admsNodeID_e+inst*(12+0)] += dynamicContributions[in.admsNodeID_e].dx(0);
10139 Findices[in.admsNodeID_e+inst*(12+0)] = in.li_e;
10140 Qindices[in.admsNodeID_e+inst*(12+0)] = in.li_e;
10141 dfdp[in.admsNodeID_s+inst*(12+0)] += staticContributions[in.admsNodeID_s].dx(0);
10142 dqdp[in.admsNodeID_s+inst*(12+0)] += dynamicContributions[in.admsNodeID_s].dx(0);
10143 Findices[in.admsNodeID_s+inst*(12+0)] = in.li_s;
10144 Qindices[in.admsNodeID_s+inst*(12+0)] = in.li_s;
10145 dfdp[in.admsNodeID_e1+inst*(12+0)] += staticContributions[in.admsNodeID_e1].dx(0);
10146 dqdp[in.admsNodeID_e1+inst*(12+0)] += dynamicContributions[in.admsNodeID_e1].dx(0);
10147 Findices[in.admsNodeID_e1+inst*(12+0)] = in.li_e1;
10148 Qindices[in.admsNodeID_e1+inst*(12+0)] = in.li_e1;
10149 dfdp[in.admsNodeID_b1+inst*(12+0)] += staticContributions[in.admsNodeID_b1].dx(0);
10150 dqdp[in.admsNodeID_b1+inst*(12+0)] += dynamicContributions[in.admsNodeID_b1].dx(0);
10151 Findices[in.admsNodeID_b1+inst*(12+0)] = in.li_b1;
10152 Qindices[in.admsNodeID_b1+inst*(12+0)] = in.li_b1;
10153 dfdp[in.admsNodeID_b2+inst*(12+0)] += staticContributions[in.admsNodeID_b2].dx(0);
10154 dqdp[in.admsNodeID_b2+inst*(12+0)] += dynamicContributions[in.admsNodeID_b2].dx(0);
10155 Findices[in.admsNodeID_b2+inst*(12+0)] = in.li_b2;
10156 Qindices[in.admsNodeID_b2+inst*(12+0)] = in.li_b2;
10157 dfdp[in.admsNodeID_c3+inst*(12+0)] += staticContributions[in.admsNodeID_c3].dx(0);
10158 dqdp[in.admsNodeID_c3+inst*(12+0)] += dynamicContributions[in.admsNodeID_c3].dx(0);
10159 Findices[in.admsNodeID_c3+inst*(12+0)] = in.li_c3;
10160 Qindices[in.admsNodeID_c3+inst*(12+0)] = in.li_c3;
10161 dfdp[in.admsNodeID_c4+inst*(12+0)] += staticContributions[in.admsNodeID_c4].dx(0);
10162 dqdp[in.admsNodeID_c4+inst*(12+0)] += dynamicContributions[in.admsNodeID_c4].dx(0);
10163 Findices[in.admsNodeID_c4+inst*(12+0)] = in.li_c4;
10164 Qindices[in.admsNodeID_c4+inst*(12+0)] = in.li_c4;
10165 dfdp[in.admsNodeID_c2+inst*(12+0)] += staticContributions[in.admsNodeID_c2].dx(0);
10166 dqdp[in.admsNodeID_c2+inst*(12+0)] += dynamicContributions[in.admsNodeID_c2].dx(0);
10167 Findices[in.admsNodeID_c2+inst*(12+0)] = in.li_c2;
10168 Qindices[in.admsNodeID_c2+inst*(12+0)] = in.li_c2;
10169 dfdp[in.admsNodeID_c1+inst*(12+0)] += staticContributions[in.admsNodeID_c1].dx(0);
10170 dqdp[in.admsNodeID_c1+inst*(12+0)] += dynamicContributions[in.admsNodeID_c1].dx(0);
10171 Findices[in.admsNodeID_c1+inst*(12+0)] = in.li_c1;
10172 Qindices[in.admsNodeID_c1+inst*(12+0)] = in.li_c1;
10173 dfdp[in.admsNodeID_noi+inst*(12+0)] += staticContributions[in.admsNodeID_noi].dx(0);
10174 dqdp[in.admsNodeID_noi+inst*(12+0)] += dynamicContributions[in.admsNodeID_noi].dx(0);
10175 Findices[in.admsNodeID_noi+inst*(12+0)] = in.li_noi;
10176 Qindices[in.admsNodeID_noi+inst*(12+0)] = in.li_noi;
10181 #endif // Xyce_ADMS_SENSITIVITIES
double * f_b1_Equ_s_Node_Ptr
const InstanceName & getName() const
double * q_b_Equ_s_Node_Ptr
double * f_b1_Equ_b1_Node_Ptr
double * f_c1_Equ_b2_Node_Ptr
double * q_b1_Equ_c1_Node_Ptr
std::vector< std::vector< int > > jacMap2
double * f_c3_Equ_b2_Node_Ptr
static const int admsProbeID_V_c1_c2
double * q_b2_Equ_c2_Node_Ptr
double * f_c4_Equ_c_Node_Ptr
double * q_b2_Equ_b2_Node_Ptr
double * f_c1_Equ_c_Node_Ptr
std::vector< AdmsFadType > staticContributions
double * q_s_Equ_b_Node_Ptr
bool updateDependentParameters()
double * f_e1_Equ_b_Node_Ptr
double * q_c2_Equ_e1_Node_Ptr
ScalarT trunc_ev(ScalarT Val, ScalarT Vprev, ScalarT Vmin, ScalarT Vmax)
static const int admsProbeID_V_b2_c1
double * f_c4_Equ_e1_Node_Ptr
double * q_b2_Equ_c_Node_Ptr
double * q_b1_Equ_c_Node_Ptr
const SolverState & solverState_
Descriptor & addPar(const char *parName, T default_value, T U::*varPtr)
Adds the parameter description to the parameter map.
double * f_b_Equ_e_Node_Ptr
double * q_e1_Equ_c_Node_Ptr
double * q_b2_Equ_c4_Node_Ptr
double * q_b_Equ_c3_Node_Ptr
std::vector< double > probeDiffs
double * q_c_Equ_c3_Node_Ptr
double * f_e_Equ_e_Node_Ptr
double * f_b_Equ_b1_Node_Ptr
double * f_b_Equ_c_Node_Ptr
double * f_c3_Equ_b1_Node_Ptr
double * q_e1_Equ_b1_Node_Ptr
double * f_b2_Equ_c4_Node_Ptr
double * q_c4_Equ_c4_Node_Ptr
double * q_s_Equ_c_Node_Ptr
double * dFdxdVpVectorRawPtr
double * q_s_Equ_c2_Node_Ptr
Linear::Vector * nextSolVectorPtr
double * f_c2_Equ_c2_Node_Ptr
virtual std::ostream & printOutInstances(std::ostream &os) const
static const int admsProbeID_V_b1_e1
double * f_b2_Equ_b1_Node_Ptr
double * q_b_Equ_c_Node_Ptr
double * f_b2_Equ_e1_Node_Ptr
bool given(const std::string ¶meter_name) const
double * f_e1_Equ_b1_Node_Ptr
Linear::Vector * daeQVectorPtr
double * q_noi_Equ_c2_Node_Ptr
double * q_c_Equ_b_Node_Ptr
double * q_b2_Equ_b_Node_Ptr
double * f_c3_Equ_c4_Node_Ptr
static const int admsNodeID_e1
Pure virtual class to augment a linear system.
double * q_c1_Equ_c3_Node_Ptr
double * q_c_Equ_b1_Node_Ptr
double * f_s_Equ_b2_Node_Ptr
double * q_c1_Equ_c4_Node_Ptr
double * f_e1_Equ_c3_Node_Ptr
void addInternalNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
double * q_c1_Equ_b1_Node_Ptr
static T adms_vt(const T temp)
double * f_e1_Equ_c4_Node_Ptr
static const int admsProbeID_V_b1_b2
double * q_s_Equ_e1_Node_Ptr
double * q_c2_Equ_b_Node_Ptr
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
double * q_c3_Equ_s_Node_Ptr
double * f_c2_Equ_c_Node_Ptr
double * q_noi_Equ_b2_Node_Ptr
double * f_s_Equ_c_Node_Ptr
double * f_c2_Equ_c3_Node_Ptr
double * f_c_Equ_b1_Node_Ptr
double * f_noi_Equ_e1_Node_Ptr
const JacobianStamp & jacobianStamp() const
void registerStateLIDs(const LocalIdVector &staLIDVecRef)
double * q_c3_Equ_b_Node_Ptr
double * f_b1_Equ_c1_Node_Ptr
bool processParams()
processParams
double * f_b_Equ_c2_Node_Ptr
double * f_s_Equ_c3_Node_Ptr
double * f_b2_Equ_c_Node_Ptr
Sacado::Fad::SFad< double, 1 > AdmsSensFadType
double * f_b_Equ_c4_Node_Ptr
double * q_c2_Equ_c1_Node_Ptr
double * f_c_Equ_c3_Node_Ptr
double * f_c2_Equ_b2_Node_Ptr
RetScalarT Vt(Arg1ScalarT U, Arg2ScalarT Ud)
double * f_s_Equ_b1_Node_Ptr
double * f_b_Equ_e1_Node_Ptr
double * f_c4_Equ_s_Node_Ptr
static const int admsProbeID_V_b_c
double * q_c4_Equ_c_Node_Ptr
void jacStampMap_fixOrder(const JacobianStamp &stamp_parent, JacobianStamp &map2_parent, JacobianStamp &stamp, JacobianStamp &map2)
double * f_c4_Equ_c2_Node_Ptr
virtual void registerJacLIDs(const JacobianStamp &jacLIDVec)
double * q_e1_Equ_c2_Node_Ptr
double * f_b2_Equ_noi_Node_Ptr
double * q_c1_Equ_s_Node_Ptr
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
double * f_b2_Equ_c3_Node_Ptr
static const int admsNodeID_b1
static const int admsProbeID_V_b_e
std::vector< double > Jdxp_dynamic
bool processInstanceParams()
processInstanceParams
double * q_c1_Equ_b2_Node_Ptr
double * q_e1_Equ_b_Node_Ptr
double * q_e_Equ_b_Node_Ptr
static const int admsNodeID_c
double * q_c_Equ_c2_Node_Ptr
double * f_e_Equ_b_Node_Ptr
double * q_c1_Equ_c_Node_Ptr
double * q_c2_Equ_c3_Node_Ptr
double * f_s_Equ_c1_Node_Ptr
double * q_c3_Equ_c4_Node_Ptr
std::vector< Param > params
Parameters from the line.
double * q_c2_Equ_c_Node_Ptr
static const int admsNodeID_e
double * f_e1_Equ_e_Node_Ptr
double * f_b_Equ_s_Node_Ptr
void setParams(const std::vector< Param > ¶ms)
double * q_c4_Equ_b_Node_Ptr
const std::string & getName() const
double * q_noi_Equ_e1_Node_Ptr
double * f_b1_Equ_c2_Node_Ptr
double * f_c1_Equ_e1_Node_Ptr
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
double * f_b1_Equ_c3_Node_Ptr
double * q_c4_Equ_c2_Node_Ptr
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
double * q_e_Equ_e_Node_Ptr
double * q_e1_Equ_noi_Node_Ptr
double * f_e1_Equ_c2_Node_Ptr
const DeviceOptions & getDeviceOptions() const
double * q_b_Equ_b1_Node_Ptr
double * q_c3_Equ_e1_Node_Ptr
double * q_s_Equ_c3_Node_Ptr
int li_state_admsProbeID_V_b2_c2
Parameter is not to be documented.
double * f_c2_Equ_noi_Node_Ptr
double * f_noi_Equ_noi_Node_Ptr
double * q_noi_Equ_c1_Node_Ptr
double * f_c_Equ_b_Node_Ptr
double * q_b1_Equ_b1_Node_Ptr
double * q_b2_Equ_b1_Node_Ptr
double * f_c1_Equ_c4_Node_Ptr
double * q_c4_Equ_c3_Node_Ptr
double * f_c3_Equ_c_Node_Ptr
double * f_c2_Equ_e1_Node_Ptr
static const int admsProbeID_V_b_b1
double * f_s_Equ_c4_Node_Ptr
const DeviceOptions & deviceOptions_
void registerJacLIDs(const JacobianStamp &jacLIDVec)
double * q_e_Equ_e1_Node_Ptr
double * q_noi_Equ_noi_Node_Ptr
double * q_e1_Equ_e_Node_Ptr
static const int admsProbeID_V_noi_e1
std::vector< std::vector< int > > JacobianStamp
double * f_c1_Equ_b1_Node_Ptr
double * f_s_Equ_c2_Node_Ptr
double * f_c1_Equ_s_Node_Ptr
static const int admsNodeID_noi
double * q_c4_Equ_s_Node_Ptr
double * q_c3_Equ_c2_Node_Ptr
double * f_noi_Equ_c2_Node_Ptr
Linear::Vector * nextStaVectorPtr
double * f_e1_Equ_c1_Node_Ptr
double * q_b2_Equ_e1_Node_Ptr
static Config< T > & addConfiguration()
Adds the device to the Xyce device configuration.
double * f_s_Equ_e1_Node_Ptr
double * q_c4_Equ_e1_Node_Ptr
double * f_c_Equ_c1_Node_Ptr
Linear::Matrix * dFdxMatrixPtr
bool updateIntermediateVars()
double * f_c2_Equ_c4_Node_Ptr
double * q_s_Equ_b1_Node_Ptr
double * f_b1_Equ_e1_Node_Ptr
int li_state_admsProbeID_V_b2_c1
double * q_b1_Equ_b2_Node_Ptr
static const int admsProbeID_V_c3_c1
double * f_b1_Equ_c_Node_Ptr
The Device class is an interface for device implementations.
double * f_c4_Equ_b2_Node_Ptr
static const int admsProbeID_V_b2_c2
double * q_c_Equ_c4_Node_Ptr
double * q_c3_Equ_b1_Node_Ptr
static const int admsNodeID_c3
double * q_c1_Equ_c2_Node_Ptr
double * f_b1_Equ_c4_Node_Ptr
double * q_c1_Equ_b_Node_Ptr
double * q_b_Equ_b_Node_Ptr
double * f_b2_Equ_b_Node_Ptr
static const int admsProbeID_V_c3_c4
double * q_b1_Equ_e1_Node_Ptr
double * q_c4_Equ_c1_Node_Ptr
static const int admsNodeID_b2
double * q_c2_Equ_c2_Node_Ptr
double * f_c4_Equ_c1_Node_Ptr
double * f_e_Equ_e1_Node_Ptr
double * f_b_Equ_b2_Node_Ptr
Model(const Configuration &configuration, const ModelBlock &model_block, const FactoryBlock &factory_block)
double * f_c1_Equ_c1_Node_Ptr
double * q_c3_Equ_c3_Node_Ptr
double * f_s_Equ_s_Node_Ptr
double * f_c3_Equ_e1_Node_Ptr
int li_state_admsProbeID_V_b1_b2
double * dQdxdVpVectorRawPtr
Class Configuration contains device configuration data.
double * f_b1_Equ_b2_Node_Ptr
double * f_noi_Equ_b2_Node_Ptr
static const int admsNodeID_c2
static const int admsProbeID_V_s_c1
double * q_b_Equ_b2_Node_Ptr
double * f_c2_Equ_c1_Node_Ptr
double * f_c1_Equ_c2_Node_Ptr
double * q_e1_Equ_c1_Node_Ptr
double * q_b_Equ_c2_Node_Ptr
double * q_b1_Equ_c4_Node_Ptr
double * q_c3_Equ_b2_Node_Ptr
double * f_s_Equ_b_Node_Ptr
double * f_c3_Equ_c1_Node_Ptr
double * q_b1_Equ_b_Node_Ptr
void jacStampMap(const JacobianStamp &stamp_parent, IdVector &map_parent, JacobianStamp &map2_parent, JacobianStamp &stamp, IdVector &map, JacobianStamp &map2, int from, int to, int original_size)
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
double * f_c1_Equ_c3_Node_Ptr
std::vector< AdmsFadType > dynamicContributions
double * f_c_Equ_b2_Node_Ptr
static const int admsProbeID_V_e_e1
double * q_c3_Equ_c_Node_Ptr
const SolverState & getSolverState() const
double * f_c3_Equ_s_Node_Ptr
double * q_e1_Equ_c4_Node_Ptr
Sacado::Fad::SFad< double, 15 > AdmsFadType
double * q_b_Equ_e1_Node_Ptr
static void loadModelParameters(ParametricData< Model > &model_parameters)
std::vector< AdmsFadType > probeVars
double * q_c2_Equ_b1_Node_Ptr
double * f_c2_Equ_b1_Node_Ptr
double * q_b1_Equ_s_Node_Ptr
double * q_c_Equ_c_Node_Ptr
double * f_c4_Equ_b_Node_Ptr
double * q_b_Equ_c4_Node_Ptr
std::vector< std::vector< int > > jacStamp
Linear::Vector * currStaVectorPtr
double * f_noi_Equ_c1_Node_Ptr
double * f_e1_Equ_b2_Node_Ptr
Instance(const Configuration &configuration, const InstanceBlock &instance_block, Model &model, const FactoryBlock &factory_block)
double * nextStaVectorRawPtr
Linear::Vector * daeFVectorPtr
double * q_c2_Equ_b2_Node_Ptr
bool updatePrimaryState()
double * f_e1_Equ_noi_Node_Ptr
const std::string & getType() const
double * q_c3_Equ_c1_Node_Ptr
static const int admsNodeID_b
std::vector< double > Jdxp_static
double * f_b1_Equ_b_Node_Ptr
double * f_b2_Equ_c1_Node_Ptr
double * q_s_Equ_c1_Node_Ptr
double * q_c_Equ_c1_Node_Ptr
std::vector< int > jacMap
static const int admsNodeID_c1
double * q_s_Equ_s_Node_Ptr
double * f_e1_Equ_c_Node_Ptr
static const int admsNodeID_s
double * q_b2_Equ_c1_Node_Ptr
double * q_c_Equ_b2_Node_Ptr
static const int admsProbeID_V_b2_e1
static const int admsProbeID_V_c4_c1
double * q_s_Equ_b2_Node_Ptr
double * f_c3_Equ_c3_Node_Ptr
double * f_e1_Equ_e1_Node_Ptr
double * f_c4_Equ_c3_Node_Ptr
double * f_c_Equ_c4_Node_Ptr
double * q_c4_Equ_b1_Node_Ptr
double * f_c2_Equ_b_Node_Ptr
double * q_e1_Equ_c3_Node_Ptr
const ExternData & extData
double * q_b1_Equ_c2_Node_Ptr
bool updateSecondaryState()
static const int admsNodeID_c4
ModelBlock represents a .MODEL line from the netlist.
double * f_c3_Equ_b_Node_Ptr
double * f_b2_Equ_c2_Node_Ptr
double * f_c4_Equ_c4_Node_Ptr
Manages parameter binding for class C.
double * q_b1_Equ_c3_Node_Ptr
double * q_s_Equ_c4_Node_Ptr
double * f_c3_Equ_c2_Node_Ptr
InstanceBlock represent a device instance line from the netlist.
double * q_b_Equ_e_Node_Ptr
Util::Param temp
operating temperature of ckt.
std::vector< Param > params
std::vector< Instance * > instanceContainer
double * q_b2_Equ_c3_Node_Ptr
Linear::Matrix * dQdxMatrixPtr
double * q_c4_Equ_b2_Node_Ptr
double * q_c1_Equ_c1_Node_Ptr
double * f_b_Equ_b_Node_Ptr
double * f_c_Equ_c2_Node_Ptr
double * q_c1_Equ_e1_Node_Ptr
double * f_c_Equ_c_Node_Ptr
double * q_b_Equ_c1_Node_Ptr
double * f_b_Equ_c1_Node_Ptr
double * q_c2_Equ_noi_Node_Ptr
bool updateTemperature(const double &temp=-999.0)
double * q_e1_Equ_b2_Node_Ptr
double * q_c2_Equ_c4_Node_Ptr
int li_state_admsProbeID_V_b1_e1
double * f_b_Equ_c3_Node_Ptr
void setModParams(const std::vector< Param > ¶ms)
double * f_c1_Equ_b_Node_Ptr
void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)
double * q_b2_Equ_noi_Node_Ptr
double * f_c4_Equ_b1_Node_Ptr
double * q_e1_Equ_e1_Node_Ptr
double * f_b2_Equ_b2_Node_Ptr