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 ADMSvbic13 {
93 .setExpressionAccess(
NO_DOC)
96 .setDescription(
"Internal-use parameter for setting device instance temperature");
99 .setDescription(
"multiplicity factor")
100 #ifdef Xyce_ADMS_SENSITIVITIES
101 .setAnalyticSensitivityAvailable(
true)
102 .setSensitivityFunctor(&instSens)
103 #endif // Xyce_ADMS_SENSITIVITIES
107 .setDescription(
"local temperature delta to ambient (before self-heating)")
108 #ifdef Xyce_ADMS_SENSITIVITIES
109 .setAnalyticSensitivityAvailable(
true)
110 .setSensitivityFunctor(&instSens)
111 #endif // Xyce_ADMS_SENSITIVITIES
115 .setDescription(
" Alias for trise")
116 #ifdef Xyce_ADMS_SENSITIVITIES
117 .setAnalyticSensitivityAvailable(
true)
118 .setSensitivityFunctor(&instSens)
119 #endif // Xyce_ADMS_SENSITIVITIES
123 .setDescription(
" Alias for trise")
124 #ifdef Xyce_ADMS_SENSITIVITIES
125 .setAnalyticSensitivityAvailable(
true)
126 .setSensitivityFunctor(&instSens)
127 #endif // Xyce_ADMS_SENSITIVITIES
131 .setDescription(
"switch for including noise: 0=no and 1=yes");
134 .setDescription(
"switch for self-heating: 0=no and 1=yes");
148 .setExpressionAccess(
NO_DOC)
151 .setDescription(
"Internal-use parameter for setting device model temperature");
154 .setDescription(
"npn transistor type")
155 #ifdef Xyce_ADMS_SENSITIVITIES
156 .setAnalyticSensitivityAvailable(
true)
157 .setSensitivityFunctor(&modSens)
158 #endif // Xyce_ADMS_SENSITIVITIES
162 .setDescription(
"pnp transistor type")
163 #ifdef Xyce_ADMS_SENSITIVITIES
164 .setAnalyticSensitivityAvailable(
true)
165 .setSensitivityFunctor(&modSens)
166 #endif // Xyce_ADMS_SENSITIVITIES
170 .setDescription(
"transistor type: -1=npn and +1=pnp (overriden by npn or pnp)");
174 .setDescription(
"scale factor for instance geometries")
175 #ifdef Xyce_ADMS_SENSITIVITIES
176 .setAnalyticSensitivityAvailable(
true)
177 .setSensitivityFunctor(&modSens)
178 #endif // Xyce_ADMS_SENSITIVITIES
182 .setDescription(
"shrink percentage for instance geometries")
183 #ifdef Xyce_ADMS_SENSITIVITIES
184 .setAnalyticSensitivityAvailable(
true)
185 .setSensitivityFunctor(&modSens)
186 #endif // Xyce_ADMS_SENSITIVITIES
190 .setDescription(
"minimum ambient temperature")
191 #ifdef Xyce_ADMS_SENSITIVITIES
192 .setAnalyticSensitivityAvailable(
true)
193 .setSensitivityFunctor(&modSens)
194 #endif // Xyce_ADMS_SENSITIVITIES
198 .setDescription(
"maximum ambient temperature")
199 #ifdef Xyce_ADMS_SENSITIVITIES
200 .setAnalyticSensitivityAvailable(
true)
201 .setSensitivityFunctor(&modSens)
202 #endif // Xyce_ADMS_SENSITIVITIES
206 .setDescription(
"minimum conductance")
207 #ifdef Xyce_ADMS_SENSITIVITIES
208 .setAnalyticSensitivityAvailable(
true)
209 .setSensitivityFunctor(&modSens)
210 #endif // Xyce_ADMS_SENSITIVITIES
214 .setDescription(
"current at which to linearize diode currents")
215 #ifdef Xyce_ADMS_SENSITIVITIES
216 .setAnalyticSensitivityAvailable(
true)
217 .setSensitivityFunctor(&modSens)
218 #endif // Xyce_ADMS_SENSITIVITIES
222 .setDescription(
"argument at which to linearize general exponentials")
223 #ifdef Xyce_ADMS_SENSITIVITIES
224 .setAnalyticSensitivityAvailable(
true)
225 .setSensitivityFunctor(&modSens)
226 #endif // Xyce_ADMS_SENSITIVITIES
230 .setDescription(
"nominal (reference) temperature")
231 #ifdef Xyce_ADMS_SENSITIVITIES
232 .setAnalyticSensitivityAvailable(
true)
233 .setSensitivityFunctor(&modSens)
234 #endif // Xyce_ADMS_SENSITIVITIES
238 .setDescription(
"clip minimum temperature")
239 #ifdef Xyce_ADMS_SENSITIVITIES
240 .setAnalyticSensitivityAvailable(
true)
241 .setSensitivityFunctor(&modSens)
242 #endif // Xyce_ADMS_SENSITIVITIES
246 .setDescription(
"clip maximum temperature")
247 #ifdef Xyce_ADMS_SENSITIVITIES
248 .setAnalyticSensitivityAvailable(
true)
249 .setSensitivityFunctor(&modSens)
250 #endif // Xyce_ADMS_SENSITIVITIES
254 .setDescription(
"extrinsic collector resistance")
255 #ifdef Xyce_ADMS_SENSITIVITIES
256 .setAnalyticSensitivityAvailable(
true)
257 .setSensitivityFunctor(&modSens)
258 #endif // Xyce_ADMS_SENSITIVITIES
262 .setDescription(
"intrinsic collector resistance")
263 #ifdef Xyce_ADMS_SENSITIVITIES
264 .setAnalyticSensitivityAvailable(
true)
265 .setSensitivityFunctor(&modSens)
266 #endif // Xyce_ADMS_SENSITIVITIES
270 .setDescription(
"epi drift saturation voltage")
271 #ifdef Xyce_ADMS_SENSITIVITIES
272 .setAnalyticSensitivityAvailable(
true)
273 .setSensitivityFunctor(&modSens)
274 #endif // Xyce_ADMS_SENSITIVITIES
278 .setDescription(
"epi doping parameter")
279 #ifdef Xyce_ADMS_SENSITIVITIES
280 .setAnalyticSensitivityAvailable(
true)
281 .setSensitivityFunctor(&modSens)
282 #endif // Xyce_ADMS_SENSITIVITIES
286 .setDescription(
"high current collector resistance factor")
287 #ifdef Xyce_ADMS_SENSITIVITIES
288 .setAnalyticSensitivityAvailable(
true)
289 .setSensitivityFunctor(&modSens)
290 #endif // Xyce_ADMS_SENSITIVITIES
294 .setDescription(
"extrinsic base resistance")
295 #ifdef Xyce_ADMS_SENSITIVITIES
296 .setAnalyticSensitivityAvailable(
true)
297 .setSensitivityFunctor(&modSens)
298 #endif // Xyce_ADMS_SENSITIVITIES
302 .setDescription(
"intrinsic base resistance")
303 #ifdef Xyce_ADMS_SENSITIVITIES
304 .setAnalyticSensitivityAvailable(
true)
305 .setSensitivityFunctor(&modSens)
306 #endif // Xyce_ADMS_SENSITIVITIES
310 .setDescription(
"extrinsic emitter resistance")
311 #ifdef Xyce_ADMS_SENSITIVITIES
312 .setAnalyticSensitivityAvailable(
true)
313 .setSensitivityFunctor(&modSens)
314 #endif // Xyce_ADMS_SENSITIVITIES
318 .setDescription(
"extrinsic substrate resistance")
319 #ifdef Xyce_ADMS_SENSITIVITIES
320 .setAnalyticSensitivityAvailable(
true)
321 .setSensitivityFunctor(&modSens)
322 #endif // Xyce_ADMS_SENSITIVITIES
326 .setDescription(
"parasitic transistor base resistance")
327 #ifdef Xyce_ADMS_SENSITIVITIES
328 .setAnalyticSensitivityAvailable(
true)
329 .setSensitivityFunctor(&modSens)
330 #endif // Xyce_ADMS_SENSITIVITIES
334 .setDescription(
"transport saturation current")
335 #ifdef Xyce_ADMS_SENSITIVITIES
336 .setAnalyticSensitivityAvailable(
true)
337 .setSensitivityFunctor(&modSens)
338 #endif // Xyce_ADMS_SENSITIVITIES
342 .setDescription(
"ratio of is(reverse) to is(forward)")
343 #ifdef Xyce_ADMS_SENSITIVITIES
344 .setAnalyticSensitivityAvailable(
true)
345 .setSensitivityFunctor(&modSens)
346 #endif // Xyce_ADMS_SENSITIVITIES
350 .setDescription(
"fwd emission coefficient (ideality factor)")
351 #ifdef Xyce_ADMS_SENSITIVITIES
352 .setAnalyticSensitivityAvailable(
true)
353 .setSensitivityFunctor(&modSens)
354 #endif // Xyce_ADMS_SENSITIVITIES
358 .setDescription(
"rev emission coefficient (ideality factor)")
359 #ifdef Xyce_ADMS_SENSITIVITIES
360 .setAnalyticSensitivityAvailable(
true)
361 .setSensitivityFunctor(&modSens)
362 #endif // Xyce_ADMS_SENSITIVITIES
366 .setDescription(
"base charge model selection switch: 0=GP and 1=SGP");
369 .setDescription(
"parasitic transport saturation current")
370 #ifdef Xyce_ADMS_SENSITIVITIES
371 .setAnalyticSensitivityAvailable(
true)
372 .setSensitivityFunctor(&modSens)
373 #endif // Xyce_ADMS_SENSITIVITIES
377 .setDescription(
"partitioning of Iccp between Vbep and Vbci")
378 #ifdef Xyce_ADMS_SENSITIVITIES
379 .setAnalyticSensitivityAvailable(
true)
380 .setSensitivityFunctor(&modSens)
381 #endif // Xyce_ADMS_SENSITIVITIES
385 .setDescription(
"parasitic emission coeff (ideality factor)")
386 #ifdef Xyce_ADMS_SENSITIVITIES
387 .setAnalyticSensitivityAvailable(
true)
388 .setSensitivityFunctor(&modSens)
389 #endif // Xyce_ADMS_SENSITIVITIES
393 .setDescription(
"forward bias depletion capacitance limit")
394 #ifdef Xyce_ADMS_SENSITIVITIES
395 .setAnalyticSensitivityAvailable(
true)
396 .setSensitivityFunctor(&modSens)
397 #endif // Xyce_ADMS_SENSITIVITIES
401 .setDescription(
"extrinsic b-e overlap capacitance")
402 #ifdef Xyce_ADMS_SENSITIVITIES
403 .setAnalyticSensitivityAvailable(
true)
404 .setSensitivityFunctor(&modSens)
405 #endif // Xyce_ADMS_SENSITIVITIES
409 .setDescription(
"zero-bias b-e depletion capacitance")
410 #ifdef Xyce_ADMS_SENSITIVITIES
411 .setAnalyticSensitivityAvailable(
true)
412 .setSensitivityFunctor(&modSens)
413 #endif // Xyce_ADMS_SENSITIVITIES
417 .setDescription(
"b-e built-in potential")
418 #ifdef Xyce_ADMS_SENSITIVITIES
419 .setAnalyticSensitivityAvailable(
true)
420 .setSensitivityFunctor(&modSens)
421 #endif // Xyce_ADMS_SENSITIVITIES
425 .setDescription(
"b-e grading coefficient")
426 #ifdef Xyce_ADMS_SENSITIVITIES
427 .setAnalyticSensitivityAvailable(
true)
428 .setSensitivityFunctor(&modSens)
429 #endif // Xyce_ADMS_SENSITIVITIES
433 .setDescription(
"b-e capacitance smoothing factor")
434 #ifdef Xyce_ADMS_SENSITIVITIES
435 .setAnalyticSensitivityAvailable(
true)
436 .setSensitivityFunctor(&modSens)
437 #endif // Xyce_ADMS_SENSITIVITIES
441 .setDescription(
"extrinsic b-c overlap capacitance")
442 #ifdef Xyce_ADMS_SENSITIVITIES
443 .setAnalyticSensitivityAvailable(
true)
444 .setSensitivityFunctor(&modSens)
445 #endif // Xyce_ADMS_SENSITIVITIES
449 .setDescription(
"zero-bias b-c depletion capacitance")
450 #ifdef Xyce_ADMS_SENSITIVITIES
451 .setAnalyticSensitivityAvailable(
true)
452 .setSensitivityFunctor(&modSens)
453 #endif // Xyce_ADMS_SENSITIVITIES
457 .setDescription(
"b-c built-in potential")
458 #ifdef Xyce_ADMS_SENSITIVITIES
459 .setAnalyticSensitivityAvailable(
true)
460 .setSensitivityFunctor(&modSens)
461 #endif // Xyce_ADMS_SENSITIVITIES
465 .setDescription(
"b-c grading coefficient")
466 #ifdef Xyce_ADMS_SENSITIVITIES
467 .setAnalyticSensitivityAvailable(
true)
468 .setSensitivityFunctor(&modSens)
469 #endif // Xyce_ADMS_SENSITIVITIES
473 .setDescription(
"b-c capacitance smoothing factor")
474 #ifdef Xyce_ADMS_SENSITIVITIES
475 .setAnalyticSensitivityAvailable(
true)
476 .setSensitivityFunctor(&modSens)
477 #endif // Xyce_ADMS_SENSITIVITIES
481 .setDescription(
"reach-through voltage for Cbc limiting")
482 #ifdef Xyce_ADMS_SENSITIVITIES
483 .setAnalyticSensitivityAvailable(
true)
484 .setSensitivityFunctor(&modSens)
485 #endif // Xyce_ADMS_SENSITIVITIES
489 .setDescription(
"smoothing parameter for reach-through")
490 #ifdef Xyce_ADMS_SENSITIVITIES
491 .setAnalyticSensitivityAvailable(
true)
492 .setSensitivityFunctor(&modSens)
493 #endif // Xyce_ADMS_SENSITIVITIES
497 .setDescription(
"epi charge parameter")
498 #ifdef Xyce_ADMS_SENSITIVITIES
499 .setAnalyticSensitivityAvailable(
true)
500 .setSensitivityFunctor(&modSens)
501 #endif // Xyce_ADMS_SENSITIVITIES
505 .setDescription(
"zero-bias extrinsic b-c depletion capacitance")
506 #ifdef Xyce_ADMS_SENSITIVITIES
507 .setAnalyticSensitivityAvailable(
true)
508 .setSensitivityFunctor(&modSens)
509 #endif // Xyce_ADMS_SENSITIVITIES
513 .setDescription(
"zero-bias extrinsic c-s depletion capacitance")
514 #ifdef Xyce_ADMS_SENSITIVITIES
515 .setAnalyticSensitivityAvailable(
true)
516 .setSensitivityFunctor(&modSens)
517 #endif // Xyce_ADMS_SENSITIVITIES
521 .setDescription(
"c-s built-in potential")
522 #ifdef Xyce_ADMS_SENSITIVITIES
523 .setAnalyticSensitivityAvailable(
true)
524 .setSensitivityFunctor(&modSens)
525 #endif // Xyce_ADMS_SENSITIVITIES
529 .setDescription(
"c-s grading coefficient")
530 #ifdef Xyce_ADMS_SENSITIVITIES
531 .setAnalyticSensitivityAvailable(
true)
532 .setSensitivityFunctor(&modSens)
533 #endif // Xyce_ADMS_SENSITIVITIES
537 .setDescription(
"c-s capacitance smoothing factor")
538 #ifdef Xyce_ADMS_SENSITIVITIES
539 .setAnalyticSensitivityAvailable(
true)
540 .setSensitivityFunctor(&modSens)
541 #endif // Xyce_ADMS_SENSITIVITIES
545 .setDescription(
"extrinsic c-s overlap capacitance")
546 #ifdef Xyce_ADMS_SENSITIVITIES
547 .setAnalyticSensitivityAvailable(
true)
548 .setSensitivityFunctor(&modSens)
549 #endif // Xyce_ADMS_SENSITIVITIES
553 .setDescription(
"ideal b-e saturation current")
554 #ifdef Xyce_ADMS_SENSITIVITIES
555 .setAnalyticSensitivityAvailable(
true)
556 .setSensitivityFunctor(&modSens)
557 #endif // Xyce_ADMS_SENSITIVITIES
561 .setDescription(
"partitioning of Ibe/Ibex and Qbe/Qbex")
562 #ifdef Xyce_ADMS_SENSITIVITIES
563 .setAnalyticSensitivityAvailable(
true)
564 .setSensitivityFunctor(&modSens)
565 #endif // Xyce_ADMS_SENSITIVITIES
569 .setDescription(
"ideal b-e emission coefficient")
570 #ifdef Xyce_ADMS_SENSITIVITIES
571 .setAnalyticSensitivityAvailable(
true)
572 .setSensitivityFunctor(&modSens)
573 #endif // Xyce_ADMS_SENSITIVITIES
577 .setDescription(
"ideal b-e quasi-neutral base recombination parameter")
578 #ifdef Xyce_ADMS_SENSITIVITIES
579 .setAnalyticSensitivityAvailable(
true)
580 .setSensitivityFunctor(&modSens)
581 #endif // Xyce_ADMS_SENSITIVITIES
585 .setDescription(
"non-ideal b-e saturation current")
586 #ifdef Xyce_ADMS_SENSITIVITIES
587 .setAnalyticSensitivityAvailable(
true)
588 .setSensitivityFunctor(&modSens)
589 #endif // Xyce_ADMS_SENSITIVITIES
593 .setDescription(
"non-ideal b-e emission coefficient")
594 #ifdef Xyce_ADMS_SENSITIVITIES
595 .setAnalyticSensitivityAvailable(
true)
596 .setSensitivityFunctor(&modSens)
597 #endif // Xyce_ADMS_SENSITIVITIES
601 .setDescription(
"ideal b-c saturation current")
602 #ifdef Xyce_ADMS_SENSITIVITIES
603 .setAnalyticSensitivityAvailable(
true)
604 .setSensitivityFunctor(&modSens)
605 #endif // Xyce_ADMS_SENSITIVITIES
609 .setDescription(
"ideal b-c emission coefficient")
610 #ifdef Xyce_ADMS_SENSITIVITIES
611 .setAnalyticSensitivityAvailable(
true)
612 .setSensitivityFunctor(&modSens)
613 #endif // Xyce_ADMS_SENSITIVITIES
617 .setDescription(
"non-ideal b-c saturation current")
618 #ifdef Xyce_ADMS_SENSITIVITIES
619 .setAnalyticSensitivityAvailable(
true)
620 .setSensitivityFunctor(&modSens)
621 #endif // Xyce_ADMS_SENSITIVITIES
625 .setDescription(
"non-ideal b-c emission coefficient")
626 #ifdef Xyce_ADMS_SENSITIVITIES
627 .setAnalyticSensitivityAvailable(
true)
628 .setSensitivityFunctor(&modSens)
629 #endif // Xyce_ADMS_SENSITIVITIES
633 .setDescription(
"ideal parasitic b-e saturation current")
634 #ifdef Xyce_ADMS_SENSITIVITIES
635 .setAnalyticSensitivityAvailable(
true)
636 .setSensitivityFunctor(&modSens)
637 #endif // Xyce_ADMS_SENSITIVITIES
641 .setDescription(
"non-ideal parasitic b-e saturation current")
642 #ifdef Xyce_ADMS_SENSITIVITIES
643 .setAnalyticSensitivityAvailable(
true)
644 .setSensitivityFunctor(&modSens)
645 #endif // Xyce_ADMS_SENSITIVITIES
649 .setDescription(
"ideal parasitic b-c saturation current")
650 #ifdef Xyce_ADMS_SENSITIVITIES
651 .setAnalyticSensitivityAvailable(
true)
652 .setSensitivityFunctor(&modSens)
653 #endif // Xyce_ADMS_SENSITIVITIES
657 .setDescription(
"ideal parasitic b-c emission coefficient")
658 #ifdef Xyce_ADMS_SENSITIVITIES
659 .setAnalyticSensitivityAvailable(
true)
660 .setSensitivityFunctor(&modSens)
661 #endif // Xyce_ADMS_SENSITIVITIES
665 .setDescription(
"non-ideal parasitic b-c saturation current")
666 #ifdef Xyce_ADMS_SENSITIVITIES
667 .setAnalyticSensitivityAvailable(
true)
668 .setSensitivityFunctor(&modSens)
669 #endif // Xyce_ADMS_SENSITIVITIES
673 .setDescription(
"non-ideal parasitic b-c emission coefficient")
674 #ifdef Xyce_ADMS_SENSITIVITIES
675 .setAnalyticSensitivityAvailable(
true)
676 .setSensitivityFunctor(&modSens)
677 #endif // Xyce_ADMS_SENSITIVITIES
681 .setDescription(
"forward Early voltage (zero=infinite)")
682 #ifdef Xyce_ADMS_SENSITIVITIES
683 .setAnalyticSensitivityAvailable(
true)
684 .setSensitivityFunctor(&modSens)
685 #endif // Xyce_ADMS_SENSITIVITIES
689 .setDescription(
"reverse Early voltage (zero=infinite)")
690 #ifdef Xyce_ADMS_SENSITIVITIES
691 .setAnalyticSensitivityAvailable(
true)
692 .setSensitivityFunctor(&modSens)
693 #endif // Xyce_ADMS_SENSITIVITIES
697 .setDescription(
"forward knee current (zero=infinite)")
698 #ifdef Xyce_ADMS_SENSITIVITIES
699 .setAnalyticSensitivityAvailable(
true)
700 .setSensitivityFunctor(&modSens)
701 #endif // Xyce_ADMS_SENSITIVITIES
705 .setDescription(
"high current beta roll-off parameter")
706 #ifdef Xyce_ADMS_SENSITIVITIES
707 .setAnalyticSensitivityAvailable(
true)
708 .setSensitivityFunctor(&modSens)
709 #endif // Xyce_ADMS_SENSITIVITIES
713 .setDescription(
"reverse knee current (zero=infinite)")
714 #ifdef Xyce_ADMS_SENSITIVITIES
715 .setAnalyticSensitivityAvailable(
true)
716 .setSensitivityFunctor(&modSens)
717 #endif // Xyce_ADMS_SENSITIVITIES
721 .setDescription(
"parasitic knee current (zero=infinite)")
722 #ifdef Xyce_ADMS_SENSITIVITIES
723 .setAnalyticSensitivityAvailable(
true)
724 .setSensitivityFunctor(&modSens)
725 #endif // Xyce_ADMS_SENSITIVITIES
729 .setDescription(
"forward transit time")
730 #ifdef Xyce_ADMS_SENSITIVITIES
731 .setAnalyticSensitivityAvailable(
true)
732 .setSensitivityFunctor(&modSens)
733 #endif // Xyce_ADMS_SENSITIVITIES
737 .setDescription(
"variation of tf with base-width modulation")
738 #ifdef Xyce_ADMS_SENSITIVITIES
739 .setAnalyticSensitivityAvailable(
true)
740 .setSensitivityFunctor(&modSens)
741 #endif // Xyce_ADMS_SENSITIVITIES
745 .setDescription(
"tf bias dependence coefficient")
746 #ifdef Xyce_ADMS_SENSITIVITIES
747 .setAnalyticSensitivityAvailable(
true)
748 .setSensitivityFunctor(&modSens)
749 #endif // Xyce_ADMS_SENSITIVITIES
753 .setDescription(
"tf coefficient of Vbci dependence")
754 #ifdef Xyce_ADMS_SENSITIVITIES
755 .setAnalyticSensitivityAvailable(
true)
756 .setSensitivityFunctor(&modSens)
757 #endif // Xyce_ADMS_SENSITIVITIES
761 .setDescription(
"tf coefficient of Ic dependence")
762 #ifdef Xyce_ADMS_SENSITIVITIES
763 .setAnalyticSensitivityAvailable(
true)
764 .setSensitivityFunctor(&modSens)
765 #endif // Xyce_ADMS_SENSITIVITIES
769 .setDescription(
"reverse transit time")
770 #ifdef Xyce_ADMS_SENSITIVITIES
771 .setAnalyticSensitivityAvailable(
true)
772 .setSensitivityFunctor(&modSens)
773 #endif // Xyce_ADMS_SENSITIVITIES
777 .setDescription(
"forward excess-phase delay time")
778 #ifdef Xyce_ADMS_SENSITIVITIES
779 .setAnalyticSensitivityAvailable(
true)
780 .setSensitivityFunctor(&modSens)
781 #endif // Xyce_ADMS_SENSITIVITIES
785 .setDescription(
"b-c weak avalanche parameter 1")
786 #ifdef Xyce_ADMS_SENSITIVITIES
787 .setAnalyticSensitivityAvailable(
true)
788 .setSensitivityFunctor(&modSens)
789 #endif // Xyce_ADMS_SENSITIVITIES
793 .setDescription(
"b-c weak avalanche parameter 2")
794 #ifdef Xyce_ADMS_SENSITIVITIES
795 .setAnalyticSensitivityAvailable(
true)
796 .setSensitivityFunctor(&modSens)
797 #endif // Xyce_ADMS_SENSITIVITIES
801 .setDescription(
"bx-cx weak avalanche parameter 1")
802 #ifdef Xyce_ADMS_SENSITIVITIES
803 .setAnalyticSensitivityAvailable(
true)
804 .setSensitivityFunctor(&modSens)
805 #endif // Xyce_ADMS_SENSITIVITIES
809 .setDescription(
"bx-cx weak avalanche parameter 2")
810 #ifdef Xyce_ADMS_SENSITIVITIES
811 .setAnalyticSensitivityAvailable(
true)
812 .setSensitivityFunctor(&modSens)
813 #endif // Xyce_ADMS_SENSITIVITIES
817 .setDescription(
"bx-cx grading coefficient for avalanche")
818 #ifdef Xyce_ADMS_SENSITIVITIES
819 .setAnalyticSensitivityAvailable(
true)
820 .setSensitivityFunctor(&modSens)
821 #endif // Xyce_ADMS_SENSITIVITIES
825 .setDescription(
"b-e breakdown voltage")
826 #ifdef Xyce_ADMS_SENSITIVITIES
827 .setAnalyticSensitivityAvailable(
true)
828 .setSensitivityFunctor(&modSens)
829 #endif // Xyce_ADMS_SENSITIVITIES
833 .setDescription(
"b-e breakdown emission coefficient")
834 #ifdef Xyce_ADMS_SENSITIVITIES
835 .setAnalyticSensitivityAvailable(
true)
836 .setSensitivityFunctor(&modSens)
837 #endif // Xyce_ADMS_SENSITIVITIES
841 .setDescription(
"b-e breakdown current")
842 #ifdef Xyce_ADMS_SENSITIVITIES
843 .setAnalyticSensitivityAvailable(
true)
844 .setSensitivityFunctor(&modSens)
845 #endif // Xyce_ADMS_SENSITIVITIES
849 .setDescription(
"linear temperature coefficient of vbbe")
850 #ifdef Xyce_ADMS_SENSITIVITIES
851 .setAnalyticSensitivityAvailable(
true)
852 .setSensitivityFunctor(&modSens)
853 #endif // Xyce_ADMS_SENSITIVITIES
857 .setDescription(
"quadratic temperature coefficient of vbbe")
858 #ifdef Xyce_ADMS_SENSITIVITIES
859 .setAnalyticSensitivityAvailable(
true)
860 .setSensitivityFunctor(&modSens)
861 #endif // Xyce_ADMS_SENSITIVITIES
865 .setDescription(
"temperature coefficient of nbbe")
866 #ifdef Xyce_ADMS_SENSITIVITIES
867 .setAnalyticSensitivityAvailable(
true)
868 .setSensitivityFunctor(&modSens)
869 #endif // Xyce_ADMS_SENSITIVITIES
873 .setDescription(
"SiGe base current kink voltage")
874 #ifdef Xyce_ADMS_SENSITIVITIES
875 .setAnalyticSensitivityAvailable(
true)
876 .setSensitivityFunctor(&modSens)
877 #endif // Xyce_ADMS_SENSITIVITIES
881 .setDescription(
"SiGe base current kink current reference")
882 #ifdef Xyce_ADMS_SENSITIVITIES
883 .setAnalyticSensitivityAvailable(
true)
884 .setSensitivityFunctor(&modSens)
885 #endif // Xyce_ADMS_SENSITIVITIES
889 .setDescription(
"SiGe base current kink exponent")
890 #ifdef Xyce_ADMS_SENSITIVITIES
891 .setAnalyticSensitivityAvailable(
true)
892 .setSensitivityFunctor(&modSens)
893 #endif // Xyce_ADMS_SENSITIVITIES
897 .setDescription(
"SiGe base current kink current factor")
898 #ifdef Xyce_ADMS_SENSITIVITIES
899 .setAnalyticSensitivityAvailable(
true)
900 .setSensitivityFunctor(&modSens)
901 #endif // Xyce_ADMS_SENSITIVITIES
905 .setDescription(
"b-e flicker noise constant")
906 #ifdef Xyce_ADMS_SENSITIVITIES
907 .setAnalyticSensitivityAvailable(
true)
908 .setSensitivityFunctor(&modSens)
909 #endif // Xyce_ADMS_SENSITIVITIES
913 .setDescription(
"b-e flicker noise current exponent")
914 #ifdef Xyce_ADMS_SENSITIVITIES
915 .setAnalyticSensitivityAvailable(
true)
916 .setSensitivityFunctor(&modSens)
917 #endif // Xyce_ADMS_SENSITIVITIES
921 .setDescription(
"b-e flicker noise 1/f exponent")
922 #ifdef Xyce_ADMS_SENSITIVITIES
923 .setAnalyticSensitivityAvailable(
true)
924 .setSensitivityFunctor(&modSens)
925 #endif // Xyce_ADMS_SENSITIVITIES
929 .setDescription(
"thermal resistance")
930 #ifdef Xyce_ADMS_SENSITIVITIES
931 .setAnalyticSensitivityAvailable(
true)
932 .setSensitivityFunctor(&modSens)
933 #endif // Xyce_ADMS_SENSITIVITIES
937 .setDescription(
"thermal capacitance")
938 #ifdef Xyce_ADMS_SENSITIVITIES
939 .setAnalyticSensitivityAvailable(
true)
940 .setSensitivityFunctor(&modSens)
941 #endif // Xyce_ADMS_SENSITIVITIES
945 .setDescription(
"temperature exponent of re")
946 #ifdef Xyce_ADMS_SENSITIVITIES
947 .setAnalyticSensitivityAvailable(
true)
948 .setSensitivityFunctor(&modSens)
949 #endif // Xyce_ADMS_SENSITIVITIES
953 .setDescription(
"temperature exponent of rbx and rbi")
954 #ifdef Xyce_ADMS_SENSITIVITIES
955 .setAnalyticSensitivityAvailable(
true)
956 .setSensitivityFunctor(&modSens)
957 #endif // Xyce_ADMS_SENSITIVITIES
961 .setDescription(
"temperature exponent of rbi (overrides xrb)")
962 #ifdef Xyce_ADMS_SENSITIVITIES
963 .setAnalyticSensitivityAvailable(
true)
964 .setSensitivityFunctor(&modSens)
965 #endif // Xyce_ADMS_SENSITIVITIES
969 .setDescription(
"temperature exponent of rbx (overrides xrb)")
970 #ifdef Xyce_ADMS_SENSITIVITIES
971 .setAnalyticSensitivityAvailable(
true)
972 .setSensitivityFunctor(&modSens)
973 #endif // Xyce_ADMS_SENSITIVITIES
977 .setDescription(
"temperature exponent of rci and rcx and rbp")
978 #ifdef Xyce_ADMS_SENSITIVITIES
979 .setAnalyticSensitivityAvailable(
true)
980 .setSensitivityFunctor(&modSens)
981 #endif // Xyce_ADMS_SENSITIVITIES
985 .setDescription(
"temperature exponent of rci (overrides xrc)")
986 #ifdef Xyce_ADMS_SENSITIVITIES
987 .setAnalyticSensitivityAvailable(
true)
988 .setSensitivityFunctor(&modSens)
989 #endif // Xyce_ADMS_SENSITIVITIES
993 .setDescription(
"temperature exponent of rcx (overrides xrc)")
994 #ifdef Xyce_ADMS_SENSITIVITIES
995 .setAnalyticSensitivityAvailable(
true)
996 .setSensitivityFunctor(&modSens)
997 #endif // Xyce_ADMS_SENSITIVITIES
1001 .setDescription(
"temperature exponent of rbp (overrides xrc)")
1002 #ifdef Xyce_ADMS_SENSITIVITIES
1003 .setAnalyticSensitivityAvailable(
true)
1004 .setSensitivityFunctor(&modSens)
1005 #endif // Xyce_ADMS_SENSITIVITIES
1009 .setDescription(
"temperature exponent of rs")
1010 #ifdef Xyce_ADMS_SENSITIVITIES
1011 .setAnalyticSensitivityAvailable(
true)
1012 .setSensitivityFunctor(&modSens)
1013 #endif // Xyce_ADMS_SENSITIVITIES
1017 .setDescription(
"temperature exponent of vo")
1018 #ifdef Xyce_ADMS_SENSITIVITIES
1019 .setAnalyticSensitivityAvailable(
true)
1020 .setSensitivityFunctor(&modSens)
1021 #endif // Xyce_ADMS_SENSITIVITIES
1025 .setDescription(
"activation energy for is")
1026 #ifdef Xyce_ADMS_SENSITIVITIES
1027 .setAnalyticSensitivityAvailable(
true)
1028 .setSensitivityFunctor(&modSens)
1029 #endif // Xyce_ADMS_SENSITIVITIES
1033 .setDescription(
"activation energy for ibei")
1034 #ifdef Xyce_ADMS_SENSITIVITIES
1035 .setAnalyticSensitivityAvailable(
true)
1036 .setSensitivityFunctor(&modSens)
1037 #endif // Xyce_ADMS_SENSITIVITIES
1041 .setDescription(
"activation energy for ibci and ibeip")
1042 #ifdef Xyce_ADMS_SENSITIVITIES
1043 .setAnalyticSensitivityAvailable(
true)
1044 .setSensitivityFunctor(&modSens)
1045 #endif // Xyce_ADMS_SENSITIVITIES
1049 .setDescription(
"activation energy for ibcip")
1050 #ifdef Xyce_ADMS_SENSITIVITIES
1051 .setAnalyticSensitivityAvailable(
true)
1052 .setSensitivityFunctor(&modSens)
1053 #endif // Xyce_ADMS_SENSITIVITIES
1057 .setDescription(
"activation energy for iben")
1058 #ifdef Xyce_ADMS_SENSITIVITIES
1059 .setAnalyticSensitivityAvailable(
true)
1060 .setSensitivityFunctor(&modSens)
1061 #endif // Xyce_ADMS_SENSITIVITIES
1065 .setDescription(
"activation energy for ibcn and ibenp")
1066 #ifdef Xyce_ADMS_SENSITIVITIES
1067 .setAnalyticSensitivityAvailable(
true)
1068 .setSensitivityFunctor(&modSens)
1069 #endif // Xyce_ADMS_SENSITIVITIES
1073 .setDescription(
"activation energy for ibcnp")
1074 #ifdef Xyce_ADMS_SENSITIVITIES
1075 .setAnalyticSensitivityAvailable(
true)
1076 .setSensitivityFunctor(&modSens)
1077 #endif // Xyce_ADMS_SENSITIVITIES
1081 .setDescription(
"activation energy for isp")
1082 #ifdef Xyce_ADMS_SENSITIVITIES
1083 .setAnalyticSensitivityAvailable(
true)
1084 .setSensitivityFunctor(&modSens)
1085 #endif // Xyce_ADMS_SENSITIVITIES
1089 .setDescription(
"delta activation energy for isrr")
1090 #ifdef Xyce_ADMS_SENSITIVITIES
1091 .setAnalyticSensitivityAvailable(
true)
1092 .setSensitivityFunctor(&modSens)
1093 #endif // Xyce_ADMS_SENSITIVITIES
1097 .setDescription(
"temperature exponent of is")
1098 #ifdef Xyce_ADMS_SENSITIVITIES
1099 .setAnalyticSensitivityAvailable(
true)
1100 .setSensitivityFunctor(&modSens)
1101 #endif // Xyce_ADMS_SENSITIVITIES
1105 .setDescription(
"temperature exponent of ibei, ibci, ibeip, ibcip")
1106 #ifdef Xyce_ADMS_SENSITIVITIES
1107 .setAnalyticSensitivityAvailable(
true)
1108 .setSensitivityFunctor(&modSens)
1109 #endif // Xyce_ADMS_SENSITIVITIES
1113 .setDescription(
"temperature exponent of iben, ibcn, ibenp, ibcnp")
1114 #ifdef Xyce_ADMS_SENSITIVITIES
1115 .setAnalyticSensitivityAvailable(
true)
1116 .setSensitivityFunctor(&modSens)
1117 #endif // Xyce_ADMS_SENSITIVITIES
1121 .setDescription(
"temperature exponent for isrr")
1122 #ifdef Xyce_ADMS_SENSITIVITIES
1123 .setAnalyticSensitivityAvailable(
true)
1124 .setSensitivityFunctor(&modSens)
1125 #endif // Xyce_ADMS_SENSITIVITIES
1129 .setDescription(
"temperature exponent of ikf")
1130 #ifdef Xyce_ADMS_SENSITIVITIES
1131 .setAnalyticSensitivityAvailable(
true)
1132 .setSensitivityFunctor(&modSens)
1133 #endif // Xyce_ADMS_SENSITIVITIES
1137 .setDescription(
"temperature exponent of avc2")
1138 #ifdef Xyce_ADMS_SENSITIVITIES
1139 .setAnalyticSensitivityAvailable(
true)
1140 .setSensitivityFunctor(&modSens)
1141 #endif // Xyce_ADMS_SENSITIVITIES
1145 .setDescription(
"temperature exponent of avcx2")
1146 #ifdef Xyce_ADMS_SENSITIVITIES
1147 .setAnalyticSensitivityAvailable(
true)
1148 .setSensitivityFunctor(&modSens)
1149 #endif // Xyce_ADMS_SENSITIVITIES
1153 .setDescription(
"temperature exponent of nf and nr")
1154 #ifdef Xyce_ADMS_SENSITIVITIES
1155 .setAnalyticSensitivityAvailable(
true)
1156 .setSensitivityFunctor(&modSens)
1157 #endif // Xyce_ADMS_SENSITIVITIES
1161 .setDescription(
"temperature exponent of vef")
1162 #ifdef Xyce_ADMS_SENSITIVITIES
1163 .setAnalyticSensitivityAvailable(
true)
1164 .setSensitivityFunctor(&modSens)
1165 #endif // Xyce_ADMS_SENSITIVITIES
1169 .setDescription(
"temperature exponent of ver")
1170 #ifdef Xyce_ADMS_SENSITIVITIES
1171 .setAnalyticSensitivityAvailable(
true)
1172 .setSensitivityFunctor(&modSens)
1173 #endif // Xyce_ADMS_SENSITIVITIES
1177 .setDescription(
"temperature exponent of rth")
1178 #ifdef Xyce_ADMS_SENSITIVITIES
1179 .setAnalyticSensitivityAvailable(
true)
1180 .setSensitivityFunctor(&modSens)
1181 #endif // Xyce_ADMS_SENSITIVITIES
1211 if ( (!((
m >0.0))) )
1213 UserError0(*
this) <<
"ADMSvbic13: Parameter m value " <<
m <<
" out of range ] 0.0, (+inf) [";
1219 UserError0(*
this) <<
"ADMSvbic13: Parameter sw_noise value " <<
sw_noise <<
" out of range [ 0, 1 ]";
1225 UserError0(*
this) <<
"ADMSvbic13: Parameter sw_et value " <<
sw_et <<
" out of range [ 0, 1 ]";
1256 :
DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
1274 f_bi_Equ_bx_Node_Ptr(0),
1275 f_bi_Equ_bp_Node_Ptr(0),
1276 f_ei_Equ_bx_Node_Ptr(0),
1277 f_ei_Equ_bp_Node_Ptr(0),
1278 f_bi_Equ_bi_Node_Ptr(0),
1279 f_bi_Equ_ci_Node_Ptr(0),
1280 f_ei_Equ_bi_Node_Ptr(0),
1281 f_ei_Equ_ci_Node_Ptr(0),
1282 f_bi_Equ_ei_Node_Ptr(0),
1283 f_ei_Equ_ei_Node_Ptr(0),
1284 f_bi_Equ_dt_Node_Ptr(0),
1285 f_ei_Equ_dt_Node_Ptr(0),
1286 f_bx_Equ_bi_Node_Ptr(0),
1287 f_bx_Equ_ei_Node_Ptr(0),
1288 f_bx_Equ_ci_Node_Ptr(0),
1289 f_bx_Equ_bx_Node_Ptr(0),
1290 f_bx_Equ_bp_Node_Ptr(0),
1291 f_bx_Equ_dt_Node_Ptr(0),
1292 f_ci_Equ_xf2_Node_Ptr(0),
1293 f_ei_Equ_xf2_Node_Ptr(0),
1294 f_ci_Equ_bi_Node_Ptr(0),
1295 f_ci_Equ_ei_Node_Ptr(0),
1296 f_ci_Equ_ci_Node_Ptr(0),
1297 f_ci_Equ_dt_Node_Ptr(0),
1298 f_bi_Equ_xf2_Node_Ptr(0),
1299 f_ci_Equ_bx_Node_Ptr(0),
1300 f_ci_Equ_bp_Node_Ptr(0),
1301 f_cx_Equ_bi_Node_Ptr(0),
1302 f_cx_Equ_ci_Node_Ptr(0),
1303 f_bx_Equ_cx_Node_Ptr(0),
1304 f_cx_Equ_bx_Node_Ptr(0),
1305 f_cx_Equ_cx_Node_Ptr(0),
1306 f_cx_Equ_dt_Node_Ptr(0),
1307 f_bx_Equ_c_Node_Ptr(0),
1308 f_cx_Equ_c_Node_Ptr(0),
1309 f_bp_Equ_bi_Node_Ptr(0),
1310 f_bp_Equ_ei_Node_Ptr(0),
1311 f_bp_Equ_ci_Node_Ptr(0),
1312 f_bp_Equ_bx_Node_Ptr(0),
1313 f_bp_Equ_bp_Node_Ptr(0),
1314 f_bp_Equ_dt_Node_Ptr(0),
1315 f_c_Equ_dt_Node_Ptr(0),
1316 f_c_Equ_c_Node_Ptr(0),
1317 f_c_Equ_cx_Node_Ptr(0),
1318 f_ci_Equ_cx_Node_Ptr(0),
1319 f_cx_Equ_ei_Node_Ptr(0),
1320 f_cx_Equ_bp_Node_Ptr(0),
1321 f_b_Equ_dt_Node_Ptr(0),
1322 f_b_Equ_b_Node_Ptr(0),
1323 f_b_Equ_bx_Node_Ptr(0),
1324 f_bx_Equ_b_Node_Ptr(0),
1325 f_e_Equ_dt_Node_Ptr(0),
1326 f_e_Equ_e_Node_Ptr(0),
1327 f_e_Equ_ei_Node_Ptr(0),
1328 f_ei_Equ_e_Node_Ptr(0),
1329 f_bp_Equ_cx_Node_Ptr(0),
1330 f_xf1_Equ_bi_Node_Ptr(0),
1331 f_xf1_Equ_ci_Node_Ptr(0),
1332 f_xf1_Equ_ei_Node_Ptr(0),
1333 f_xf1_Equ_dt_Node_Ptr(0),
1334 f_xf1_Equ_xf2_Node_Ptr(0),
1335 f_xf2_Equ_xf1_Node_Ptr(0),
1336 f_xf2_Equ_xf2_Node_Ptr(0),
1337 f_dt_Equ_dt_Node_Ptr(0),
1338 f_dt_Equ_bp_Node_Ptr(0),
1339 f_dt_Equ_cx_Node_Ptr(0),
1340 f_dt_Equ_e_Node_Ptr(0),
1341 f_dt_Equ_ei_Node_Ptr(0),
1342 f_dt_Equ_bx_Node_Ptr(0),
1343 f_dt_Equ_bi_Node_Ptr(0),
1344 f_dt_Equ_b_Node_Ptr(0),
1345 f_dt_Equ_ci_Node_Ptr(0),
1346 f_dt_Equ_c_Node_Ptr(0),
1347 f_dt_Equ_xf2_Node_Ptr(0),
1348 f_bi_Equ_cx_Node_Ptr(0),
1349 f_ei_Equ_cx_Node_Ptr(0),
1350 f_b_Equ_e_Node_Ptr(0),
1351 f_e_Equ_b_Node_Ptr(0),
1352 f_b_Equ_c_Node_Ptr(0),
1353 f_c_Equ_b_Node_Ptr(0),
1354 f_xf1_Equ_xf1_Node_Ptr(0),
1355 q_bi_Equ_bx_Node_Ptr(0),
1356 q_bi_Equ_bp_Node_Ptr(0),
1357 q_ei_Equ_bx_Node_Ptr(0),
1358 q_ei_Equ_bp_Node_Ptr(0),
1359 q_bi_Equ_bi_Node_Ptr(0),
1360 q_bi_Equ_ci_Node_Ptr(0),
1361 q_ei_Equ_bi_Node_Ptr(0),
1362 q_ei_Equ_ci_Node_Ptr(0),
1363 q_bi_Equ_ei_Node_Ptr(0),
1364 q_ei_Equ_ei_Node_Ptr(0),
1365 q_bi_Equ_dt_Node_Ptr(0),
1366 q_ei_Equ_dt_Node_Ptr(0),
1367 q_bx_Equ_bi_Node_Ptr(0),
1368 q_bx_Equ_ei_Node_Ptr(0),
1369 q_bx_Equ_ci_Node_Ptr(0),
1370 q_bx_Equ_bx_Node_Ptr(0),
1371 q_bx_Equ_bp_Node_Ptr(0),
1372 q_bx_Equ_dt_Node_Ptr(0),
1373 q_ci_Equ_xf2_Node_Ptr(0),
1374 q_ei_Equ_xf2_Node_Ptr(0),
1375 q_ci_Equ_bi_Node_Ptr(0),
1376 q_ci_Equ_ei_Node_Ptr(0),
1377 q_ci_Equ_ci_Node_Ptr(0),
1378 q_ci_Equ_dt_Node_Ptr(0),
1379 q_bi_Equ_xf2_Node_Ptr(0),
1380 q_ci_Equ_bx_Node_Ptr(0),
1381 q_ci_Equ_bp_Node_Ptr(0),
1382 q_cx_Equ_bi_Node_Ptr(0),
1383 q_cx_Equ_ci_Node_Ptr(0),
1384 q_bx_Equ_cx_Node_Ptr(0),
1385 q_cx_Equ_bx_Node_Ptr(0),
1386 q_cx_Equ_cx_Node_Ptr(0),
1387 q_cx_Equ_dt_Node_Ptr(0),
1388 q_bx_Equ_c_Node_Ptr(0),
1389 q_cx_Equ_c_Node_Ptr(0),
1390 q_bp_Equ_bi_Node_Ptr(0),
1391 q_bp_Equ_ei_Node_Ptr(0),
1392 q_bp_Equ_ci_Node_Ptr(0),
1393 q_bp_Equ_bx_Node_Ptr(0),
1394 q_bp_Equ_bp_Node_Ptr(0),
1395 q_bp_Equ_dt_Node_Ptr(0),
1396 q_c_Equ_dt_Node_Ptr(0),
1397 q_c_Equ_c_Node_Ptr(0),
1398 q_c_Equ_cx_Node_Ptr(0),
1399 q_ci_Equ_cx_Node_Ptr(0),
1400 q_cx_Equ_ei_Node_Ptr(0),
1401 q_cx_Equ_bp_Node_Ptr(0),
1402 q_b_Equ_dt_Node_Ptr(0),
1403 q_b_Equ_b_Node_Ptr(0),
1404 q_b_Equ_bx_Node_Ptr(0),
1405 q_bx_Equ_b_Node_Ptr(0),
1406 q_e_Equ_dt_Node_Ptr(0),
1407 q_e_Equ_e_Node_Ptr(0),
1408 q_e_Equ_ei_Node_Ptr(0),
1409 q_ei_Equ_e_Node_Ptr(0),
1410 q_bp_Equ_cx_Node_Ptr(0),
1411 q_xf1_Equ_bi_Node_Ptr(0),
1412 q_xf1_Equ_ci_Node_Ptr(0),
1413 q_xf1_Equ_ei_Node_Ptr(0),
1414 q_xf1_Equ_dt_Node_Ptr(0),
1415 q_xf1_Equ_xf2_Node_Ptr(0),
1416 q_xf2_Equ_xf1_Node_Ptr(0),
1417 q_xf2_Equ_xf2_Node_Ptr(0),
1418 q_dt_Equ_dt_Node_Ptr(0),
1419 q_dt_Equ_bp_Node_Ptr(0),
1420 q_dt_Equ_cx_Node_Ptr(0),
1421 q_dt_Equ_e_Node_Ptr(0),
1422 q_dt_Equ_ei_Node_Ptr(0),
1423 q_dt_Equ_bx_Node_Ptr(0),
1424 q_dt_Equ_bi_Node_Ptr(0),
1425 q_dt_Equ_b_Node_Ptr(0),
1426 q_dt_Equ_ci_Node_Ptr(0),
1427 q_dt_Equ_c_Node_Ptr(0),
1428 q_dt_Equ_xf2_Node_Ptr(0),
1429 q_bi_Equ_cx_Node_Ptr(0),
1430 q_ei_Equ_cx_Node_Ptr(0),
1431 q_b_Equ_e_Node_Ptr(0),
1432 q_e_Equ_b_Node_Ptr(0),
1433 q_b_Equ_c_Node_Ptr(0),
1434 q_c_Equ_b_Node_Ptr(0),
1435 q_xf1_Equ_xf1_Node_Ptr(0),
1436 admsTemperature(getDeviceOptions().temp.getImmutableValue<double>()),
1437 dtExternalNodeMode(false),
1438 cxExternalNodeMode(false),
1439 ciExternalNodeMode(false),
1440 bxExternalNodeMode(false),
1441 biExternalNodeMode(false),
1442 eiExternalNodeMode(false)
1461 if (instance_block.
numExtVars >= numExtVars+1)
1467 if (instance_block.
numExtVars >= numExtVars+2)
1473 if (instance_block.
numExtVars >= numExtVars+3)
1479 if (instance_block.
numExtVars >= numExtVars+4)
1485 if (instance_block.
numExtVars >= numExtVars+5)
1491 if (instance_block.
numExtVars >= numExtVars+6)
1611 for (
int i=0;i<mapSize;++i)
1616 for (
int j=0;j<rowSize;++j)
1629 if (!
given(
"XYCEADMSINSTTEMP"))
1665 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1667 Xyce::dout() << std::endl << section_divider << std::endl
1668 <<
"In ADMSvbic13::Instance::register LIDs\n\n"
1669 <<
"name = " <<
getName() << std::endl
1670 <<
"number of internal variables: " <<
numIntVars << std::endl
1671 <<
"number of external variables: " <<
numExtVars << std::endl;
1681 li_c = extLIDVecRef[i++];
1682 li_b = extLIDVecRef[i++];
1683 li_e = extLIDVecRef[i++];
1689 li_dt = extLIDVecRef[j++];
1691 li_dt = intLIDVecRef[i++];
1693 li_cx = extLIDVecRef[j++];
1695 li_cx = intLIDVecRef[i++];
1697 li_ci = extLIDVecRef[j++];
1699 li_ci = intLIDVecRef[i++];
1701 li_bx = extLIDVecRef[j++];
1703 li_bx = intLIDVecRef[i++];
1705 li_bi = extLIDVecRef[j++];
1707 li_bi = intLIDVecRef[i++];
1709 li_ei = extLIDVecRef[j++];
1711 li_ei = intLIDVecRef[i++];
1712 li_bp = intLIDVecRef[i++];
1713 li_xf1 = intLIDVecRef[i++];
1714 li_xf2 = intLIDVecRef[i++];
1717 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1719 Xyce::dout() <<
"\nSolution and RHS variables:\n";
1720 Xyce::dout() <<
"\nli_c = " <<
li_c << std::endl;
1721 Xyce::dout() <<
"\nli_b = " <<
li_b << std::endl;
1722 Xyce::dout() <<
"\nli_e = " <<
li_e << std::endl;
1723 Xyce::dout() <<
"\nli_dt = " <<
li_dt << std::endl;
1724 Xyce::dout() <<
"\nli_cx = " <<
li_cx << std::endl;
1725 Xyce::dout() <<
"\nli_ci = " <<
li_ci << std::endl;
1726 Xyce::dout() <<
"\nli_bx = " <<
li_bx << std::endl;
1727 Xyce::dout() <<
"\nli_bi = " <<
li_bi << std::endl;
1728 Xyce::dout() <<
"\nli_ei = " <<
li_ei << std::endl;
1729 Xyce::dout() <<
"\nli_bp = " <<
li_bp << std::endl;
1730 Xyce::dout() <<
"\nli_xf1 = " <<
li_xf1 << std::endl;
1731 Xyce::dout() <<
"\nli_xf2 = " <<
li_xf2 << std::endl;
1733 Xyce::dout() <<
"\nEnd of ADMSvbic13::Instance::register LIDs\n";
1734 Xyce::dout() << section_divider << std::endl;
1771 int numSta = staLIDVecRef.size();
1813 std::vector<int> & map=
jacMap;
1814 std::vector< std::vector<int> > & map2=
jacMap2;
2105 bool bsuccess =
true;
2139 bool bsuccess =
true;
2161 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
2163 Xyce::dout() << std::endl << subsection_divider << std::endl;
2164 Xyce::dout() <<
" In ADMSvbic13::Instance::updateIntermediateVars\n\n";
2165 Xyce::dout() <<
" name = " <<
getName() << std::endl;
2170 double Vbe_orig,Vbe_limited,Vbe_old;
2171 double Vbep_orig,Vbep_limited,Vbep_old;
2172 double Vbxcx_orig,Vbxcx_limited,Vbxcx_old;
2173 double Vbcx_orig,Vbcx_limited,Vbcx_old;
2174 double Vbci_orig,Vbci_limited,Vbci_old;
2175 double Vbex_orig,Vbex_limited,Vbex_old;
2176 double Vbei_orig,Vbei_limited,Vbei_old;
2177 double dt_et_orig,dt_et_limited,dt_et_old;
2193 for (
int i=0; i < 12+0 ; ++i)
2201 for (
int i=0; i < 18 ; ++i)
2306 Vbe_old = Vbe_limited;
2307 Vbep_old = Vbep_limited;
2308 Vbxcx_old = Vbxcx_limited;
2309 Vbcx_old = Vbcx_limited;
2310 Vbci_old = Vbci_limited;
2311 Vbex_old = Vbex_limited;
2312 Vbei_old = Vbei_limited;
2313 dt_et_old = dt_et_limited;
2628 std::cerr <<
"WARNING: ambient temperature is lower than allowed minimum" << std::endl;
2632 std::cerr <<
"WARNING: ambient temperature is higher than allowed maximum" << std::endl;
2649 tdevK = (tdevC+273.15);
2650 vtv = ((1.380662e-23*tdevK)/1.602189e-19);
2670 maxvIfi = (((
model_.
nf)*vtv.val())*log((1.0+(imaxMod/is_t.val()))));
2678 if (((is_t>0.0)&&(isrr_t>0.0)))
2686 maxvIri = (((
model_.
nr)*vtv.val())*log((1.0+(imaxMod/(is_t.val()*isrr_t.val())))));
2698 maxvIp = (((
model_.
nfp)*vtv.val())*log((1.0+(((imaxMod*imaxMod)*Iikp)/isp_t.val()))));
2702 maxvIp = (((
model_.
nfp)*vtv.val())*log((1.0+(imaxMod/isp_t.val()))));
2712 maxvIbei = (((
model_.
nei)*vtv.val())*log((1.0+(imaxMod/ibei_t.val()))));
2721 maxvIben = (((
model_.
nen)*vtv.val())*log((1.0+(imaxMod/iben_t.val()))));
2730 maxvIbci = (((
model_.
nci)*vtv.val())*log((1.0+(imaxMod/ibci_t.val()))));
2739 maxvIbcn = (((
model_.
ncn)*vtv.val())*log((1.0+(imaxMod/ibcn_t.val()))));
2748 maxvIbeip = (((
model_.
nci)*vtv.val())*log((1.0+(imaxMod/ibeip_t.val()))));
2757 maxvIbenp = (((
model_.
ncn)*vtv.val())*log((1.0+(imaxMod/ibenp_t.val()))));
2766 maxvIbcip = (((
model_.
ncip)*vtv.val())*log((1.0+(imaxMod/ibcip_t.val()))));
2775 maxvIbcnp = (((
model_.
ncnp)*vtv.val())*log((1.0+(imaxMod/ibcnp_t.val()))));
2787 Vbci_limited = Vbcx_limited = Vbxcx_limited = Vbep_limited = 0;
2788 Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
2802 if (dt_et_limited != dt_et_orig)
2832 tdevK = (tdevC+273.15);
2833 vtv = ((1.380662e-23*tdevK)/1.602189e-19);
2903 psiio = ((2.0*(vtv/rT))*log((exp((((0.5*(
model_.
pe))*rT)/vtv))-exp(((((-0.5)*(
model_.
pe))*rT)/vtv)))));
2904 psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-((
model_.
eaie)*(rT-1.0)));
2905 pe_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
2914 psiio = ((2.0*(vtv/rT))*log((exp((((0.5*(
model_.
pc))*rT)/vtv))-exp(((((-0.5)*(
model_.
pc))*rT)/vtv)))));
2915 psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-((
model_.
eaic)*(rT-1.0)));
2916 pc_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
2925 psiio = ((2.0*(vtv/rT))*log((exp((((0.5*(
model_.
ps))*rT)/vtv))-exp(((((-0.5)*(
model_.
ps))*rT)/vtv)))));
2926 psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-((
model_.
eais)*(rT-1.0)));
2927 ps_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
2936 ebbe_t = exp(((-vbbe_t)/(nbbe_t*vtv)));
2939 Gcx = adms_ternary_op<AdmsFadType>((rcx_t>1.0e-3),(1.0/rcx_t),1.0e3);
2940 Gci = adms_ternary_op<AdmsFadType>((rci_t>1.0e-3),(1.0/rci_t),1.0e3);
2941 Gbx = adms_ternary_op<AdmsFadType>((rbx_t>1.0e-3),(1.0/rbx_t),1.0e3);
2942 Gbi = adms_ternary_op<AdmsFadType>((rbi_t>1.0e-3),(1.0/rbi_t),1.0e3);
2943 Ge = adms_ternary_op<AdmsFadType>((re_t>1.0e-3),(1.0/re_t),1.0e3);
2944 Gbp = adms_ternary_op<AdmsFadType>((rbp_t>1.0e-3),(1.0/rbp_t),1.0e3);
2945 Gs = adms_ternary_op<AdmsFadType>((rs_t>1.0e-3),(1.0/rs_t),1.0e3);
2946 Gth = adms_ternary_op<AdmsFadType>((rth_t>1.0e-3),(1.0/rth_t),1.0e3);
2947 Ivef = adms_ternary_op<AdmsFadType>((vef_t>0.0),(1.0/vef_t),0.0);
2948 Iver = adms_ternary_op<AdmsFadType>((ver_t>0.0),(1.0/ver_t),0.0);
2949 Iikf = adms_ternary_op<AdmsFadType>((ikf_t>0.0),(1.0/ikf_t),0.0);
2950 Ivo = adms_ternary_op<AdmsFadType>((vo_t>0.0),(1.0/vo_t),0.0);
3103 qhi = ((dvh*(1.0+(((0.5*(
model_.
me))*dvh)/(pe_t*(1.0-(
model_.
fc))))))*pwq);
3107 qlo = ((pe_t*(1.0-pow((1.0-(Vbei/pe_t)),(1.0-(
model_.
me)))))/(1.0-(
model_.
me)));
3115 vl0 = ((-0.5)*(dv0+mv0));
3116 q0 = (((-pe_t)*pow((1.0-(vl0/pe_t)),(1.0-(
model_.
me))))/(1.0-(
model_.
me)));
3119 vl = ((0.5*(dv-mv))-dv0);
3120 qlo = (((-pe_t)*pow((1.0-(vl/pe_t)),(1.0-(
model_.
me))))/(1.0-(
model_.
me)));
3168 qlo = ((pc_t*(1.0-pow((1.0-(Vbci/pc_t)),(1.0-(
model_.
mc)))))/(1.0-(
model_.
mc)));
3181 qlo0 = ((pc_t*(1.0-pow((1.0-(vl0/pc_t)),(1.0-(
model_.
mc)))))/(1.0-(
model_.
mc)));
3185 qlo = ((pc_t*(1.0-pow((1.0-(vl/pc_t)),(1.0-(
model_.
mc)))))/(1.0-(
model_.
mc)));
3186 sel = (0.5*(vnl+1.0));
3188 cmx = pow((1.0+(dv0/pc_t)),(-(
model_.
mc)));
3189 cl = (((1.0-sel)*crt)+(sel*cmx));
3190 ql = (((Vbci-vl)+vl0)*cl);
3191 qdbc = ((ql+qlo)-qlo0);
3196 vl0 = ((-0.5)*(dv0+mv0));
3197 q0 = (((-pc_t)*pow((1.0-(vl0/pc_t)),(1.0-(
model_.
mc))))/(1.0-(
model_.
mc)));
3200 vl = ((0.5*(dv-mv))-dv0);
3201 qlo = (((-pc_t)*pow((1.0-(vl/pc_t)),(1.0-(
model_.
mc))))/(1.0-(
model_.
mc)));
3207 afac = (1.0/(nf_t*vtv));
3210 expi = exp((Vbei*afac));
3214 expi = (exp((maxvIfi*afac))*(1.0+((Vbei-maxvIfi)*afac)));
3216 Ifi = (is_t*(expi-1.0));
3217 afac = (1.0/(nr_t*vtv));
3220 expi = exp((Vbci*afac));
3224 expi = (exp((maxvIri*afac))*(1.0+((Vbci-maxvIri)*afac)));
3226 Iri = ((is_t*isrr_t)*(expi-1.0));
3227 q1z = (((1.0+(qdbe*Iver))+(qdbc*Ivef))-1.0e-4);
3228 q1 = ((0.5*(sqrt(((q1z*q1z)+1.0e-8))+q1z))+1.0e-4);
3229 q2 = ((Ifi*Iikf)+(Iri*Iikr));
3232 arg = (pow(q1,(1.0/(
model_.
nkf)))+(4.0*q2));
3239 qb = (0.5*(q1+pow(1.0e-8,(
model_.
nkf))));
3244 arg = (1.0+(4.0*q2));
3247 qb = ((0.5*q1)*(1.0+pow(arg,(
model_.
nkf))));
3251 qb = ((0.5*q1)*(1.0+pow(1.0e-8,(
model_.
nkf))));
3262 expi = exp((Vbep*afac));
3266 expi = (exp((maxvIp*afac))*(1.0+((Vbep-maxvIp)*afac)));
3270 expx = exp((Vbci*afac));
3274 expx = (exp((maxvIp*afac))*(1.0+((Vbci-maxvIp)*afac)));
3278 arg = (1.0+(4.0*q2p));
3281 qbp = (0.5*(1.0+sqrt(arg)));
3285 qbp = (0.5*(1.0+sqrt(1.0e-8)));
3296 if ((Vbei<maxvIbei))
3298 expi = exp((Vbei*afac));
3302 expi = (exp((maxvIbei*afac))*(1.0+((Vbei-maxvIbei)*afac)));
3305 if ((Vbei<maxvIben))
3307 expn = exp((Vbei*afac));
3311 expn = (exp((maxvIben*afac))*(1.0+((Vbei-maxvIben)*afac)));
3315 Ibe = (((ibei_t*(1.0+((
model_.
qnibeir)*(q1-1.0))))*(expi-1.0))+(iben_t*(expn-1.0)));
3319 Ibe = ((ibei_t*(expi-1.0))+(iben_t*(expn-1.0)));
3323 Bvbe = ((-vbbe_t)-Vbei);
3324 afac = (1.0/(nbbe_t*vtv));
3325 if ((Bvbe<maxvIbbe))
3327 expx = exp((Bvbe*afac));
3331 expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
3343 if ((Vbex<maxvIbei))
3345 expi = exp((Vbex*afac));
3349 expi = (exp((maxvIbei*afac))*(1.0+((Vbex-maxvIbei)*afac)));
3352 if ((Vbex<maxvIben))
3354 expn = exp((Vbex*afac));
3358 expn = (exp((maxvIben*afac))*(1.0+((Vbex-maxvIben)*afac)));
3360 Ibex = ((ibei_t*(expi-1.0))+(iben_t*(expn-1.0)));
3363 Bvbe = ((-vbbe_t)-Vbei);
3364 afac = (1.0/(nbbe_t*vtv));
3365 if ((Bvbe<maxvIbbe))
3367 expx = exp((Bvbe*afac));
3371 expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
3379 if ((Vbei<maxvIbei))
3381 expi = exp((Vbei*afac));
3385 expi = (exp((maxvIbei*afac))*(1.0+((Vbei-maxvIbei)*afac)));
3388 if ((Vbei<maxvIben))
3390 expn = exp((Vbei*afac));
3394 expn = (exp((maxvIben*afac))*(1.0+((Vbei-maxvIben)*afac)));
3402 Ibe = ((
model_.
wbe)*((ibei_t*(expi-1.0))+(iben_t*(expn-1.0))));
3406 Bvbe = ((-vbbe_t)-Vbei);
3407 afac = (1.0/(nbbe_t*vtv));
3408 if ((Bvbe<maxvIbbe))
3410 expx = exp((Bvbe*afac));
3414 expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
3419 if ((Vbex<maxvIbei))
3421 expi = exp((Vbex*afac));
3425 expi = (exp((maxvIbei*afac))*(1.0+((Vbex-maxvIbei)*afac)));
3428 if ((Vbex<maxvIben))
3430 expn = exp((Vbex*afac));
3434 expn = (exp((maxvIben*afac))*(1.0+((Vbex-maxvIben)*afac)));
3436 Ibex = ((1.0-(
model_.
wbe))*((ibei_t*(expi-1.0))+(iben_t*(expn-1.0))));
3439 Bvbe = ((-vbbe_t)-Vbei);
3440 afac = (1.0/(nbbe_t*vtv));
3441 if ((Bvbe<maxvIbbe))
3443 expx = exp((Bvbe*afac));
3447 expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
3454 if ((Vbci<maxvIbci))
3456 expi = exp((Vbci*afac));
3460 expi = (exp((maxvIbci*afac))*(1.0+((Vbci-maxvIbci)*afac)));
3463 if ((Vbci<maxvIbcn))
3465 expn = exp((Vbci*afac));
3469 expn = (exp((maxvIbcn*afac))*(1.0+((Vbci-maxvIbcn)*afac)));
3471 Ibcj = ((ibci_t*(expi-1.0))+(ibcn_t*(expn-1.0)));
3475 if ((Vbep<maxvIbeip))
3477 expi = exp((Vbep*afac));
3481 expi = (exp((maxvIbeip*afac))*(1.0+((Vbep-maxvIbeip)*afac)));
3484 if ((Vbep<maxvIbenp))
3486 expn = exp((Vbep*afac));
3490 expn = (exp((maxvIbenp*afac))*(1.0+((Vbep-maxvIbenp)*afac)));
3492 Ibep = ((ibeip_t*(expi-1.0))+(ibenp_t*(expn-1.0)));
3505 expi = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
3514 expx = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
3516 Kbci = sqrt((1.0+(gamm_t*expi)));
3517 Kbcx = sqrt((1.0+(gamm_t*expx)));
3519 rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
3520 Iohm = ((Vrci+(vtv*((Kbci-Kbcx)-log(rKp1))))*Gci);
3521 derf = ((Ivo*Iohm)/(Gci*(1.0+(((0.5*Ivo)*Ihrcf)*sqrt(((Vrci*Vrci)+0.01))))));
3522 Irci = (Iohm/sqrt((1+(derf*derf))));
3524 Irbi = ((Vrbi*qb)*Gbi);
3526 Irbp = ((Vrbp*qbp)*Gbp);
3538 vminm = pow((0.02*(avc2_t+1.0)),(1.0/(1.01-(
model_.
mc))));
3539 vl = ((0.5*(sqrt(((((pc_t-Vbci)-vminm)*((pc_t-Vbci)-vminm))+0.01))+((pc_t-Vbci)-vminm)))+vminm);
3540 mac1 = ((-avc2_t)*pow(vl,((
model_.
mc)-1.0)));
3547 expl = exp(VmaxExp);
3548 expi = (expl*(1.0+(mac1-VmaxExp)));
3553 Igc = (((Itxf-Itzr)-Ibcj)*avalf);
3570 vminm = pow((0.02*(avcx2_t+1.0)),(1.0/(1.01-(
model_.
mcx))));
3571 vl = ((0.5*(sqrt(((((-Vbxcx)-vminm)*((-Vbxcx)-vminm))+0.01))+((-Vbxcx)-vminm)))+vminm);
3572 mac1 = ((-avcx2_t)*pow(vl,((
model_.
mcx)-1.0)));
3579 expl = exp(VmaxExp);
3580 expi = (expl*(1.0+(mac1-VmaxExp)));
3585 Igcx = ((-Ircx)*avalf);
3596 VcbFac = (0.1+(0.5*(VcbFac+sqrt(((VcbFac*VcbFac)+1.0e-4)))));
3609 Ibc = ((Ibcj-Igc)-Ibk);
3610 power = (((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itxf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp));
3611 Ith = ((-
sw_et)*power);
3615 Ibe = (Ibe+(gminMod*Vbei));
3616 Ibex = (Ibex+(gminMod*Vbex));
3617 Ibep = (Ibep+(gminMod*Vbep));
3618 Ibc = (Ibc+(gminMod*Vbci));
3619 Igcx = (Igcx+(gminMod*Vbxcx));
3663 qhi = ((dvh*(1.0+(((0.5*(
model_.
me))*dvh)/(pe_t*(1.0-(
model_.
fc))))))*pwq);
3667 qlo = ((pe_t*(1.0-pow((1.0-(Vbex/pe_t)),(1.0-(
model_.
me)))))/(1.0-(
model_.
me)));
3675 vl0 = ((-0.5)*(dv0+mv0));
3676 q0 = (((-pe_t)*pow((1.0-(vl0/pe_t)),(1.0-(
model_.
me))))/(1.0-(
model_.
me)));
3679 vl = ((0.5*(dv-mv))-dv0);
3680 qlo = (((-pe_t)*pow((1.0-(vl/pe_t)),(1.0-(
model_.
me))))/(1.0-(
model_.
me)));
3728 qlo = ((pc_t*(1.0-pow((1.0-(Vbep/pc_t)),(1.0-(
model_.
mc)))))/(1.0-(
model_.
mc)));
3741 qlo0 = ((pc_t*(1.0-pow((1.0-(vl0/pc_t)),(1.0-(
model_.
mc)))))/(1.0-(
model_.
mc)));
3745 qlo = ((pc_t*(1.0-pow((1.0-(vl/pc_t)),(1.0-(
model_.
mc)))))/(1.0-(
model_.
mc)));
3746 sel = (0.5*(vnl+1.0));
3748 cmx = pow((1.0+(dv0/pc_t)),(-(
model_.
mc)));
3749 cl = (((1.0-sel)*crt)+(sel*cmx));
3750 ql = (((Vbep-vl)+vl0)*cl);
3751 qdbep = ((ql+qlo)-qlo0);
3756 vl0 = ((-0.5)*(dv0+mv0));
3757 q0 = (((-pc_t)*pow((1.0-(vl0/pc_t)),(1.0-(
model_.
mc))))/(1.0-(
model_.
mc)));
3760 vl = ((0.5*(dv-mv))-dv0);
3761 qlo = (((-pc_t)*pow((1.0-(vl/pc_t)),(1.0-(
model_.
mc))))/(1.0-(
model_.
mc)));
3762 qdbep = ((qlo+(pow((1.0-(
model_.
fc)),(-(
model_.
mc)))*((Vbep-vl)+vl0)))-q0);
3767 sgIf = ((Ifi>0.0)?1.0:0.0);
3768 rIf = ((Ifi*sgIf)*Iitf);
3769 mIf = (rIf/(rIf+1.0));
3770 arg = ((Vbci*Ivtf)/1.44);
3777 expi = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
3780 Qbe = (((cje_t*qdbe)*(
model_.
wbe))+((tff*Ifi)/qb));
3781 Qbex = ((cje_t*qdbex)*(1.0-(
model_.
wbe)));
3784 Qbep = ((cjep_t*qdbep)+((
model_.
tr)*Ifp));
3789 Qxf2 = (((
model_.
td)*Vxf2)*0.3333333333333333);
3968 contribTemp= (Qbex);
3988 contribTemp= (Qbcx);
3998 contribTemp= (Qbep);
4008 contribTemp= (Qbeo);
4025 contribTemp= (Qcth);
4035 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4037 Xyce::dout() <<
" probeVars[admsProbeID_V_xf2_GND] = "
4039 Xyce::dout() <<
" probeVars[admsProbeID_V_xf1_GND] = "
4041 Xyce::dout() <<
" probeVars[admsProbeID_V_bp_cx] = "
4043 Xyce::dout() <<
" probeVars[admsProbeID_V_e_ei] = "
4045 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_bi] = "
4047 Xyce::dout() <<
" probeVars[admsProbeID_V_b_bx] = "
4049 Xyce::dout() <<
" probeVars[admsProbeID_V_cx_ci] = "
4051 Xyce::dout() <<
" probeVars[admsProbeID_V_c_cx] = "
4053 Xyce::dout() <<
" probeVars[admsProbeID_V_b_c] = "
4055 Xyce::dout() <<
" probeVars[admsProbeID_V_b_e] = "
4057 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_bp] = "
4059 Xyce::dout() <<
" probeVars[admsProbeID_V_ci_ei] = "
4061 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_cx] = "
4063 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_cx] = "
4065 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ci] = "
4067 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_ei] = "
4069 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ei] = "
4071 Xyce::dout() <<
" probeVars[admsProbeID_Temp_dt_GND] = "
4073 Xyce::dout() <<
" staticContributions[admsNodeID_c] = "
4093 Xyce::dout() <<
" dynamicContributions[admsNodeID_c] = "
4113 Xyce::dout() <<
" Jdxp_static[admsNodeID_c] = "
4115 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c] = "
4117 Xyce::dout() <<
" staticContributions[admsNodeID_b] = "
4137 Xyce::dout() <<
" dynamicContributions[admsNodeID_b] = "
4157 Xyce::dout() <<
" Jdxp_static[admsNodeID_b] = "
4159 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_b] = "
4161 Xyce::dout() <<
" staticContributions[admsNodeID_e] = "
4181 Xyce::dout() <<
" dynamicContributions[admsNodeID_e] = "
4201 Xyce::dout() <<
" Jdxp_static[admsNodeID_e] = "
4203 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_e] = "
4205 Xyce::dout() <<
" staticContributions[admsNodeID_dt] = "
4225 Xyce::dout() <<
" dynamicContributions[admsNodeID_dt] = "
4245 Xyce::dout() <<
" Jdxp_static[admsNodeID_dt] = "
4247 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_dt] = "
4249 Xyce::dout() <<
" staticContributions[admsNodeID_cx] = "
4269 Xyce::dout() <<
" dynamicContributions[admsNodeID_cx] = "
4289 Xyce::dout() <<
" Jdxp_static[admsNodeID_cx] = "
4291 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_cx] = "
4293 Xyce::dout() <<
" staticContributions[admsNodeID_ci] = "
4313 Xyce::dout() <<
" dynamicContributions[admsNodeID_ci] = "
4333 Xyce::dout() <<
" Jdxp_static[admsNodeID_ci] = "
4335 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ci] = "
4337 Xyce::dout() <<
" staticContributions[admsNodeID_bx] = "
4357 Xyce::dout() <<
" dynamicContributions[admsNodeID_bx] = "
4377 Xyce::dout() <<
" Jdxp_static[admsNodeID_bx] = "
4379 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bx] = "
4381 Xyce::dout() <<
" staticContributions[admsNodeID_bi] = "
4401 Xyce::dout() <<
" dynamicContributions[admsNodeID_bi] = "
4421 Xyce::dout() <<
" Jdxp_static[admsNodeID_bi] = "
4423 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bi] = "
4425 Xyce::dout() <<
" staticContributions[admsNodeID_ei] = "
4445 Xyce::dout() <<
" dynamicContributions[admsNodeID_ei] = "
4465 Xyce::dout() <<
" Jdxp_static[admsNodeID_ei] = "
4467 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ei] = "
4469 Xyce::dout() <<
" staticContributions[admsNodeID_bp] = "
4489 Xyce::dout() <<
" dynamicContributions[admsNodeID_bp] = "
4509 Xyce::dout() <<
" Jdxp_static[admsNodeID_bp] = "
4511 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bp] = "
4513 Xyce::dout() <<
" staticContributions[admsNodeID_xf1] = "
4533 Xyce::dout() <<
" dynamicContributions[admsNodeID_xf1] = "
4553 Xyce::dout() <<
" Jdxp_static[admsNodeID_xf1] = "
4555 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_xf1] = "
4557 Xyce::dout() <<
" staticContributions[admsNodeID_xf2] = "
4577 Xyce::dout() <<
" dynamicContributions[admsNodeID_xf2] = "
4597 Xyce::dout() <<
" Jdxp_static[admsNodeID_xf2] = "
4599 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_xf2] = "
4603 Xyce::dout() <<
"This step was limited by this device." << std::endl;
4619 bool bsuccess =
true;
4622 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4624 Xyce::dout() << subsection_divider << std::endl;
4625 Xyce::dout() <<
"ADMSvbic13::Instance::loadDAEdFdx (" <<
getName() <<
"):" << std::endl;
4630 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4637 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4644 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4651 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4658 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4665 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4672 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4679 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4686 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4693 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4700 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4707 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4714 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4721 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4728 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4735 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4742 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4749 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4756 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4763 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4770 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4777 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4784 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4791 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4798 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4805 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4812 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4819 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4826 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4833 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4840 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4847 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4854 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4861 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4868 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4875 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4882 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4889 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4896 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4903 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4910 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4917 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4924 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4931 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4938 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4945 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4952 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4959 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4966 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4973 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4980 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4987 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4994 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5001 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5008 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5015 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5022 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5029 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5036 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5043 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5050 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5057 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5064 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5071 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5078 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5085 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5092 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5099 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5106 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5113 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5120 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5127 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5134 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5141 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5161 bool bsuccess =
true;
5164 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5166 Xyce::dout() << subsection_divider << std::endl;
5167 Xyce::dout() <<
"ADMSvbic13::Instance::loadDAEdQdx (" <<
getName() <<
"):" << std::endl;
5172 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5179 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5186 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5193 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5200 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5207 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5214 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5221 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5228 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5235 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5242 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5249 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5256 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5263 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5270 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5277 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5284 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5291 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5298 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5305 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5312 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5319 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5326 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5333 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5340 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5347 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5354 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5361 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5368 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5375 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5382 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5389 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5396 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5403 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5410 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5417 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5424 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5431 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5438 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5445 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5452 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5459 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5466 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5473 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5480 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5487 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5494 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5501 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5508 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
5554 UserError0(*
this) <<
"ADMSvbic13: Parameter type value " <<
type <<
" out of range [ (-1), 1 ] or ] 0, 0 [";
5560 UserError0(*
this) <<
"ADMSvbic13: Parameter VBICtype value " <<
VBICtype <<
" out of range [ (-1), 1 ] or in excluded range [ 0, 0 ]";
5566 UserError0(*
this) <<
"ADMSvbic13: Parameter scale value " <<
scale <<
" out of range ] 0.0, 1.0 ]";
5572 UserError0(*
this) <<
"ADMSvbic13: Parameter shrink value " <<
shrink <<
" out of range [ 0.0, 100.0 [";
5576 if ( (!((
tmin >=(-250.0) &&
tmin <=27.0 ))) )
5578 UserError0(*
this) <<
"ADMSvbic13: Parameter tmin value " <<
tmin <<
" out of range [ (-250.0), 27.0 ]";
5582 if ( (!((
tmax >=27.0 &&
tmax <=1000.0 ))) )
5584 UserError0(*
this) <<
"ADMSvbic13: Parameter tmax value " <<
tmax <<
" out of range [ 27.0, 1000.0 ]";
5588 if ( (!((
gmin >=0.0))) )
5590 UserError0(*
this) <<
"ADMSvbic13: Parameter gmin value " <<
gmin <<
" out of range [ 0.0, (+inf) [";
5596 UserError0(*
this) <<
"ADMSvbic13: Parameter pnjmaxi value " <<
pnjmaxi <<
" out of range ] 0.0, (+inf) [";
5600 if ( (!((
maxexp >0.0))) )
5602 UserError0(*
this) <<
"ADMSvbic13: Parameter maxexp value " <<
maxexp <<
" out of range ] 0.0, (+inf) [";
5606 if ( (!((
tnom >=(-250.0) &&
tnom <=1000.0 ))) )
5608 UserError0(*
this) <<
"ADMSvbic13: Parameter tnom value " <<
tnom <<
" out of range [ (-250.0), 1000.0 ]";
5614 UserError0(*
this) <<
"ADMSvbic13: Parameter tminclip value " <<
tminclip <<
" out of range [ (-250.0), 27.0 ]";
5620 UserError0(*
this) <<
"ADMSvbic13: Parameter tmaxclip value " <<
tmaxclip <<
" out of range [ 27.0, 1000.0 ]";
5624 if ( (!((
rcx >=0.0))) )
5626 UserError0(*
this) <<
"ADMSvbic13: Parameter rcx value " <<
rcx <<
" out of range [ 0.0, (+inf) [";
5630 if ( (!((
rci >=0.0))) )
5632 UserError0(*
this) <<
"ADMSvbic13: Parameter rci value " <<
rci <<
" out of range [ 0.0, (+inf) [";
5636 if ( (!((
vo >=0.0))) )
5638 UserError0(*
this) <<
"ADMSvbic13: Parameter vo value " <<
vo <<
" out of range [ 0.0, (+inf) [";
5642 if ( (!((
gamm >=0.0))) )
5644 UserError0(*
this) <<
"ADMSvbic13: Parameter gamm value " <<
gamm <<
" out of range [ 0.0, (+inf) [";
5648 if ( (!((
hrcf >=0.0))) )
5650 UserError0(*
this) <<
"ADMSvbic13: Parameter hrcf value " <<
hrcf <<
" out of range [ 0.0, (+inf) [";
5654 if ( (!((
rbx >=0.0))) )
5656 UserError0(*
this) <<
"ADMSvbic13: Parameter rbx value " <<
rbx <<
" out of range [ 0.0, (+inf) [";
5660 if ( (!((
rbi >=0.0))) )
5662 UserError0(*
this) <<
"ADMSvbic13: Parameter rbi value " <<
rbi <<
" out of range [ 0.0, (+inf) [";
5666 if ( (!((
re >=0.0))) )
5668 UserError0(*
this) <<
"ADMSvbic13: Parameter re value " <<
re <<
" out of range [ 0.0, (+inf) [";
5672 if ( (!((
rs >=0.0))) )
5674 UserError0(*
this) <<
"ADMSvbic13: Parameter rs value " <<
rs <<
" out of range [ 0.0, (+inf) [";
5678 if ( (!((
rbp >=0.0))) )
5680 UserError0(*
this) <<
"ADMSvbic13: Parameter rbp value " <<
rbp <<
" out of range [ 0.0, (+inf) [";
5684 if ( (!((
is >0.0))) )
5686 UserError0(*
this) <<
"ADMSvbic13: Parameter is value " <<
is <<
" out of range ] 0.0, (+inf) [";
5690 if ( (!((
isrr >0.0))) )
5692 UserError0(*
this) <<
"ADMSvbic13: Parameter isrr value " <<
isrr <<
" out of range ] 0.0, (+inf) [";
5696 if ( (!((
nf >0.0))) )
5698 UserError0(*
this) <<
"ADMSvbic13: Parameter nf value " <<
nf <<
" out of range ] 0.0, (+inf) [";
5702 if ( (!((
nr >0.0))) )
5704 UserError0(*
this) <<
"ADMSvbic13: Parameter nr value " <<
nr <<
" out of range ] 0.0, (+inf) [";
5708 if ( (!((
qbm >=0 &&
qbm <=1 ))) )
5710 UserError0(*
this) <<
"ADMSvbic13: Parameter qbm value " <<
qbm <<
" out of range [ 0, 1 ]";
5714 if ( (!((
isp >=0.0))) )
5716 UserError0(*
this) <<
"ADMSvbic13: Parameter isp value " <<
isp <<
" out of range [ 0.0, (+inf) [";
5720 if ( (!((
wsp >=0.0 &&
wsp <=1.0 ))) )
5722 UserError0(*
this) <<
"ADMSvbic13: Parameter wsp value " <<
wsp <<
" out of range [ 0.0, 1.0 ]";
5726 if ( (!((
nfp >0.0))) )
5728 UserError0(*
this) <<
"ADMSvbic13: Parameter nfp value " <<
nfp <<
" out of range ] 0.0, (+inf) [";
5732 if ( (!((
fc >=0.0 &&
fc <1.0 ))) )
5734 UserError0(*
this) <<
"ADMSvbic13: Parameter fc value " <<
fc <<
" out of range [ 0.0, 1.0 [";
5738 if ( (!((
cbeo >=0.0))) )
5740 UserError0(*
this) <<
"ADMSvbic13: Parameter cbeo value " <<
cbeo <<
" out of range [ 0.0, (+inf) [";
5744 if ( (!((
cje >=0.0))) )
5746 UserError0(*
this) <<
"ADMSvbic13: Parameter cje value " <<
cje <<
" out of range [ 0.0, (+inf) [";
5750 if ( (!((
pe >0.0))) )
5752 UserError0(*
this) <<
"ADMSvbic13: Parameter pe value " <<
pe <<
" out of range ] 0.0, (+inf) [";
5756 if ( (!((
me >0.0 &&
me <=1.0 ))) )
5758 UserError0(*
this) <<
"ADMSvbic13: Parameter me value " <<
me <<
" out of range ] 0.0, 1.0 ]";
5762 if ( (!((
cbco >=0.0))) )
5764 UserError0(*
this) <<
"ADMSvbic13: Parameter cbco value " <<
cbco <<
" out of range [ 0.0, (+inf) [";
5768 if ( (!((
cjc >=0.0))) )
5770 UserError0(*
this) <<
"ADMSvbic13: Parameter cjc value " <<
cjc <<
" out of range [ 0.0, (+inf) [";
5774 if ( (!((
pc >0.0))) )
5776 UserError0(*
this) <<
"ADMSvbic13: Parameter pc value " <<
pc <<
" out of range ] 0.0, (+inf) [";
5780 if ( (!((
mc >0.0 &&
mc <=1.0 ))) )
5782 UserError0(*
this) <<
"ADMSvbic13: Parameter mc value " <<
mc <<
" out of range ] 0.0, 1.0 ]";
5786 if ( (!((
vrt >=0.0))) )
5788 UserError0(*
this) <<
"ADMSvbic13: Parameter vrt value " <<
vrt <<
" out of range [ 0.0, (+inf) [";
5792 if ( (!((
art >0.0))) )
5794 UserError0(*
this) <<
"ADMSvbic13: Parameter art value " <<
art <<
" out of range ] 0.0, (+inf) [";
5798 if ( (!((
qco >=0.0))) )
5800 UserError0(*
this) <<
"ADMSvbic13: Parameter qco value " <<
qco <<
" out of range [ 0.0, (+inf) [";
5804 if ( (!((
cjep >=0.0))) )
5806 UserError0(*
this) <<
"ADMSvbic13: Parameter cjep value " <<
cjep <<
" out of range [ 0.0, (+inf) [";
5810 if ( (!((
cjcp >=0.0))) )
5812 UserError0(*
this) <<
"ADMSvbic13: Parameter cjcp value " <<
cjcp <<
" out of range [ 0.0, (+inf) [";
5816 if ( (!((
ps >0.0))) )
5818 UserError0(*
this) <<
"ADMSvbic13: Parameter ps value " <<
ps <<
" out of range ] 0.0, (+inf) [";
5822 if ( (!((
ms >0.0 &&
ms <=1.0 ))) )
5824 UserError0(*
this) <<
"ADMSvbic13: Parameter ms value " <<
ms <<
" out of range ] 0.0, 1.0 ]";
5828 if ( (!((
ccso >=0.0))) )
5830 UserError0(*
this) <<
"ADMSvbic13: Parameter ccso value " <<
ccso <<
" out of range [ 0.0, (+inf) [";
5834 if ( (!((
ibei >=0.0))) )
5836 UserError0(*
this) <<
"ADMSvbic13: Parameter ibei value " <<
ibei <<
" out of range [ 0.0, (+inf) [";
5840 if ( (!((
wbe >=0.0 &&
wbe <=1.0 ))) )
5842 UserError0(*
this) <<
"ADMSvbic13: Parameter wbe value " <<
wbe <<
" out of range [ 0.0, 1.0 ]";
5846 if ( (!((
nei >0.0))) )
5848 UserError0(*
this) <<
"ADMSvbic13: Parameter nei value " <<
nei <<
" out of range ] 0.0, (+inf) [";
5854 UserError0(*
this) <<
"ADMSvbic13: Parameter qnibeir value " <<
qnibeir <<
" out of range [ 0.0, 1.0 ]";
5858 if ( (!((
iben >=0.0))) )
5860 UserError0(*
this) <<
"ADMSvbic13: Parameter iben value " <<
iben <<
" out of range [ 0.0, (+inf) [";
5866 UserError0(*
this) <<
"ADMSvbic13: Parameter nen value " <<
nen <<
" out of range ] nei, (+inf) [";
5870 if ( (!((
ibci >=0.0))) )
5872 UserError0(*
this) <<
"ADMSvbic13: Parameter ibci value " <<
ibci <<
" out of range [ 0.0, (+inf) [";
5876 if ( (!((
nci >0.0))) )
5878 UserError0(*
this) <<
"ADMSvbic13: Parameter nci value " <<
nci <<
" out of range ] 0.0, (+inf) [";
5882 if ( (!((
ibcn >=0.0))) )
5884 UserError0(*
this) <<
"ADMSvbic13: Parameter ibcn value " <<
ibcn <<
" out of range [ 0.0, (+inf) [";
5890 UserError0(*
this) <<
"ADMSvbic13: Parameter ncn value " <<
ncn <<
" out of range ] nci, (+inf) [";
5894 if ( (!((
ibeip >=0.0))) )
5896 UserError0(*
this) <<
"ADMSvbic13: Parameter ibeip value " <<
ibeip <<
" out of range [ 0.0, (+inf) [";
5900 if ( (!((
ibenp >=0.0))) )
5902 UserError0(*
this) <<
"ADMSvbic13: Parameter ibenp value " <<
ibenp <<
" out of range [ 0.0, (+inf) [";
5906 if ( (!((
ibcip >=0.0))) )
5908 UserError0(*
this) <<
"ADMSvbic13: Parameter ibcip value " <<
ibcip <<
" out of range [ 0.0, (+inf) [";
5912 if ( (!((
ncip >0.0))) )
5914 UserError0(*
this) <<
"ADMSvbic13: Parameter ncip value " <<
ncip <<
" out of range ] 0.0, (+inf) [";
5918 if ( (!((
ibcnp >=0.0))) )
5920 UserError0(*
this) <<
"ADMSvbic13: Parameter ibcnp value " <<
ibcnp <<
" out of range [ 0.0, (+inf) [";
5926 UserError0(*
this) <<
"ADMSvbic13: Parameter ncnp value " <<
ncnp <<
" out of range ] ncip, (+inf) [";
5930 if ( (!((
vef >=0.0))) )
5932 UserError0(*
this) <<
"ADMSvbic13: Parameter vef value " <<
vef <<
" out of range [ 0.0, (+inf) [";
5936 if ( (!((
ver >=0.0))) )
5938 UserError0(*
this) <<
"ADMSvbic13: Parameter ver value " <<
ver <<
" out of range [ 0.0, (+inf) [";
5942 if ( (!((
ikf >=0.0))) )
5944 UserError0(*
this) <<
"ADMSvbic13: Parameter ikf value " <<
ikf <<
" out of range [ 0.0, (+inf) [";
5948 if ( (!((
nkf >0.0))) )
5950 UserError0(*
this) <<
"ADMSvbic13: Parameter nkf value " <<
nkf <<
" out of range ] 0.0, (+inf) [";
5954 if ( (!((
ikr >=0.0))) )
5956 UserError0(*
this) <<
"ADMSvbic13: Parameter ikr value " <<
ikr <<
" out of range [ 0.0, (+inf) [";
5960 if ( (!((
ikp >=0.0))) )
5962 UserError0(*
this) <<
"ADMSvbic13: Parameter ikp value " <<
ikp <<
" out of range [ 0.0, (+inf) [";
5966 if ( (!((
tf >=0.0))) )
5968 UserError0(*
this) <<
"ADMSvbic13: Parameter tf value " <<
tf <<
" out of range [ 0.0, (+inf) [";
5972 if ( (!((
qtf >=0.0))) )
5974 UserError0(*
this) <<
"ADMSvbic13: Parameter qtf value " <<
qtf <<
" out of range [ 0.0, (+inf) [";
5978 if ( (!((
xtf >=0.0))) )
5980 UserError0(*
this) <<
"ADMSvbic13: Parameter xtf value " <<
xtf <<
" out of range [ 0.0, (+inf) [";
5984 if ( (!((
vtf >=0.0))) )
5986 UserError0(*
this) <<
"ADMSvbic13: Parameter vtf value " <<
vtf <<
" out of range [ 0.0, (+inf) [";
5990 if ( (!((
itf >=0.0))) )
5992 UserError0(*
this) <<
"ADMSvbic13: Parameter itf value " <<
itf <<
" out of range [ 0.0, (+inf) [";
5996 if ( (!((
tr >=0.0))) )
5998 UserError0(*
this) <<
"ADMSvbic13: Parameter tr value " <<
tr <<
" out of range [ 0.0, (+inf) [";
6002 if ( (!((
td >=0.0))) )
6004 UserError0(*
this) <<
"ADMSvbic13: Parameter td value " <<
td <<
" out of range [ 0.0, (+inf) [";
6008 if ( (!((
avc1 >=0.0))) )
6010 UserError0(*
this) <<
"ADMSvbic13: Parameter avc1 value " <<
avc1 <<
" out of range [ 0.0, (+inf) [";
6014 if ( (!((
avc2 >=0.0))) )
6016 UserError0(*
this) <<
"ADMSvbic13: Parameter avc2 value " <<
avc2 <<
" out of range [ 0.0, (+inf) [";
6020 if ( (!((
avcx1 >=0.0))) )
6022 UserError0(*
this) <<
"ADMSvbic13: Parameter avcx1 value " <<
avcx1 <<
" out of range [ 0.0, (+inf) [";
6026 if ( (!((
avcx2 >=0.0))) )
6028 UserError0(*
this) <<
"ADMSvbic13: Parameter avcx2 value " <<
avcx2 <<
" out of range [ 0.0, (+inf) [";
6032 if ( (!((
mcx >0.0 &&
mcx <=1.0 ))) )
6034 UserError0(*
this) <<
"ADMSvbic13: Parameter mcx value " <<
mcx <<
" out of range ] 0.0, 1.0 ]";
6038 if ( (!((
vbbe >=0.0))) )
6040 UserError0(*
this) <<
"ADMSvbic13: Parameter vbbe value " <<
vbbe <<
" out of range [ 0.0, (+inf) [";
6044 if ( (!((
nbbe >0.0))) )
6046 UserError0(*
this) <<
"ADMSvbic13: Parameter nbbe value " <<
nbbe <<
" out of range ] 0.0, (+inf) [";
6050 if ( (!((
ibbe >0.0))) )
6052 UserError0(*
this) <<
"ADMSvbic13: Parameter ibbe value " <<
ibbe <<
" out of range ] 0.0, (+inf) [";
6056 if ( (!((
vpte >=0.0))) )
6058 UserError0(*
this) <<
"ADMSvbic13: Parameter vpte value " <<
vpte <<
" out of range [ 0.0, (+inf) [";
6062 if ( (!((
ibk0 >=0.0))) )
6064 UserError0(*
this) <<
"ADMSvbic13: Parameter ibk0 value " <<
ibk0 <<
" out of range [ 0.0, (+inf) [";
6068 if ( (!((
abk >0.0))) )
6070 UserError0(*
this) <<
"ADMSvbic13: Parameter abk value " <<
abk <<
" out of range ] 0.0, (+inf) [";
6074 if ( (!((
bbk >=0.0))) )
6076 UserError0(*
this) <<
"ADMSvbic13: Parameter bbk value " <<
bbk <<
" out of range [ 0.0, (+inf) [";
6080 if ( (!((
kfn >=0.0))) )
6082 UserError0(*
this) <<
"ADMSvbic13: Parameter kfn value " <<
kfn <<
" out of range [ 0.0, (+inf) [";
6086 if ( (!((
afn >0.0))) )
6088 UserError0(*
this) <<
"ADMSvbic13: Parameter afn value " <<
afn <<
" out of range ] 0.0, (+inf) [";
6092 if ( (!((
bfn >0.0))) )
6094 UserError0(*
this) <<
"ADMSvbic13: Parameter bfn value " <<
bfn <<
" out of range ] 0.0, (+inf) [";
6098 if ( (!((
rth >=0.0))) )
6100 UserError0(*
this) <<
"ADMSvbic13: Parameter rth value " <<
rth <<
" out of range [ 0.0, (+inf) [";
6104 if ( (!((
cth >=0.0))) )
6106 UserError0(*
this) <<
"ADMSvbic13: Parameter cth value " <<
cth <<
" out of range [ 0.0, (+inf) [";
6127 std::vector<Instance*>::iterator iter;
6131 for (iter=first; iter!=last; ++iter)
6133 (*iter)->processParams();
6151 :
DeviceModel(model_block, configuration.getModelParameters(), factory_block),
6295 if (!
given(
"XYCEADMSMODTEMP"))
6326 std::vector<Instance*>::iterator iterI;
6331 for (iterI = firstI; iterI != lastI; ++iterI)
6347 std::vector<Instance*>::const_iterator iter;
6353 os <<
" name model name Parameters" << std::endl;
6354 for (i=0, iter=first; iter!=last; ++iter, ++i)
6356 os <<
" " << i <<
": " << (*iter)->getName() <<
" ";
6360 os <<
"M = " << (*iter)->m << std::endl;
6361 os <<
"TRISE = " << (*iter)->trise << std::endl;
6362 os <<
"SW_NOISE = " << (*iter)->sw_noise << std::endl;
6363 os <<
"SW_ET = " << (*iter)->sw_et << std::endl;
6388 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
6400 .registerDevice(
"q", 11)
6401 .registerModelType(
"npn", 11)
6402 .registerModelType(
"pnp", 11);
6407 #ifdef Xyce_ADMS_SENSITIVITIES
6416 void evaluateInitialInstance(
6420 bool instancePar_given_m,
6422 bool instancePar_given_trise,
6424 int instancePar_sw_noise,
6425 bool instancePar_given_sw_noise,
6426 int instancePar_sw_et,
6427 bool instancePar_given_sw_et,
6431 bool modelPar_given_npn,
6433 bool modelPar_given_pnp,
6435 bool modelPar_given_scale,
6437 bool modelPar_given_shrink,
6439 bool modelPar_given_tmin,
6441 bool modelPar_given_tmax,
6443 bool modelPar_given_gmin,
6445 bool modelPar_given_pnjmaxi,
6447 bool modelPar_given_maxexp,
6449 bool modelPar_given_tnom,
6451 bool modelPar_given_tminclip,
6453 bool modelPar_given_tmaxclip,
6455 bool modelPar_given_rcx,
6457 bool modelPar_given_rci,
6459 bool modelPar_given_vo,
6461 bool modelPar_given_gamm,
6463 bool modelPar_given_hrcf,
6465 bool modelPar_given_rbx,
6467 bool modelPar_given_rbi,
6469 bool modelPar_given_re,
6471 bool modelPar_given_rs,
6473 bool modelPar_given_rbp,
6475 bool modelPar_given_is,
6477 bool modelPar_given_isrr,
6479 bool modelPar_given_nf,
6481 bool modelPar_given_nr,
6483 bool modelPar_given_isp,
6485 bool modelPar_given_wsp,
6487 bool modelPar_given_nfp,
6489 bool modelPar_given_fc,
6491 bool modelPar_given_cbeo,
6493 bool modelPar_given_cje,
6495 bool modelPar_given_pe,
6497 bool modelPar_given_me,
6499 bool modelPar_given_aje,
6501 bool modelPar_given_cbco,
6503 bool modelPar_given_cjc,
6505 bool modelPar_given_pc,
6507 bool modelPar_given_mc,
6509 bool modelPar_given_ajc,
6511 bool modelPar_given_vrt,
6513 bool modelPar_given_art,
6515 bool modelPar_given_qco,
6517 bool modelPar_given_cjep,
6519 bool modelPar_given_cjcp,
6521 bool modelPar_given_ps,
6523 bool modelPar_given_ms,
6525 bool modelPar_given_ajs,
6527 bool modelPar_given_ccso,
6529 bool modelPar_given_ibei,
6531 bool modelPar_given_wbe,
6533 bool modelPar_given_nei,
6535 bool modelPar_given_qnibeir,
6537 bool modelPar_given_iben,
6539 bool modelPar_given_nen,
6541 bool modelPar_given_ibci,
6543 bool modelPar_given_nci,
6545 bool modelPar_given_ibcn,
6547 bool modelPar_given_ncn,
6549 bool modelPar_given_ibeip,
6551 bool modelPar_given_ibenp,
6553 bool modelPar_given_ibcip,
6555 bool modelPar_given_ncip,
6557 bool modelPar_given_ibcnp,
6559 bool modelPar_given_ncnp,
6561 bool modelPar_given_vef,
6563 bool modelPar_given_ver,
6565 bool modelPar_given_ikf,
6567 bool modelPar_given_nkf,
6569 bool modelPar_given_ikr,
6571 bool modelPar_given_ikp,
6573 bool modelPar_given_tf,
6575 bool modelPar_given_qtf,
6577 bool modelPar_given_xtf,
6579 bool modelPar_given_vtf,
6581 bool modelPar_given_itf,
6583 bool modelPar_given_tr,
6585 bool modelPar_given_td,
6587 bool modelPar_given_avc1,
6589 bool modelPar_given_avc2,
6591 bool modelPar_given_avcx1,
6593 bool modelPar_given_avcx2,
6595 bool modelPar_given_mcx,
6597 bool modelPar_given_vbbe,
6599 bool modelPar_given_nbbe,
6601 bool modelPar_given_ibbe,
6603 bool modelPar_given_tvbbe1,
6605 bool modelPar_given_tvbbe2,
6607 bool modelPar_given_tnbbe,
6609 bool modelPar_given_vpte,
6611 bool modelPar_given_ibk0,
6613 bool modelPar_given_abk,
6615 bool modelPar_given_bbk,
6617 bool modelPar_given_kfn,
6619 bool modelPar_given_afn,
6621 bool modelPar_given_bfn,
6623 bool modelPar_given_rth,
6625 bool modelPar_given_cth,
6627 bool modelPar_given_xre,
6629 bool modelPar_given_xrb,
6631 bool modelPar_given_xrbi,
6633 bool modelPar_given_xrbx,
6635 bool modelPar_given_xrc,
6637 bool modelPar_given_xrci,
6639 bool modelPar_given_xrcx,
6641 bool modelPar_given_xrbp,
6643 bool modelPar_given_xrs,
6645 bool modelPar_given_xvo,
6647 bool modelPar_given_ea,
6649 bool modelPar_given_eaie,
6651 bool modelPar_given_eaic,
6653 bool modelPar_given_eais,
6655 bool modelPar_given_eane,
6657 bool modelPar_given_eanc,
6659 bool modelPar_given_eans,
6661 bool modelPar_given_eap,
6663 bool modelPar_given_dear,
6665 bool modelPar_given_xis,
6667 bool modelPar_given_xii,
6669 bool modelPar_given_xin,
6671 bool modelPar_given_xisr,
6673 bool modelPar_given_xikf,
6675 bool modelPar_given_tavc,
6677 bool modelPar_given_tavcx,
6679 bool modelPar_given_tnf,
6681 bool modelPar_given_tcvef,
6683 bool modelPar_given_tcver,
6685 bool modelPar_given_tcrth,
6688 bool modelPar_given_type,
6689 int modelPar_VBICtype,
6691 bool modelPar_given_qbm,
6692 double admsTemperature,
double adms_vt_nom)
6706 void evaluateInitialModel(
6710 bool modelPar_given_npn,
6712 bool modelPar_given_pnp,
6714 bool modelPar_given_scale,
6716 bool modelPar_given_shrink,
6718 bool modelPar_given_tmin,
6720 bool modelPar_given_tmax,
6722 bool modelPar_given_gmin,
6724 bool modelPar_given_pnjmaxi,
6726 bool modelPar_given_maxexp,
6728 bool modelPar_given_tnom,
6730 bool modelPar_given_tminclip,
6732 bool modelPar_given_tmaxclip,
6734 bool modelPar_given_rcx,
6736 bool modelPar_given_rci,
6738 bool modelPar_given_vo,
6740 bool modelPar_given_gamm,
6742 bool modelPar_given_hrcf,
6744 bool modelPar_given_rbx,
6746 bool modelPar_given_rbi,
6748 bool modelPar_given_re,
6750 bool modelPar_given_rs,
6752 bool modelPar_given_rbp,
6754 bool modelPar_given_is,
6756 bool modelPar_given_isrr,
6758 bool modelPar_given_nf,
6760 bool modelPar_given_nr,
6762 bool modelPar_given_isp,
6764 bool modelPar_given_wsp,
6766 bool modelPar_given_nfp,
6768 bool modelPar_given_fc,
6770 bool modelPar_given_cbeo,
6772 bool modelPar_given_cje,
6774 bool modelPar_given_pe,
6776 bool modelPar_given_me,
6778 bool modelPar_given_aje,
6780 bool modelPar_given_cbco,
6782 bool modelPar_given_cjc,
6784 bool modelPar_given_pc,
6786 bool modelPar_given_mc,
6788 bool modelPar_given_ajc,
6790 bool modelPar_given_vrt,
6792 bool modelPar_given_art,
6794 bool modelPar_given_qco,
6796 bool modelPar_given_cjep,
6798 bool modelPar_given_cjcp,
6800 bool modelPar_given_ps,
6802 bool modelPar_given_ms,
6804 bool modelPar_given_ajs,
6806 bool modelPar_given_ccso,
6808 bool modelPar_given_ibei,
6810 bool modelPar_given_wbe,
6812 bool modelPar_given_nei,
6814 bool modelPar_given_qnibeir,
6816 bool modelPar_given_iben,
6818 bool modelPar_given_nen,
6820 bool modelPar_given_ibci,
6822 bool modelPar_given_nci,
6824 bool modelPar_given_ibcn,
6826 bool modelPar_given_ncn,
6828 bool modelPar_given_ibeip,
6830 bool modelPar_given_ibenp,
6832 bool modelPar_given_ibcip,
6834 bool modelPar_given_ncip,
6836 bool modelPar_given_ibcnp,
6838 bool modelPar_given_ncnp,
6840 bool modelPar_given_vef,
6842 bool modelPar_given_ver,
6844 bool modelPar_given_ikf,
6846 bool modelPar_given_nkf,
6848 bool modelPar_given_ikr,
6850 bool modelPar_given_ikp,
6852 bool modelPar_given_tf,
6854 bool modelPar_given_qtf,
6856 bool modelPar_given_xtf,
6858 bool modelPar_given_vtf,
6860 bool modelPar_given_itf,
6862 bool modelPar_given_tr,
6864 bool modelPar_given_td,
6866 bool modelPar_given_avc1,
6868 bool modelPar_given_avc2,
6870 bool modelPar_given_avcx1,
6872 bool modelPar_given_avcx2,
6874 bool modelPar_given_mcx,
6876 bool modelPar_given_vbbe,
6878 bool modelPar_given_nbbe,
6880 bool modelPar_given_ibbe,
6882 bool modelPar_given_tvbbe1,
6884 bool modelPar_given_tvbbe2,
6886 bool modelPar_given_tnbbe,
6888 bool modelPar_given_vpte,
6890 bool modelPar_given_ibk0,
6892 bool modelPar_given_abk,
6894 bool modelPar_given_bbk,
6896 bool modelPar_given_kfn,
6898 bool modelPar_given_afn,
6900 bool modelPar_given_bfn,
6902 bool modelPar_given_rth,
6904 bool modelPar_given_cth,
6906 bool modelPar_given_xre,
6908 bool modelPar_given_xrb,
6910 bool modelPar_given_xrbi,
6912 bool modelPar_given_xrbx,
6914 bool modelPar_given_xrc,
6916 bool modelPar_given_xrci,
6918 bool modelPar_given_xrcx,
6920 bool modelPar_given_xrbp,
6922 bool modelPar_given_xrs,
6924 bool modelPar_given_xvo,
6926 bool modelPar_given_ea,
6928 bool modelPar_given_eaie,
6930 bool modelPar_given_eaic,
6932 bool modelPar_given_eais,
6934 bool modelPar_given_eane,
6936 bool modelPar_given_eanc,
6938 bool modelPar_given_eans,
6940 bool modelPar_given_eap,
6942 bool modelPar_given_dear,
6944 bool modelPar_given_xis,
6946 bool modelPar_given_xii,
6948 bool modelPar_given_xin,
6950 bool modelPar_given_xisr,
6952 bool modelPar_given_xikf,
6954 bool modelPar_given_tavc,
6956 bool modelPar_given_tavcx,
6958 bool modelPar_given_tnf,
6960 bool modelPar_given_tcvef,
6962 bool modelPar_given_tcver,
6964 bool modelPar_given_tcrth,
6967 bool modelPar_given_type,
6968 int modelPar_VBICtype,
6970 bool modelPar_given_qbm,
6971 double admsTemperature)
6988 void evaluateModelEquations(
6989 std::vector <double> & probeVars,
6991 const int admsProbeID_V_xf2_GND,
6992 const int admsProbeID_V_xf1_GND,
6993 const int admsProbeID_V_bp_cx,
6994 const int admsProbeID_V_e_ei,
6995 const int admsProbeID_V_bx_bi,
6996 const int admsProbeID_V_b_bx,
6997 const int admsProbeID_V_cx_ci,
6998 const int admsProbeID_V_c_cx,
6999 const int admsProbeID_V_b_c,
7000 const int admsProbeID_V_b_e,
7001 const int admsProbeID_V_bx_bp,
7002 const int admsProbeID_V_ci_ei,
7003 const int admsProbeID_V_bx_cx,
7004 const int admsProbeID_V_bi_cx,
7005 const int admsProbeID_V_bi_ci,
7006 const int admsProbeID_V_bx_ei,
7007 const int admsProbeID_V_bi_ei,
7008 const int admsProbeID_Temp_dt_GND,
7010 const int admsNodeID_c,
7011 const int admsNodeID_b,
7012 const int admsNodeID_e,
7013 const int admsNodeID_dt,
7014 const int admsNodeID_cx,
7015 const int admsNodeID_ci,
7016 const int admsNodeID_bx,
7017 const int admsNodeID_bi,
7018 const int admsNodeID_ei,
7019 const int admsNodeID_bp,
7020 const int admsNodeID_xf1,
7021 const int admsNodeID_xf2,
7025 bool instancePar_given_m,
7027 bool instancePar_given_trise,
7029 int instancePar_sw_noise,
7030 bool instancePar_given_sw_noise,
7031 int instancePar_sw_et,
7032 bool instancePar_given_sw_et,
7036 bool modelPar_given_npn,
7038 bool modelPar_given_pnp,
7040 bool modelPar_given_scale,
7042 bool modelPar_given_shrink,
7044 bool modelPar_given_tmin,
7046 bool modelPar_given_tmax,
7048 bool modelPar_given_gmin,
7050 bool modelPar_given_pnjmaxi,
7052 bool modelPar_given_maxexp,
7054 bool modelPar_given_tnom,
7056 bool modelPar_given_tminclip,
7058 bool modelPar_given_tmaxclip,
7060 bool modelPar_given_rcx,
7062 bool modelPar_given_rci,
7064 bool modelPar_given_vo,
7066 bool modelPar_given_gamm,
7068 bool modelPar_given_hrcf,
7070 bool modelPar_given_rbx,
7072 bool modelPar_given_rbi,
7074 bool modelPar_given_re,
7076 bool modelPar_given_rs,
7078 bool modelPar_given_rbp,
7080 bool modelPar_given_is,
7082 bool modelPar_given_isrr,
7084 bool modelPar_given_nf,
7086 bool modelPar_given_nr,
7088 bool modelPar_given_isp,
7090 bool modelPar_given_wsp,
7092 bool modelPar_given_nfp,
7094 bool modelPar_given_fc,
7096 bool modelPar_given_cbeo,
7098 bool modelPar_given_cje,
7100 bool modelPar_given_pe,
7102 bool modelPar_given_me,
7104 bool modelPar_given_aje,
7106 bool modelPar_given_cbco,
7108 bool modelPar_given_cjc,
7110 bool modelPar_given_pc,
7112 bool modelPar_given_mc,
7114 bool modelPar_given_ajc,
7116 bool modelPar_given_vrt,
7118 bool modelPar_given_art,
7120 bool modelPar_given_qco,
7122 bool modelPar_given_cjep,
7124 bool modelPar_given_cjcp,
7126 bool modelPar_given_ps,
7128 bool modelPar_given_ms,
7130 bool modelPar_given_ajs,
7132 bool modelPar_given_ccso,
7134 bool modelPar_given_ibei,
7136 bool modelPar_given_wbe,
7138 bool modelPar_given_nei,
7140 bool modelPar_given_qnibeir,
7142 bool modelPar_given_iben,
7144 bool modelPar_given_nen,
7146 bool modelPar_given_ibci,
7148 bool modelPar_given_nci,
7150 bool modelPar_given_ibcn,
7152 bool modelPar_given_ncn,
7154 bool modelPar_given_ibeip,
7156 bool modelPar_given_ibenp,
7158 bool modelPar_given_ibcip,
7160 bool modelPar_given_ncip,
7162 bool modelPar_given_ibcnp,
7164 bool modelPar_given_ncnp,
7166 bool modelPar_given_vef,
7168 bool modelPar_given_ver,
7170 bool modelPar_given_ikf,
7172 bool modelPar_given_nkf,
7174 bool modelPar_given_ikr,
7176 bool modelPar_given_ikp,
7178 bool modelPar_given_tf,
7180 bool modelPar_given_qtf,
7182 bool modelPar_given_xtf,
7184 bool modelPar_given_vtf,
7186 bool modelPar_given_itf,
7188 bool modelPar_given_tr,
7190 bool modelPar_given_td,
7192 bool modelPar_given_avc1,
7194 bool modelPar_given_avc2,
7196 bool modelPar_given_avcx1,
7198 bool modelPar_given_avcx2,
7200 bool modelPar_given_mcx,
7202 bool modelPar_given_vbbe,
7204 bool modelPar_given_nbbe,
7206 bool modelPar_given_ibbe,
7208 bool modelPar_given_tvbbe1,
7210 bool modelPar_given_tvbbe2,
7212 bool modelPar_given_tnbbe,
7214 bool modelPar_given_vpte,
7216 bool modelPar_given_ibk0,
7218 bool modelPar_given_abk,
7220 bool modelPar_given_bbk,
7222 bool modelPar_given_kfn,
7224 bool modelPar_given_afn,
7226 bool modelPar_given_bfn,
7228 bool modelPar_given_rth,
7230 bool modelPar_given_cth,
7232 bool modelPar_given_xre,
7234 bool modelPar_given_xrb,
7236 bool modelPar_given_xrbi,
7238 bool modelPar_given_xrbx,
7240 bool modelPar_given_xrc,
7242 bool modelPar_given_xrci,
7244 bool modelPar_given_xrcx,
7246 bool modelPar_given_xrbp,
7248 bool modelPar_given_xrs,
7250 bool modelPar_given_xvo,
7252 bool modelPar_given_ea,
7254 bool modelPar_given_eaie,
7256 bool modelPar_given_eaic,
7258 bool modelPar_given_eais,
7260 bool modelPar_given_eane,
7262 bool modelPar_given_eanc,
7264 bool modelPar_given_eans,
7266 bool modelPar_given_eap,
7268 bool modelPar_given_dear,
7270 bool modelPar_given_xis,
7272 bool modelPar_given_xii,
7274 bool modelPar_given_xin,
7276 bool modelPar_given_xisr,
7278 bool modelPar_given_xikf,
7280 bool modelPar_given_tavc,
7282 bool modelPar_given_tavcx,
7284 bool modelPar_given_tnf,
7286 bool modelPar_given_tcvef,
7288 bool modelPar_given_tcver,
7290 bool modelPar_given_tcrth,
7293 bool modelPar_given_type,
7294 int modelPar_VBICtype,
7296 bool modelPar_given_qbm,
7298 double admsTemperature,
double adms_vt_nom,
double gmin, std::vector <AdmsSensFadType> & staticContributions, std::vector <AdmsSensFadType> & dynamicContributions,
const Instance & theInstance)
7552 scaleFac = modelPar_scale;
7553 shrinkL = (1.0-(0.01*modelPar_shrink));
7554 if (modelPar_given_gmin)
7556 gminMod = modelPar_gmin;
7562 mMod = instancePar_m;
7563 if (modelPar_given_pnjmaxi)
7565 imaxMod = modelPar_pnjmaxi;
7571 if (modelPar_given_npn)
7573 modelPar_VBICtype = 1.0;
7577 if (modelPar_given_pnp)
7579 modelPar_VBICtype = (-1.0);
7583 if (modelPar_given_type)
7585 modelPar_VBICtype = (-modelPar_type);
7589 VmaxExp = log(modelPar_maxexp);
7590 Iikr = adms_ternary_op<AdmsSensFadType>((modelPar_ikr>0.0),(1.0/modelPar_ikr),0.0);
7591 Iikp = adms_ternary_op<AdmsSensFadType>((modelPar_ikp>0.0),(1.0/modelPar_ikp),0.0);
7592 Ihrcf = adms_ternary_op<AdmsSensFadType>((modelPar_hrcf>0.0),(1.0/modelPar_hrcf),0.0);
7593 Ivtf = adms_ternary_op<AdmsSensFadType>((modelPar_vtf>0.0),(1.0/modelPar_vtf),0.0);
7594 Iitf = adms_ternary_op<AdmsSensFadType>((modelPar_itf>0.0),(1.0/modelPar_itf),0.0);
7595 sltf = ((modelPar_itf>0.0)?0.0:1.0);
7596 tiniK = (273.15+modelPar_tnom);
7601 tdevC = ((admsTemperature+instancePar_trise)-273.15);
7602 if ((tdevC<modelPar_tmin))
7604 std::cerr <<
"WARNING: ambient temperature is lower than allowed minimum" << std::endl;
7606 if ((tdevC>modelPar_tmax))
7608 std::cerr <<
"WARNING: ambient temperature is higher than allowed maximum" << std::endl;
7610 if ((tdevC<(modelPar_tminclip+1.0)))
7612 tdevC = (modelPar_tminclip+exp(((tdevC-modelPar_tminclip)-1.0)));
7616 if ((tdevC>(modelPar_tmaxclip-1.0)))
7618 tdevC = (modelPar_tmaxclip-exp(((modelPar_tmaxclip-tdevC)-1.0)));
7625 tdevK = (tdevC+273.15);
7626 vtv = ((1.380662e-23*tdevK)/1.602189e-19);
7628 tVCrit = (
adms_vt(admsTemperature)*log((
adms_vt(admsTemperature)/(1.41421356237309504880*modelPar_is))));
7629 if ((modelPar_ibbe>0.0))
7631 maxvIbbe = ((modelPar_nbbe*vtv)*log((exp(((-modelPar_vbbe)/(modelPar_nbbe*vtv)))+(imaxMod/modelPar_ibbe))));
7637 is_t = ((modelPar_is*pow(rT,(modelPar_xis/modelPar_nf)))*exp((((-modelPar_ea)*(1.0-rT))/(vtv*modelPar_nf))));
7640 if (((modelPar_ikf>0.0)&&(imaxMod>modelPar_ikf)))
7642 maxvIfi = ((modelPar_nf*vtv)*log((1.0+(pow(((0.5*imaxMod)*pow((4.0/modelPar_ikf),modelPar_nkf)),(1.0/(1.0-modelPar_nkf)))/is_t))));
7646 maxvIfi = ((modelPar_nf*vtv)*log((1.0+(imaxMod/is_t))));
7653 isrr_t = ((modelPar_isrr*pow(rT,(modelPar_xisr/modelPar_nr)))*exp((((-modelPar_dear)*(1.0-rT))/(vtv*modelPar_nr))));
7654 if (((is_t>0.0)&&(isrr_t>0.0)))
7656 if (((modelPar_ikr>0.0)&&(imaxMod>modelPar_ikr)))
7658 maxvIri = ((modelPar_nr*vtv)*log((1.0+(pow(((0.5*imaxMod)*pow((4.0/modelPar_ikr),modelPar_nkf)),(1.0/(1.0-modelPar_nkf)))/(is_t*isrr_t)))));
7662 maxvIri = ((modelPar_nr*vtv)*log((1.0+(imaxMod/(is_t*isrr_t)))));
7669 isp_t = ((modelPar_isp*pow(rT,(modelPar_xis/modelPar_nfp)))*exp((((-modelPar_eap)*(1.0-rT))/(vtv*modelPar_nfp))));
7672 if (((modelPar_ikp>0.0)&&(imaxMod>modelPar_ikp)))
7674 maxvIp = ((modelPar_nfp*vtv)*log((1.0+(((imaxMod*imaxMod)*Iikp)/isp_t))));
7678 maxvIp = ((modelPar_nfp*vtv)*log((1.0+(imaxMod/isp_t))));
7685 ibei_t = ((modelPar_ibei*pow(rT,(modelPar_xii/modelPar_nei)))*exp((((-modelPar_eaie)*(1.0-rT))/(vtv*modelPar_nei))));
7688 maxvIbei = ((modelPar_nei*vtv)*log((1.0+(imaxMod/ibei_t))));
7694 iben_t = ((modelPar_iben*pow(rT,(modelPar_xin/modelPar_nen)))*exp((((-modelPar_eane)*(1.0-rT))/(vtv*modelPar_nen))));
7697 maxvIben = ((modelPar_nen*vtv)*log((1.0+(imaxMod/iben_t))));
7703 ibci_t = ((modelPar_ibci*pow(rT,(modelPar_xii/modelPar_nci)))*exp((((-modelPar_eaic)*(1.0-rT))/(vtv*modelPar_nci))));
7706 maxvIbci = ((modelPar_nci*vtv)*log((1.0+(imaxMod/ibci_t))));
7712 ibcn_t = ((modelPar_ibcn*pow(rT,(modelPar_xin/modelPar_ncn)))*exp((((-modelPar_eanc)*(1.0-rT))/(vtv*modelPar_ncn))));
7715 maxvIbcn = ((modelPar_ncn*vtv)*log((1.0+(imaxMod/ibcn_t))));
7721 ibeip_t = ((modelPar_ibeip*pow(rT,(modelPar_xii/modelPar_nci)))*exp((((-modelPar_eaic)*(1.0-rT))/(vtv*modelPar_nci))));
7724 maxvIbeip = ((modelPar_nci*vtv)*log((1.0+(imaxMod/ibeip_t))));
7730 ibenp_t = ((modelPar_ibenp*pow(rT,(modelPar_xin/modelPar_ncn)))*exp((((-modelPar_eanc)*(1.0-rT))/(vtv*modelPar_ncn))));
7733 maxvIbenp = ((modelPar_ncn*vtv)*log((1.0+(imaxMod/ibenp_t))));
7739 ibcip_t = ((modelPar_ibcip*pow(rT,(modelPar_xii/modelPar_ncip)))*exp((((-modelPar_eais)*(1.0-rT))/(vtv*modelPar_ncip))));
7742 maxvIbcip = ((modelPar_ncip*vtv)*log((1.0+(imaxMod/ibcip_t))));
7748 ibcnp_t = ((modelPar_ibcnp*pow(rT,(modelPar_xin/modelPar_ncnp)))*exp((((-modelPar_eans)*(1.0-rT))/(vtv*modelPar_ncnp))));
7751 maxvIbcnp = ((modelPar_ncnp*vtv)*log((1.0+(imaxMod/ibcnp_t))));
7761 dt_et = probeVars[admsProbeID_Temp_dt_GND];
7763 tdevC = (((admsTemperature+instancePar_trise)+dt_et)-273.15);
7764 if ((tdevC<(modelPar_tminclip+1.0)))
7766 tdevC = (modelPar_tminclip+exp(((tdevC-modelPar_tminclip)-1.0)));
7770 if ((tdevC>(modelPar_tmaxclip-1.0)))
7772 tdevC = (modelPar_tmaxclip-exp(((modelPar_tmaxclip-tdevC)-1.0)));
7779 tdevK = (tdevC+273.15);
7780 vtv = ((1.380662e-23*tdevK)/1.602189e-19);
7783 ikf_t = (modelPar_ikf*pow(rT,modelPar_xikf));
7784 if (modelPar_given_xrcx)
7786 rcx_t = (modelPar_rcx*pow(rT,modelPar_xrcx));
7790 rcx_t = (modelPar_rcx*pow(rT,modelPar_xrc));
7792 if (modelPar_given_xrci)
7794 rci_t = (modelPar_rci*pow(rT,modelPar_xrci));
7798 rci_t = (modelPar_rci*pow(rT,modelPar_xrc));
7800 if (modelPar_given_xrbx)
7802 rbx_t = (modelPar_rbx*pow(rT,modelPar_xrbx));
7806 rbx_t = (modelPar_rbx*pow(rT,modelPar_xrb));
7808 if (modelPar_given_xrbi)
7810 rbi_t = (modelPar_rbi*pow(rT,modelPar_xrbi));
7814 rbi_t = (modelPar_rbi*pow(rT,modelPar_xrb));
7816 re_t = (modelPar_re*pow(rT,modelPar_xre));
7817 rs_t = (modelPar_rs*pow(rT,modelPar_xrs));
7818 if (modelPar_given_xrbp)
7820 rbp_t = (modelPar_rbp*pow(rT,modelPar_xrbp));
7824 rbp_t = (modelPar_rbp*pow(rT,modelPar_xrc));
7826 rth_t = (modelPar_rth*(1.0+(dT*modelPar_tcrth)));
7827 is_t = ((modelPar_is*pow(rT,(modelPar_xis/modelPar_nf)))*exp((((-modelPar_ea)*(1.0-rT))/(vtv*modelPar_nf))));
7828 isrr_t = ((modelPar_isrr*pow(rT,(modelPar_xisr/modelPar_nr)))*exp((((-modelPar_dear)*(1.0-rT))/(vtv*modelPar_nr))));
7829 isp_t = ((modelPar_isp*pow(rT,(modelPar_xis/modelPar_nfp)))*exp((((-modelPar_eap)*(1.0-rT))/(vtv*modelPar_nfp))));
7830 ibei_t = ((modelPar_ibei*pow(rT,(modelPar_xii/modelPar_nei)))*exp((((-modelPar_eaie)*(1.0-rT))/(vtv*modelPar_nei))));
7831 iben_t = ((modelPar_iben*pow(rT,(modelPar_xin/modelPar_nen)))*exp((((-modelPar_eane)*(1.0-rT))/(vtv*modelPar_nen))));
7832 ibci_t = ((modelPar_ibci*pow(rT,(modelPar_xii/modelPar_nci)))*exp((((-modelPar_eaic)*(1.0-rT))/(vtv*modelPar_nci))));
7833 ibcn_t = ((modelPar_ibcn*pow(rT,(modelPar_xin/modelPar_ncn)))*exp((((-modelPar_eanc)*(1.0-rT))/(vtv*modelPar_ncn))));
7834 ibeip_t = ((modelPar_ibeip*pow(rT,(modelPar_xii/modelPar_nci)))*exp((((-modelPar_eaic)*(1.0-rT))/(vtv*modelPar_nci))));
7835 ibenp_t = ((modelPar_ibenp*pow(rT,(modelPar_xin/modelPar_ncn)))*exp((((-modelPar_eanc)*(1.0-rT))/(vtv*modelPar_ncn))));
7836 ibcip_t = ((modelPar_ibcip*pow(rT,(modelPar_xii/modelPar_ncip)))*exp((((-modelPar_eais)*(1.0-rT))/(vtv*modelPar_ncip))));
7837 ibcnp_t = ((modelPar_ibcnp*pow(rT,(modelPar_xin/modelPar_ncnp)))*exp((((-modelPar_eans)*(1.0-rT))/(vtv*modelPar_ncnp))));
7838 nf_t = (modelPar_nf*(1.0+(dT*modelPar_tnf)));
7839 nr_t = (modelPar_nr*(1.0+(dT*modelPar_tnf)));
7840 avc2_t = (modelPar_avc2*(1.0+(dT*modelPar_tavc)));
7841 avcx2_t = (modelPar_avcx2*(1.0+(dT*modelPar_tavcx)));
7842 vbbe_t = (modelPar_vbbe*(1.0+(dT*(modelPar_tvbbe1+(dT*modelPar_tvbbe2)))));
7843 nbbe_t = (modelPar_nbbe*(1.0+(dT*modelPar_tnbbe)));
7850 psiio = ((2.0*(vtv/rT))*log((exp((((0.5*modelPar_pe)*rT)/vtv))-exp(((((-0.5)*modelPar_pe)*rT)/vtv)))));
7851 psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-(modelPar_eaie*(rT-1.0)));
7852 pe_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
7861 psiio = ((2.0*(vtv/rT))*log((exp((((0.5*modelPar_pc)*rT)/vtv))-exp(((((-0.5)*modelPar_pc)*rT)/vtv)))));
7862 psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-(modelPar_eaic*(rT-1.0)));
7863 pc_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
7872 psiio = ((2.0*(vtv/rT))*log((exp((((0.5*modelPar_ps)*rT)/vtv))-exp(((((-0.5)*modelPar_ps)*rT)/vtv)))));
7873 psiin = (((psiio*rT)-((3.0*vtv)*log(rT)))-(modelPar_eais*(rT-1.0)));
7874 ps_t = (psiin+((2.0*vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/vtv))))))))));
7877 cje_t = (modelPar_cje*pow((modelPar_pe/pe_t),modelPar_me));
7878 cjc_t = (modelPar_cjc*pow((modelPar_pc/pc_t),modelPar_mc));
7879 cjep_t = (modelPar_cjep*pow((modelPar_pc/pc_t),modelPar_mc));
7880 cjcp_t = (modelPar_cjcp*pow((modelPar_ps/ps_t),modelPar_ms));
7881 gamm_t = ((modelPar_gamm*pow(rT,modelPar_xis))*exp((((-modelPar_ea)*(1.0-rT))/vtv)));
7882 vo_t = (modelPar_vo*pow(rT,modelPar_xvo));
7883 ebbe_t = exp(((-vbbe_t)/(nbbe_t*vtv)));
7884 vef_t = (modelPar_vef*(1.0+(dT*modelPar_tcvef)));
7885 ver_t = (modelPar_ver*(1.0+(dT*modelPar_tcver)));
7886 Gcx = adms_ternary_op<AdmsSensFadType>((rcx_t>1.0e-3),(1.0/rcx_t),1.0e3);
7887 Gci = adms_ternary_op<AdmsSensFadType>((rci_t>1.0e-3),(1.0/rci_t),1.0e3);
7888 Gbx = adms_ternary_op<AdmsSensFadType>((rbx_t>1.0e-3),(1.0/rbx_t),1.0e3);
7889 Gbi = adms_ternary_op<AdmsSensFadType>((rbi_t>1.0e-3),(1.0/rbi_t),1.0e3);
7890 Ge = adms_ternary_op<AdmsSensFadType>((re_t>1.0e-3),(1.0/re_t),1.0e3);
7891 Gbp = adms_ternary_op<AdmsSensFadType>((rbp_t>1.0e-3),(1.0/rbp_t),1.0e3);
7892 Gs = adms_ternary_op<AdmsSensFadType>((rs_t>1.0e-3),(1.0/rs_t),1.0e3);
7893 Gth = adms_ternary_op<AdmsSensFadType>((rth_t>1.0e-3),(1.0/rth_t),1.0e3);
7894 Ivef = adms_ternary_op<AdmsSensFadType>((vef_t>0.0),(1.0/vef_t),0.0);
7895 Iver = adms_ternary_op<AdmsSensFadType>((ver_t>0.0),(1.0/ver_t),0.0);
7896 Iikf = adms_ternary_op<AdmsSensFadType>((ikf_t>0.0),(1.0/ikf_t),0.0);
7897 Ivo = adms_ternary_op<AdmsSensFadType>((vo_t>0.0),(1.0/vo_t),0.0);
7898 Vbei = probeVars[admsProbeID_V_bi_ei];
7900 Vbex = probeVars[admsProbeID_V_bx_ei];
7902 Vbci = probeVars[admsProbeID_V_bi_ci];
7904 Vbcx = probeVars[admsProbeID_V_bi_cx];
7906 Vbxcx = probeVars[admsProbeID_V_bx_cx];
7908 Vcei = (modelPar_VBICtype*(probeVars[admsProbeID_V_ci_ei]));
7909 Vbep = probeVars[admsProbeID_V_bx_bp];
7911 Vbe = probeVars[admsProbeID_V_b_e];
7913 Vbc = (probeVars[admsProbeID_V_b_c]);
7914 Vrcx = (probeVars[admsProbeID_V_c_cx]);
7915 Vrci = (modelPar_VBICtype*(probeVars[admsProbeID_V_cx_ci]));
7916 Vrbx = (probeVars[admsProbeID_V_b_bx]);
7917 Vrbi = (probeVars[admsProbeID_V_bx_bi]);
7918 Vre = (probeVars[admsProbeID_V_e_ei]);
7919 Vrbp = (probeVars[admsProbeID_V_bp_cx]);
7920 Vxf1 = (probeVars[admsProbeID_V_xf1_GND]);
7921 Vxf2 = (probeVars[admsProbeID_V_xf2_GND]);
7937 dv0 = ((-pe_t)*modelPar_fc);
7938 if ((modelPar_aje<=0.0))
7943 pwq = pow((1.0-modelPar_fc),(-modelPar_me));
7944 qlo = ((pe_t*(1.0-(pwq*(1.0-modelPar_fc))))/(1.0-modelPar_me));
7945 qhi = ((dvh*(1.0+(((0.5*modelPar_me)*dvh)/(pe_t*(1.0-modelPar_fc)))))*pwq);
7949 qlo = ((pe_t*(1.0-pow((1.0-(Vbei/pe_t)),(1.0-modelPar_me))))/(1.0-modelPar_me));
7956 mv0 = sqrt(((dv0*dv0)+((4.0*modelPar_aje)*modelPar_aje)));
7957 vl0 = ((-0.5)*(dv0+mv0));
7958 q0 = (((-pe_t)*pow((1.0-(vl0/pe_t)),(1.0-modelPar_me)))/(1.0-modelPar_me));
7960 mv = sqrt(((dv*dv)+((4.0*modelPar_aje)*modelPar_aje)));
7961 vl = ((0.5*(dv-mv))-dv0);
7962 qlo = (((-pe_t)*pow((1.0-(vl/pe_t)),(1.0-modelPar_me)))/(1.0-modelPar_me));
7963 qdbe = ((qlo+((pow((1.0-modelPar_fc),(-modelPar_me))*((Vbei-vl)+vl0))*(1.0+(((0.5*modelPar_me)*((Vbei-vl)+vl0))/(pe_t*(1.0-modelPar_fc))))))-q0);
7992 dv0 = ((-pc_t)*modelPar_fc);
7993 if ((modelPar_ajc<=0.0))
7998 pwq = pow((1.0-modelPar_fc),((-1.0)-modelPar_mc));
7999 qlo = ((pc_t*(1.0-((pwq*(1.0-modelPar_fc))*(1.0-modelPar_fc))))/(1.0-modelPar_mc));
8000 qhi = ((dvh*((1.0-modelPar_fc)+(((0.5*modelPar_mc)*dvh)/pc_t)))*pwq);
8004 if (((modelPar_vrt>0.0)&&(Vbci<(-modelPar_vrt))))
8006 qlo = ((pc_t*(1.0-(pow((1.0+(modelPar_vrt/pc_t)),(1.0-modelPar_mc))*(1.0-(((1.0-modelPar_mc)*(Vbci+modelPar_vrt))/(pc_t+modelPar_vrt))))))/(1.0-modelPar_mc));
8010 qlo = ((pc_t*(1.0-pow((1.0-(Vbci/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8018 if (((modelPar_vrt>0.0)&&(modelPar_art>0.0)))
8020 vn0 = ((modelPar_vrt+dv0)/(modelPar_vrt-dv0));
8021 vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*modelPar_ajc)*modelPar_ajc)))+sqrt((((vn0+1.0)*(vn0+1))+((4*modelPar_art)*modelPar_art)))));
8022 vl0 = (0.5*(((vnl0*(modelPar_vrt-dv0))-modelPar_vrt)-dv0));
8023 qlo0 = ((pc_t*(1.0-pow((1.0-(vl0/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8024 vn = ((((2*Vbci)+modelPar_vrt)+dv0)/(modelPar_vrt-dv0));
8025 vnl = ((2.0*vn)/(sqrt((((vn-1.0)*(vn-1))+((4*modelPar_ajc)*modelPar_ajc)))+sqrt((((vn+1.0)*(vn+1))+((4*modelPar_art)*modelPar_art)))));
8026 vl = (0.5*(((vnl*(modelPar_vrt-dv0))-modelPar_vrt)-dv0));
8027 qlo = ((pc_t*(1.0-pow((1.0-(vl/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8028 sel = (0.5*(vnl+1.0));
8029 crt = pow((1.0+(modelPar_vrt/pc_t)),(-modelPar_mc));
8030 cmx = pow((1.0+(dv0/pc_t)),(-modelPar_mc));
8031 cl = (((1.0-sel)*crt)+(sel*cmx));
8032 ql = (((Vbci-vl)+vl0)*cl);
8033 qdbc = ((ql+qlo)-qlo0);
8037 mv0 = sqrt(((dv0*dv0)+((4*modelPar_ajc)*modelPar_ajc)));
8038 vl0 = ((-0.5)*(dv0+mv0));
8039 q0 = (((-pc_t)*pow((1.0-(vl0/pc_t)),(1.0-modelPar_mc)))/(1.0-modelPar_mc));
8041 mv = sqrt(((dv*dv)+((4*modelPar_ajc)*modelPar_ajc)));
8042 vl = ((0.5*(dv-mv))-dv0);
8043 qlo = (((-pc_t)*pow((1.0-(vl/pc_t)),(1.0-modelPar_mc)))/(1.0-modelPar_mc));
8044 qdbc = ((qlo+(pow((1.0-modelPar_fc),(-modelPar_mc))*((Vbci-vl)+vl0)))-q0);
8049 afac = (1.0/(nf_t*vtv));
8052 expi = exp((Vbei*afac));
8056 expi = (exp((maxvIfi*afac))*(1.0+((Vbei-maxvIfi)*afac)));
8058 Ifi = (is_t*(expi-1.0));
8059 afac = (1.0/(nr_t*vtv));
8062 expi = exp((Vbci*afac));
8066 expi = (exp((maxvIri*afac))*(1.0+((Vbci-maxvIri)*afac)));
8068 Iri = ((is_t*isrr_t)*(expi-1.0));
8069 q1z = (((1.0+(qdbe*Iver))+(qdbc*Ivef))-1.0e-4);
8070 q1 = ((0.5*(sqrt(((q1z*q1z)+1.0e-8))+q1z))+1.0e-4);
8071 q2 = ((Ifi*Iikf)+(Iri*Iikr));
8072 if ((modelPar_qbm<0.5))
8074 arg = (pow(q1,(1.0/modelPar_nkf))+(4.0*q2));
8077 qb = (0.5*(q1+pow(arg,modelPar_nkf)));
8081 qb = (0.5*(q1+pow(1.0e-8,modelPar_nkf)));
8086 arg = (1.0+(4.0*q2));
8089 qb = ((0.5*q1)*(1.0+pow(arg,modelPar_nkf)));
8093 qb = ((0.5*q1)*(1.0+pow(1.0e-8,modelPar_nkf)));
8099 if ((modelPar_isp>0.0))
8101 afac = (1.0/(modelPar_nfp*vtv));
8104 expi = exp((Vbep*afac));
8108 expi = (exp((maxvIp*afac))*(1.0+((Vbep-maxvIp)*afac)));
8112 expx = exp((Vbci*afac));
8116 expx = (exp((maxvIp*afac))*(1.0+((Vbci-maxvIp)*afac)));
8118 Ifp = (isp_t*(((modelPar_wsp*expi)+((1.0-modelPar_wsp)*expx))-1.0));
8120 arg = (1.0+(4.0*q2p));
8123 qbp = (0.5*(1.0+sqrt(arg)));
8127 qbp = (0.5*(1.0+sqrt(1.0e-8)));
8135 if ((modelPar_wbe==1.0))
8137 afac = (1.0/(modelPar_nei*vtv));
8138 if ((Vbei<maxvIbei))
8140 expi = exp((Vbei*afac));
8144 expi = (exp((maxvIbei*afac))*(1.0+((Vbei-maxvIbei)*afac)));
8146 afac = (1.0/(modelPar_nen*vtv));
8147 if ((Vbei<maxvIben))
8149 expn = exp((Vbei*afac));
8153 expn = (exp((maxvIben*afac))*(1.0+((Vbei-maxvIben)*afac)));
8155 if ((modelPar_qnibeir>0.0))
8157 Ibe = (((ibei_t*(1.0+(modelPar_qnibeir*(q1-1.0))))*(expi-1.0))+(iben_t*(expn-1.0)));
8161 Ibe = ((ibei_t*(expi-1.0))+(iben_t*(expn-1.0)));
8163 if ((modelPar_vbbe>0.0))
8165 Bvbe = ((-vbbe_t)-Vbei);
8166 afac = (1.0/(nbbe_t*vtv));
8167 if ((Bvbe<maxvIbbe))
8169 expx = exp((Bvbe*afac));
8173 expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
8175 Ibe = (Ibe-(modelPar_ibbe*(expx-ebbe_t)));
8181 if ((modelPar_wbe==0.0))
8184 afac = (1.0/(modelPar_nei*vtv));
8185 if ((Vbex<maxvIbei))
8187 expi = exp((Vbex*afac));
8191 expi = (exp((maxvIbei*afac))*(1.0+((Vbex-maxvIbei)*afac)));
8193 afac = (1.0/(modelPar_nen*vtv));
8194 if ((Vbex<maxvIben))
8196 expn = exp((Vbex*afac));
8200 expn = (exp((maxvIben*afac))*(1.0+((Vbex-maxvIben)*afac)));
8202 Ibex = ((ibei_t*(expi-1.0))+(iben_t*(expn-1.0)));
8203 if ((modelPar_vbbe>0.0))
8205 Bvbe = ((-vbbe_t)-Vbei);
8206 afac = (1.0/(nbbe_t*vtv));
8207 if ((Bvbe<maxvIbbe))
8209 expx = exp((Bvbe*afac));
8213 expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
8215 Ibex = (Ibex-(modelPar_ibbe*(expx-ebbe_t)));
8220 afac = (1.0/(modelPar_nei*vtv));
8221 if ((Vbei<maxvIbei))
8223 expi = exp((Vbei*afac));
8227 expi = (exp((maxvIbei*afac))*(1.0+((Vbei-maxvIbei)*afac)));
8229 afac = (1.0/(modelPar_nen*vtv));
8230 if ((Vbei<maxvIben))
8232 expn = exp((Vbei*afac));
8236 expn = (exp((maxvIben*afac))*(1.0+((Vbei-maxvIben)*afac)));
8238 if ((modelPar_qnibeir>0.0))
8240 Ibe = (modelPar_wbe*(((ibei_t*(1.0+(modelPar_qnibeir*(q1-1.0))))*(expi-1.0))+(iben_t*(expn-1.0))));
8244 Ibe = (modelPar_wbe*((ibei_t*(expi-1.0))+(iben_t*(expn-1.0))));
8246 if ((modelPar_vbbe>0.0))
8248 Bvbe = ((-vbbe_t)-Vbei);
8249 afac = (1.0/(nbbe_t*vtv));
8250 if ((Bvbe<maxvIbbe))
8252 expx = exp((Bvbe*afac));
8256 expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
8258 Ibe = (Ibe-((modelPar_wbe*modelPar_ibbe)*(expx-ebbe_t)));
8260 afac = (1.0/(modelPar_nei*vtv));
8261 if ((Vbex<maxvIbei))
8263 expi = exp((Vbex*afac));
8267 expi = (exp((maxvIbei*afac))*(1.0+((Vbex-maxvIbei)*afac)));
8269 afac = (1.0/(modelPar_nen*vtv));
8270 if ((Vbex<maxvIben))
8272 expn = exp((Vbex*afac));
8276 expn = (exp((maxvIben*afac))*(1.0+((Vbex-maxvIben)*afac)));
8278 Ibex = ((1.0-modelPar_wbe)*((ibei_t*(expi-1.0))+(iben_t*(expn-1.0))));
8279 if ((modelPar_vbbe>0.0))
8281 Bvbe = ((-vbbe_t)-Vbei);
8282 afac = (1.0/(nbbe_t*vtv));
8283 if ((Bvbe<maxvIbbe))
8285 expx = exp((Bvbe*afac));
8289 expx = (exp((maxvIbbe*afac))*(1.0+((Bvbe-maxvIbbe)*afac)));
8291 Ibex = (Ibex-(((1.0-modelPar_wbe)*modelPar_ibbe)*(expx-ebbe_t)));
8295 afac = (1.0/(modelPar_nci*vtv));
8296 if ((Vbci<maxvIbci))
8298 expi = exp((Vbci*afac));
8302 expi = (exp((maxvIbci*afac))*(1.0+((Vbci-maxvIbci)*afac)));
8304 afac = (1.0/(modelPar_ncn*vtv));
8305 if ((Vbci<maxvIbcn))
8307 expn = exp((Vbci*afac));
8311 expn = (exp((maxvIbcn*afac))*(1.0+((Vbci-maxvIbcn)*afac)));
8313 Ibcj = ((ibci_t*(expi-1.0))+(ibcn_t*(expn-1.0)));
8314 if (((modelPar_ibeip>0.0)||(modelPar_ibenp>0.0)))
8316 afac = (1.0/(modelPar_nci*vtv));
8317 if ((Vbep<maxvIbeip))
8319 expi = exp((Vbep*afac));
8323 expi = (exp((maxvIbeip*afac))*(1.0+((Vbep-maxvIbeip)*afac)));
8325 afac = (1.0/(modelPar_ncn*vtv));
8326 if ((Vbep<maxvIbenp))
8328 expn = exp((Vbep*afac));
8332 expn = (exp((maxvIbenp*afac))*(1.0+((Vbep-maxvIbenp)*afac)));
8334 Ibep = ((ibeip_t*(expi-1.0))+(ibenp_t*(expn-1.0)));
8347 expi = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
8356 expx = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
8358 Kbci = sqrt((1.0+(gamm_t*expi)));
8359 Kbcx = sqrt((1.0+(gamm_t*expx)));
8361 rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
8362 Iohm = ((Vrci+(vtv*((Kbci-Kbcx)-log(rKp1))))*Gci);
8363 derf = ((Ivo*Iohm)/(Gci*(1.0+(((0.5*Ivo)*Ihrcf)*sqrt(((Vrci*Vrci)+0.01))))));
8364 Irci = (Iohm/sqrt((1+(derf*derf))));
8366 Irbi = ((Vrbi*qb)*Gbi);
8368 Irbp = ((Vrbp*qbp)*Gbp);
8369 if ((modelPar_avc1>0.0))
8380 vminm = pow((0.02*(avc2_t+1.0)),(1.0/(1.01-modelPar_mc)));
8381 vl = ((0.5*(sqrt(((((pc_t-Vbci)-vminm)*((pc_t-Vbci)-vminm))+0.01))+((pc_t-Vbci)-vminm)))+vminm);
8382 mac1 = ((-avc2_t)*pow(vl,(modelPar_mc-1.0)));
8389 expl = exp(VmaxExp);
8390 expi = (expl*(1.0+(mac1-VmaxExp)));
8392 avalf = ((modelPar_avc1*vl)*expi);
8395 Igc = (((Itxf-Itzr)-Ibcj)*avalf);
8401 if ((modelPar_avcx1>0.0))
8412 vminm = pow((0.02*(avcx2_t+1.0)),(1.0/(1.01-modelPar_mcx)));
8413 vl = ((0.5*(sqrt(((((-Vbxcx)-vminm)*((-Vbxcx)-vminm))+0.01))+((-Vbxcx)-vminm)))+vminm);
8414 mac1 = ((-avcx2_t)*pow(vl,(modelPar_mcx-1.0)));
8421 expl = exp(VmaxExp);
8422 expi = (expl*(1.0+(mac1-VmaxExp)));
8424 avalf = ((modelPar_avcx1*vl)*expi);
8427 Igcx = ((-Ircx)*avalf);
8433 if (((modelPar_bbk>0.0)&&(modelPar_ibk0>0.0)))
8435 if ((modelPar_vpte>0.0))
8437 VcbFac = ((1.0-(Vbci/modelPar_vpte))-0.1);
8438 VcbFac = (0.1+(0.5*(VcbFac+sqrt(((VcbFac*VcbFac)+1.0e-4)))));
8439 Iibk = (modelPar_ibk0*VcbFac);
8443 Iibk = modelPar_ibk0;
8445 Ibk = (modelPar_bbk*pow(((Itzf/Iibk)-1.0),modelPar_abk));
8451 Ibc = ((Ibcj-Igc)-Ibk);
8452 power = (((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itxf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp));
8453 Ith = ((-instancePar_sw_et)*power);
8457 Ibe = (Ibe+(gminMod*Vbei));
8458 Ibex = (Ibex+(gminMod*Vbex));
8459 Ibep = (Ibep+(gminMod*Vbep));
8460 Ibc = (Ibc+(gminMod*Vbci));
8461 Igcx = (Igcx+(gminMod*Vbxcx));
8462 Ibe = ((modelPar_VBICtype*mMod)*Ibe);
8463 Ibex = ((modelPar_VBICtype*mMod)*Ibex);
8464 Itzf = ((modelPar_VBICtype*mMod)*Itzf);
8465 Itxf = ((modelPar_VBICtype*mMod)*Itxf);
8466 Itzr = ((modelPar_VBICtype*mMod)*Itzr);
8467 Ibc = ((modelPar_VBICtype*mMod)*Ibc);
8468 Igcx = ((modelPar_VBICtype*mMod)*Igcx);
8469 Ibep = ((modelPar_VBICtype*mMod)*Ibep);
8471 Irci = ((modelPar_VBICtype*mMod)*Irci);
8497 dv0 = ((-pe_t)*modelPar_fc);
8498 if ((modelPar_aje<=0.0))
8503 pwq = pow((1.0-modelPar_fc),(-modelPar_me));
8504 qlo = ((pe_t*(1.0-(pwq*(1.0-modelPar_fc))))/(1.0-modelPar_me));
8505 qhi = ((dvh*(1.0+(((0.5*modelPar_me)*dvh)/(pe_t*(1.0-modelPar_fc)))))*pwq);
8509 qlo = ((pe_t*(1.0-pow((1.0-(Vbex/pe_t)),(1.0-modelPar_me))))/(1.0-modelPar_me));
8516 mv0 = sqrt(((dv0*dv0)+((4.0*modelPar_aje)*modelPar_aje)));
8517 vl0 = ((-0.5)*(dv0+mv0));
8518 q0 = (((-pe_t)*pow((1.0-(vl0/pe_t)),(1.0-modelPar_me)))/(1.0-modelPar_me));
8520 mv = sqrt(((dv*dv)+((4.0*modelPar_aje)*modelPar_aje)));
8521 vl = ((0.5*(dv-mv))-dv0);
8522 qlo = (((-pe_t)*pow((1.0-(vl/pe_t)),(1.0-modelPar_me)))/(1.0-modelPar_me));
8523 qdbex = ((qlo+((pow((1.0-modelPar_fc),(-modelPar_me))*((Vbex-vl)+vl0))*(1.0+(((0.5*modelPar_me)*((Vbex-vl)+vl0))/(pe_t*(1.0-modelPar_fc))))))-q0);
8552 dv0 = ((-pc_t)*modelPar_fc);
8553 if ((modelPar_ajc<=0.0))
8558 pwq = pow((1.0-modelPar_fc),((-1.0)-modelPar_mc));
8559 qlo = ((pc_t*(1.0-((pwq*(1.0-modelPar_fc))*(1.0-modelPar_fc))))/(1.0-modelPar_mc));
8560 qhi = ((dvh*((1.0-modelPar_fc)+(((0.5*modelPar_mc)*dvh)/pc_t)))*pwq);
8564 if (((modelPar_vrt>0.0)&&(Vbep<(-modelPar_vrt))))
8566 qlo = ((pc_t*(1.0-(pow((1.0+(modelPar_vrt/pc_t)),(1.0-modelPar_mc))*(1.0-(((1.0-modelPar_mc)*(Vbep+modelPar_vrt))/(pc_t+modelPar_vrt))))))/(1.0-modelPar_mc));
8570 qlo = ((pc_t*(1.0-pow((1.0-(Vbep/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8578 if (((modelPar_vrt>0.0)&&(modelPar_art>0.0)))
8580 vn0 = ((modelPar_vrt+dv0)/(modelPar_vrt-dv0));
8581 vnl0 = ((2.0*vn0)/(sqrt((((vn0-1.0)*(vn0-1))+((4*modelPar_ajc)*modelPar_ajc)))+sqrt((((vn0+1.0)*(vn0+1))+((4*modelPar_art)*modelPar_art)))));
8582 vl0 = (0.5*(((vnl0*(modelPar_vrt-dv0))-modelPar_vrt)-dv0));
8583 qlo0 = ((pc_t*(1.0-pow((1.0-(vl0/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8584 vn = ((((2*Vbep)+modelPar_vrt)+dv0)/(modelPar_vrt-dv0));
8585 vnl = ((2.0*vn)/(sqrt((((vn-1.0)*(vn-1))+((4*modelPar_ajc)*modelPar_ajc)))+sqrt((((vn+1.0)*(vn+1))+((4*modelPar_art)*modelPar_art)))));
8586 vl = (0.5*(((vnl*(modelPar_vrt-dv0))-modelPar_vrt)-dv0));
8587 qlo = ((pc_t*(1.0-pow((1.0-(vl/pc_t)),(1.0-modelPar_mc))))/(1.0-modelPar_mc));
8588 sel = (0.5*(vnl+1.0));
8589 crt = pow((1.0+(modelPar_vrt/pc_t)),(-modelPar_mc));
8590 cmx = pow((1.0+(dv0/pc_t)),(-modelPar_mc));
8591 cl = (((1.0-sel)*crt)+(sel*cmx));
8592 ql = (((Vbep-vl)+vl0)*cl);
8593 qdbep = ((ql+qlo)-qlo0);
8597 mv0 = sqrt(((dv0*dv0)+((4*modelPar_ajc)*modelPar_ajc)));
8598 vl0 = ((-0.5)*(dv0+mv0));
8599 q0 = (((-pc_t)*pow((1.0-(vl0/pc_t)),(1.0-modelPar_mc)))/(1.0-modelPar_mc));
8601 mv = sqrt(((dv*dv)+((4*modelPar_ajc)*modelPar_ajc)));
8602 vl = ((0.5*(dv-mv))-dv0);
8603 qlo = (((-pc_t)*pow((1.0-(vl/pc_t)),(1.0-modelPar_mc)))/(1.0-modelPar_mc));
8604 qdbep = ((qlo+(pow((1.0-modelPar_fc),(-modelPar_mc))*((Vbep-vl)+vl0)))-q0);
8609 sgIf = ((Ifi>0.0)?1.0:0.0);
8610 rIf = ((Ifi*sgIf)*Iitf);
8611 mIf = (rIf/(rIf+1.0));
8612 arg = ((Vbci*Ivtf)/1.44);
8619 expi = (exp(VmaxExp)*(1.0+(arg-VmaxExp)));
8621 tff = ((modelPar_tf*(1.0+(modelPar_qtf*q1)))*(1.0+(((modelPar_xtf*expi)*(sltf+(mIf*mIf)))*sgIf)));
8622 Qbe = (((cje_t*qdbe)*modelPar_wbe)+((tff*Ifi)/qb));
8623 Qbex = ((cje_t*qdbex)*(1.0-modelPar_wbe));
8624 Qbc = (((cjc_t*qdbc)+(modelPar_tr*Iri))+(modelPar_qco*Kbci));
8625 Qbcx = (modelPar_qco*Kbcx);
8626 Qbep = ((cjep_t*qdbep)+(modelPar_tr*Ifp));
8627 Qbeo = (Vbe*modelPar_cbeo);
8628 Qbco = (Vbc*modelPar_cbco);
8629 Qcth = (dt_et*modelPar_cth);
8630 Qxf1 = (modelPar_td*Vxf1);
8631 Qxf2 = ((modelPar_td*Vxf2)*0.3333333333333333);
8632 Qbe = ((modelPar_VBICtype*mMod)*Qbe);
8633 Qbex = ((modelPar_VBICtype*mMod)*Qbex);
8634 Qbc = ((modelPar_VBICtype*mMod)*Qbc);
8635 Qbcx = ((modelPar_VBICtype*mMod)*Qbcx);
8636 Qbep = ((modelPar_VBICtype*mMod)*Qbep);
8645 staticContributions[admsNodeID_bi] += Ibe;
8646 staticContributions[admsNodeID_ei] -= Ibe;
8648 staticContributions[admsNodeID_bx] += Ibex;
8649 staticContributions[admsNodeID_ei] -= Ibex;
8651 staticContributions[admsNodeID_ci] += Itxf;
8652 staticContributions[admsNodeID_ei] -= Itxf;
8654 staticContributions[admsNodeID_ei] += Itzr;
8655 staticContributions[admsNodeID_ci] -= Itzr;
8657 staticContributions[admsNodeID_bi] += Ibc;
8658 staticContributions[admsNodeID_ci] -= Ibc;
8660 staticContributions[admsNodeID_bx] += Igcx;
8661 staticContributions[admsNodeID_cx] -= Igcx;
8663 staticContributions[admsNodeID_bx] += Ibep;
8664 staticContributions[admsNodeID_bp] -= Ibep;
8666 staticContributions[admsNodeID_c] += Ircx;
8667 staticContributions[admsNodeID_cx] -= Ircx;
8669 staticContributions[admsNodeID_cx] += Irci;
8670 staticContributions[admsNodeID_ci] -= Irci;
8672 staticContributions[admsNodeID_b] += Irbx;
8673 staticContributions[admsNodeID_bx] -= Irbx;
8675 staticContributions[admsNodeID_bx] += Irbi;
8676 staticContributions[admsNodeID_bi] -= Irbi;
8678 staticContributions[admsNodeID_e] += Ire;
8679 staticContributions[admsNodeID_ei] -= Ire;
8681 staticContributions[admsNodeID_bp] += Irbp;
8682 staticContributions[admsNodeID_cx] -= Irbp;
8684 staticContributions[admsNodeID_xf1] += Ixf1;
8686 staticContributions[admsNodeID_xf2] += Ixf2;
8688 staticContributions[admsNodeID_dt] += Irth;
8690 staticContributions[admsNodeID_dt] += Ith;
8696 dynamicContributions[admsNodeID_bi] += (Qbe);
8697 dynamicContributions[admsNodeID_ei] -= (Qbe);
8699 dynamicContributions[admsNodeID_bx] += (Qbex);
8700 dynamicContributions[admsNodeID_ei] -= (Qbex);
8702 dynamicContributions[admsNodeID_bi] += (Qbc);
8703 dynamicContributions[admsNodeID_ci] -= (Qbc);
8705 dynamicContributions[admsNodeID_bi] += (Qbcx);
8706 dynamicContributions[admsNodeID_cx] -= (Qbcx);
8708 dynamicContributions[admsNodeID_bx] += (Qbep);
8709 dynamicContributions[admsNodeID_bp] -= (Qbep);
8711 dynamicContributions[admsNodeID_b] += (Qbeo);
8712 dynamicContributions[admsNodeID_e] -= (Qbeo);
8714 dynamicContributions[admsNodeID_b] += (Qbco);
8715 dynamicContributions[admsNodeID_c] -= (Qbco);
8717 dynamicContributions[admsNodeID_xf1] += (Qxf1);
8719 dynamicContributions[admsNodeID_xf2] += (Qxf2);
8721 dynamicContributions[admsNodeID_dt] += (Qcth);
8750 void InstanceSensitivity::operator()
8752 const ParameterBase &entity,
8753 const std::string &name,
8754 std::vector<double> & dfdp,
8755 std::vector<double> & dqdp,
8756 std::vector<double> & dbdp,
8757 std::vector<int> & Findices,
8758 std::vector<int> & Qindices,
8759 std::vector<int> & Bindices
8762 const ParameterBase * e1 = &entity;
8763 const Instance & in = *(
dynamic_cast<const Instance *
> (e1));
8764 const Model & mod =in.model_;
8768 Findices.resize(12+0);
8769 Qindices.resize(12+0);
8771 std::vector <double> probeVars(18);
8772 std::vector <AdmsSensFadType> staticContributions(12+0);
8773 std::vector <AdmsSensFadType> dynamicContributions(12+0);
8777 for (
int i=0; i < 12+0 ; ++i)
8779 staticContributions[i]=0;
8780 dynamicContributions[i]=0;
8786 bool modelPar_given_npn=mod.given(
"npn");
8788 bool modelPar_given_pnp=mod.given(
"pnp");
8790 bool modelPar_given_scale=mod.given(
"scale");
8792 bool modelPar_given_shrink=mod.given(
"shrink");
8794 bool modelPar_given_tmin=mod.given(
"tmin");
8796 bool modelPar_given_tmax=mod.given(
"tmax");
8798 bool modelPar_given_gmin=mod.given(
"gmin");
8800 bool modelPar_given_pnjmaxi=mod.given(
"pnjmaxi");
8802 bool modelPar_given_maxexp=mod.given(
"maxexp");
8804 bool modelPar_given_tnom=mod.given(
"tnom");
8806 bool modelPar_given_tminclip=mod.given(
"tminclip");
8808 bool modelPar_given_tmaxclip=mod.given(
"tmaxclip");
8810 bool modelPar_given_rcx=mod.given(
"rcx");
8812 bool modelPar_given_rci=mod.given(
"rci");
8814 bool modelPar_given_vo=mod.given(
"vo");
8816 bool modelPar_given_gamm=mod.given(
"gamm");
8818 bool modelPar_given_hrcf=mod.given(
"hrcf");
8820 bool modelPar_given_rbx=mod.given(
"rbx");
8822 bool modelPar_given_rbi=mod.given(
"rbi");
8824 bool modelPar_given_re=mod.given(
"re");
8826 bool modelPar_given_rs=mod.given(
"rs");
8828 bool modelPar_given_rbp=mod.given(
"rbp");
8830 bool modelPar_given_is=mod.given(
"is");
8832 bool modelPar_given_isrr=mod.given(
"isrr");
8834 bool modelPar_given_nf=mod.given(
"nf");
8836 bool modelPar_given_nr=mod.given(
"nr");
8838 bool modelPar_given_isp=mod.given(
"isp");
8840 bool modelPar_given_wsp=mod.given(
"wsp");
8842 bool modelPar_given_nfp=mod.given(
"nfp");
8844 bool modelPar_given_fc=mod.given(
"fc");
8846 bool modelPar_given_cbeo=mod.given(
"cbeo");
8848 bool modelPar_given_cje=mod.given(
"cje");
8850 bool modelPar_given_pe=mod.given(
"pe");
8852 bool modelPar_given_me=mod.given(
"me");
8854 bool modelPar_given_aje=mod.given(
"aje");
8856 bool modelPar_given_cbco=mod.given(
"cbco");
8858 bool modelPar_given_cjc=mod.given(
"cjc");
8860 bool modelPar_given_pc=mod.given(
"pc");
8862 bool modelPar_given_mc=mod.given(
"mc");
8864 bool modelPar_given_ajc=mod.given(
"ajc");
8866 bool modelPar_given_vrt=mod.given(
"vrt");
8868 bool modelPar_given_art=mod.given(
"art");
8870 bool modelPar_given_qco=mod.given(
"qco");
8872 bool modelPar_given_cjep=mod.given(
"cjep");
8874 bool modelPar_given_cjcp=mod.given(
"cjcp");
8876 bool modelPar_given_ps=mod.given(
"ps");
8878 bool modelPar_given_ms=mod.given(
"ms");
8880 bool modelPar_given_ajs=mod.given(
"ajs");
8882 bool modelPar_given_ccso=mod.given(
"ccso");
8884 bool modelPar_given_ibei=mod.given(
"ibei");
8886 bool modelPar_given_wbe=mod.given(
"wbe");
8888 bool modelPar_given_nei=mod.given(
"nei");
8890 bool modelPar_given_qnibeir=mod.given(
"qnibeir");
8892 bool modelPar_given_iben=mod.given(
"iben");
8894 bool modelPar_given_nen=mod.given(
"nen");
8896 bool modelPar_given_ibci=mod.given(
"ibci");
8898 bool modelPar_given_nci=mod.given(
"nci");
8900 bool modelPar_given_ibcn=mod.given(
"ibcn");
8902 bool modelPar_given_ncn=mod.given(
"ncn");
8904 bool modelPar_given_ibeip=mod.given(
"ibeip");
8906 bool modelPar_given_ibenp=mod.given(
"ibenp");
8908 bool modelPar_given_ibcip=mod.given(
"ibcip");
8910 bool modelPar_given_ncip=mod.given(
"ncip");
8912 bool modelPar_given_ibcnp=mod.given(
"ibcnp");
8914 bool modelPar_given_ncnp=mod.given(
"ncnp");
8916 bool modelPar_given_vef=mod.given(
"vef");
8918 bool modelPar_given_ver=mod.given(
"ver");
8920 bool modelPar_given_ikf=mod.given(
"ikf");
8922 bool modelPar_given_nkf=mod.given(
"nkf");
8924 bool modelPar_given_ikr=mod.given(
"ikr");
8926 bool modelPar_given_ikp=mod.given(
"ikp");
8928 bool modelPar_given_tf=mod.given(
"tf");
8930 bool modelPar_given_qtf=mod.given(
"qtf");
8932 bool modelPar_given_xtf=mod.given(
"xtf");
8934 bool modelPar_given_vtf=mod.given(
"vtf");
8936 bool modelPar_given_itf=mod.given(
"itf");
8938 bool modelPar_given_tr=mod.given(
"tr");
8940 bool modelPar_given_td=mod.given(
"td");
8942 bool modelPar_given_avc1=mod.given(
"avc1");
8944 bool modelPar_given_avc2=mod.given(
"avc2");
8946 bool modelPar_given_avcx1=mod.given(
"avcx1");
8948 bool modelPar_given_avcx2=mod.given(
"avcx2");
8950 bool modelPar_given_mcx=mod.given(
"mcx");
8952 bool modelPar_given_vbbe=mod.given(
"vbbe");
8954 bool modelPar_given_nbbe=mod.given(
"nbbe");
8956 bool modelPar_given_ibbe=mod.given(
"ibbe");
8958 bool modelPar_given_tvbbe1=mod.given(
"tvbbe1");
8960 bool modelPar_given_tvbbe2=mod.given(
"tvbbe2");
8962 bool modelPar_given_tnbbe=mod.given(
"tnbbe");
8964 bool modelPar_given_vpte=mod.given(
"vpte");
8966 bool modelPar_given_ibk0=mod.given(
"ibk0");
8968 bool modelPar_given_abk=mod.given(
"abk");
8970 bool modelPar_given_bbk=mod.given(
"bbk");
8972 bool modelPar_given_kfn=mod.given(
"kfn");
8974 bool modelPar_given_afn=mod.given(
"afn");
8976 bool modelPar_given_bfn=mod.given(
"bfn");
8978 bool modelPar_given_rth=mod.given(
"rth");
8980 bool modelPar_given_cth=mod.given(
"cth");
8982 bool modelPar_given_xre=mod.given(
"xre");
8984 bool modelPar_given_xrb=mod.given(
"xrb");
8986 bool modelPar_given_xrbi=mod.given(
"xrbi");
8988 bool modelPar_given_xrbx=mod.given(
"xrbx");
8990 bool modelPar_given_xrc=mod.given(
"xrc");
8992 bool modelPar_given_xrci=mod.given(
"xrci");
8994 bool modelPar_given_xrcx=mod.given(
"xrcx");
8996 bool modelPar_given_xrbp=mod.given(
"xrbp");
8998 bool modelPar_given_xrs=mod.given(
"xrs");
9000 bool modelPar_given_xvo=mod.given(
"xvo");
9002 bool modelPar_given_ea=mod.given(
"ea");
9004 bool modelPar_given_eaie=mod.given(
"eaie");
9006 bool modelPar_given_eaic=mod.given(
"eaic");
9008 bool modelPar_given_eais=mod.given(
"eais");
9010 bool modelPar_given_eane=mod.given(
"eane");
9012 bool modelPar_given_eanc=mod.given(
"eanc");
9014 bool modelPar_given_eans=mod.given(
"eans");
9016 bool modelPar_given_eap=mod.given(
"eap");
9018 bool modelPar_given_dear=mod.given(
"dear");
9020 bool modelPar_given_xis=mod.given(
"xis");
9022 bool modelPar_given_xii=mod.given(
"xii");
9024 bool modelPar_given_xin=mod.given(
"xin");
9026 bool modelPar_given_xisr=mod.given(
"xisr");
9028 bool modelPar_given_xikf=mod.given(
"xikf");
9030 bool modelPar_given_tavc=mod.given(
"tavc");
9032 bool modelPar_given_tavcx=mod.given(
"tavcx");
9034 bool modelPar_given_tnf=mod.given(
"tnf");
9036 bool modelPar_given_tcvef=mod.given(
"tcvef");
9038 bool modelPar_given_tcver=mod.given(
"tcver");
9040 bool modelPar_given_tcrth=mod.given(
"tcrth");
9047 int modelPar_type=mod.type;
9048 bool modelPar_given_type=mod.given(
"type");
9049 int modelPar_VBICtype=mod.VBICtype;
9050 int modelPar_qbm=mod.qbm;
9051 bool modelPar_given_qbm=mod.given(
"qbm");
9059 unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> inParamMap;
9063 bool instancePar_given_m=in.given(
"m");
9064 inParamMap[
"m"] = &instancePar_m;
9066 bool instancePar_given_trise=in.given(
"trise");
9067 inParamMap[
"trise"] = &instancePar_trise;
9075 int instancePar_sw_noise=in.sw_noise;
9076 bool instancePar_given_sw_noise=in.given(
"sw_noise");
9077 int instancePar_sw_et=in.sw_et;
9078 bool instancePar_given_sw_et=in.given(
"sw_et");
9085 inParamMap[name]->diff(0,1);
9102 Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
9106 probeVars[in.admsProbeID_V_xf2_GND] = (*solVectorPtr)[in.li_xf2];
9107 probeVars[in.admsProbeID_V_xf1_GND] = (*solVectorPtr)[in.li_xf1];
9108 probeVars[in.admsProbeID_V_bp_cx] = (*solVectorPtr)[in.li_bp] - (*solVectorPtr)[in.li_cx];
9109 probeVars[in.admsProbeID_V_e_ei] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_ei];
9110 probeVars[in.admsProbeID_V_bx_bi] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bi];
9111 probeVars[in.admsProbeID_V_b_bx] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_bx];
9112 probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
9113 probeVars[in.admsProbeID_V_c_cx] = (*solVectorPtr)[in.li_c] - (*solVectorPtr)[in.li_cx];
9114 probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
9115 probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
9116 probeVars[in.admsProbeID_V_bx_bp] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bp];
9117 probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
9118 probeVars[in.admsProbeID_V_bx_cx] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_cx];
9119 probeVars[in.admsProbeID_V_bi_cx] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_cx];
9120 probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
9121 probeVars[in.admsProbeID_V_bx_ei] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_ei];
9122 probeVars[in.admsProbeID_V_bi_ei] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ei];
9123 probeVars[in.admsProbeID_Temp_dt_GND] = (*solVectorPtr)[in.li_dt];
9126 probeVars[in.admsProbeID_V_bx_bp] *= modelPar_VBICtype;
9127 probeVars[in.admsProbeID_V_bx_cx] *= modelPar_VBICtype;
9128 probeVars[in.admsProbeID_V_bi_cx] *= modelPar_VBICtype;
9129 probeVars[in.admsProbeID_V_bi_ci] *= modelPar_VBICtype;
9130 probeVars[in.admsProbeID_V_bx_ei] *= modelPar_VBICtype;
9131 probeVars[in.admsProbeID_V_bi_ei] *= modelPar_VBICtype;
9136 evaluateModelEquations(
9139 in.admsProbeID_V_xf2_GND,
9140 in.admsProbeID_V_xf1_GND,
9141 in.admsProbeID_V_bp_cx,
9142 in.admsProbeID_V_e_ei,
9143 in.admsProbeID_V_bx_bi,
9144 in.admsProbeID_V_b_bx,
9145 in.admsProbeID_V_cx_ci,
9146 in.admsProbeID_V_c_cx,
9147 in.admsProbeID_V_b_c,
9148 in.admsProbeID_V_b_e,
9149 in.admsProbeID_V_bx_bp,
9150 in.admsProbeID_V_ci_ei,
9151 in.admsProbeID_V_bx_cx,
9152 in.admsProbeID_V_bi_cx,
9153 in.admsProbeID_V_bi_ci,
9154 in.admsProbeID_V_bx_ei,
9155 in.admsProbeID_V_bi_ei,
9156 in.admsProbeID_Temp_dt_GND,
9174 instancePar_given_m,
9176 instancePar_given_trise,
9178 instancePar_sw_noise,
9179 instancePar_given_sw_noise,
9181 instancePar_given_sw_et,
9189 modelPar_given_scale,
9191 modelPar_given_shrink,
9193 modelPar_given_tmin,
9195 modelPar_given_tmax,
9197 modelPar_given_gmin,
9199 modelPar_given_pnjmaxi,
9201 modelPar_given_maxexp,
9203 modelPar_given_tnom,
9205 modelPar_given_tminclip,
9207 modelPar_given_tmaxclip,
9215 modelPar_given_gamm,
9217 modelPar_given_hrcf,
9231 modelPar_given_isrr,
9245 modelPar_given_cbeo,
9255 modelPar_given_cbco,
9271 modelPar_given_cjep,
9273 modelPar_given_cjcp,
9281 modelPar_given_ccso,
9283 modelPar_given_ibei,
9289 modelPar_given_qnibeir,
9291 modelPar_given_iben,
9295 modelPar_given_ibci,
9299 modelPar_given_ibcn,
9303 modelPar_given_ibeip,
9305 modelPar_given_ibenp,
9307 modelPar_given_ibcip,
9309 modelPar_given_ncip,
9311 modelPar_given_ibcnp,
9313 modelPar_given_ncnp,
9341 modelPar_given_avc1,
9343 modelPar_given_avc2,
9345 modelPar_given_avcx1,
9347 modelPar_given_avcx2,
9351 modelPar_given_vbbe,
9353 modelPar_given_nbbe,
9355 modelPar_given_ibbe,
9357 modelPar_given_tvbbe1,
9359 modelPar_given_tvbbe2,
9361 modelPar_given_tnbbe,
9363 modelPar_given_vpte,
9365 modelPar_given_ibk0,
9385 modelPar_given_xrbi,
9387 modelPar_given_xrbx,
9391 modelPar_given_xrci,
9393 modelPar_given_xrcx,
9395 modelPar_given_xrbp,
9403 modelPar_given_eaie,
9405 modelPar_given_eaic,
9407 modelPar_given_eais,
9409 modelPar_given_eane,
9411 modelPar_given_eanc,
9413 modelPar_given_eans,
9417 modelPar_given_dear,
9425 modelPar_given_xisr,
9427 modelPar_given_xikf,
9429 modelPar_given_tavc,
9431 modelPar_given_tavcx,
9435 modelPar_given_tcvef,
9437 modelPar_given_tcver,
9439 modelPar_given_tcrth,
9442 modelPar_given_type,
9448 in.getDeviceOptions().gmin,
9449 staticContributions,
9450 dynamicContributions,
9456 dfdp[in.admsNodeID_c] += staticContributions[in.admsNodeID_c].dx(0);
9457 dqdp[in.admsNodeID_c] += dynamicContributions[in.admsNodeID_c].dx(0);
9458 Findices[in.admsNodeID_c] = in.li_c;
9459 Qindices[in.admsNodeID_c] = in.li_c;
9460 dfdp[in.admsNodeID_b] += staticContributions[in.admsNodeID_b].dx(0);
9461 dqdp[in.admsNodeID_b] += dynamicContributions[in.admsNodeID_b].dx(0);
9462 Findices[in.admsNodeID_b] = in.li_b;
9463 Qindices[in.admsNodeID_b] = in.li_b;
9464 dfdp[in.admsNodeID_e] += staticContributions[in.admsNodeID_e].dx(0);
9465 dqdp[in.admsNodeID_e] += dynamicContributions[in.admsNodeID_e].dx(0);
9466 Findices[in.admsNodeID_e] = in.li_e;
9467 Qindices[in.admsNodeID_e] = in.li_e;
9468 dfdp[in.admsNodeID_dt] += staticContributions[in.admsNodeID_dt].dx(0);
9469 dqdp[in.admsNodeID_dt] += dynamicContributions[in.admsNodeID_dt].dx(0);
9470 Findices[in.admsNodeID_dt] = in.li_dt;
9471 Qindices[in.admsNodeID_dt] = in.li_dt;
9472 dfdp[in.admsNodeID_cx] += staticContributions[in.admsNodeID_cx].dx(0);
9473 dqdp[in.admsNodeID_cx] += dynamicContributions[in.admsNodeID_cx].dx(0);
9474 Findices[in.admsNodeID_cx] = in.li_cx;
9475 Qindices[in.admsNodeID_cx] = in.li_cx;
9476 dfdp[in.admsNodeID_ci] += staticContributions[in.admsNodeID_ci].dx(0);
9477 dqdp[in.admsNodeID_ci] += dynamicContributions[in.admsNodeID_ci].dx(0);
9478 Findices[in.admsNodeID_ci] = in.li_ci;
9479 Qindices[in.admsNodeID_ci] = in.li_ci;
9480 dfdp[in.admsNodeID_bx] += staticContributions[in.admsNodeID_bx].dx(0);
9481 dqdp[in.admsNodeID_bx] += dynamicContributions[in.admsNodeID_bx].dx(0);
9482 Findices[in.admsNodeID_bx] = in.li_bx;
9483 Qindices[in.admsNodeID_bx] = in.li_bx;
9484 dfdp[in.admsNodeID_bi] += staticContributions[in.admsNodeID_bi].dx(0);
9485 dqdp[in.admsNodeID_bi] += dynamicContributions[in.admsNodeID_bi].dx(0);
9486 Findices[in.admsNodeID_bi] = in.li_bi;
9487 Qindices[in.admsNodeID_bi] = in.li_bi;
9488 dfdp[in.admsNodeID_ei] += staticContributions[in.admsNodeID_ei].dx(0);
9489 dqdp[in.admsNodeID_ei] += dynamicContributions[in.admsNodeID_ei].dx(0);
9490 Findices[in.admsNodeID_ei] = in.li_ei;
9491 Qindices[in.admsNodeID_ei] = in.li_ei;
9492 dfdp[in.admsNodeID_bp] += staticContributions[in.admsNodeID_bp].dx(0);
9493 dqdp[in.admsNodeID_bp] += dynamicContributions[in.admsNodeID_bp].dx(0);
9494 Findices[in.admsNodeID_bp] = in.li_bp;
9495 Qindices[in.admsNodeID_bp] = in.li_bp;
9496 dfdp[in.admsNodeID_xf1] += staticContributions[in.admsNodeID_xf1].dx(0);
9497 dqdp[in.admsNodeID_xf1] += dynamicContributions[in.admsNodeID_xf1].dx(0);
9498 Findices[in.admsNodeID_xf1] = in.li_xf1;
9499 Qindices[in.admsNodeID_xf1] = in.li_xf1;
9500 dfdp[in.admsNodeID_xf2] += staticContributions[in.admsNodeID_xf2].dx(0);
9501 dqdp[in.admsNodeID_xf2] += dynamicContributions[in.admsNodeID_xf2].dx(0);
9502 Findices[in.admsNodeID_xf2] = in.li_xf2;
9503 Qindices[in.admsNodeID_xf2] = in.li_xf2;
9530 void ModelSensitivity::operator()
9532 const ParameterBase &entity,
9533 const std::string &name,
9534 std::vector<double> & dfdp,
9535 std::vector<double> & dqdp,
9536 std::vector<double> & dbdp,
9537 std::vector<int> & Findices,
9538 std::vector<int> & Qindices,
9539 std::vector<int> & Bindices
9542 const ParameterBase * e1 = &entity;
9543 const Model & mod = *(
dynamic_cast<const Model *
> (e1));
9544 int sizeInstance = mod.instanceContainer.size();
9546 dfdp.resize((12+0)*sizeInstance);
9547 dqdp.resize((12+0)*sizeInstance);
9548 Findices.resize((12+0)*sizeInstance);
9549 Qindices.resize((12+0)*sizeInstance);
9551 std::vector <double> probeVars(18);
9552 std::vector <AdmsSensFadType> staticContributions(12+0);
9553 std::vector <AdmsSensFadType> dynamicContributions(12+0);
9560 unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> modParamMap;
9564 bool modelPar_given_npn=mod.given(
"npn");
9565 modParamMap[
"npn"] = &modelPar_npn;
9567 bool modelPar_given_pnp=mod.given(
"pnp");
9568 modParamMap[
"pnp"] = &modelPar_pnp;
9570 bool modelPar_given_scale=mod.given(
"scale");
9571 modParamMap[
"scale"] = &modelPar_scale;
9573 bool modelPar_given_shrink=mod.given(
"shrink");
9574 modParamMap[
"shrink"] = &modelPar_shrink;
9576 bool modelPar_given_tmin=mod.given(
"tmin");
9577 modParamMap[
"tmin"] = &modelPar_tmin;
9579 bool modelPar_given_tmax=mod.given(
"tmax");
9580 modParamMap[
"tmax"] = &modelPar_tmax;
9582 bool modelPar_given_gmin=mod.given(
"gmin");
9583 modParamMap[
"gmin"] = &modelPar_gmin;
9585 bool modelPar_given_pnjmaxi=mod.given(
"pnjmaxi");
9586 modParamMap[
"pnjmaxi"] = &modelPar_pnjmaxi;
9588 bool modelPar_given_maxexp=mod.given(
"maxexp");
9589 modParamMap[
"maxexp"] = &modelPar_maxexp;
9591 bool modelPar_given_tnom=mod.given(
"tnom");
9592 modParamMap[
"tnom"] = &modelPar_tnom;
9594 bool modelPar_given_tminclip=mod.given(
"tminclip");
9595 modParamMap[
"tminclip"] = &modelPar_tminclip;
9597 bool modelPar_given_tmaxclip=mod.given(
"tmaxclip");
9598 modParamMap[
"tmaxclip"] = &modelPar_tmaxclip;
9600 bool modelPar_given_rcx=mod.given(
"rcx");
9601 modParamMap[
"rcx"] = &modelPar_rcx;
9603 bool modelPar_given_rci=mod.given(
"rci");
9604 modParamMap[
"rci"] = &modelPar_rci;
9606 bool modelPar_given_vo=mod.given(
"vo");
9607 modParamMap[
"vo"] = &modelPar_vo;
9609 bool modelPar_given_gamm=mod.given(
"gamm");
9610 modParamMap[
"gamm"] = &modelPar_gamm;
9612 bool modelPar_given_hrcf=mod.given(
"hrcf");
9613 modParamMap[
"hrcf"] = &modelPar_hrcf;
9615 bool modelPar_given_rbx=mod.given(
"rbx");
9616 modParamMap[
"rbx"] = &modelPar_rbx;
9618 bool modelPar_given_rbi=mod.given(
"rbi");
9619 modParamMap[
"rbi"] = &modelPar_rbi;
9621 bool modelPar_given_re=mod.given(
"re");
9622 modParamMap[
"re"] = &modelPar_re;
9624 bool modelPar_given_rs=mod.given(
"rs");
9625 modParamMap[
"rs"] = &modelPar_rs;
9627 bool modelPar_given_rbp=mod.given(
"rbp");
9628 modParamMap[
"rbp"] = &modelPar_rbp;
9630 bool modelPar_given_is=mod.given(
"is");
9631 modParamMap[
"is"] = &modelPar_is;
9633 bool modelPar_given_isrr=mod.given(
"isrr");
9634 modParamMap[
"isrr"] = &modelPar_isrr;
9636 bool modelPar_given_nf=mod.given(
"nf");
9637 modParamMap[
"nf"] = &modelPar_nf;
9639 bool modelPar_given_nr=mod.given(
"nr");
9640 modParamMap[
"nr"] = &modelPar_nr;
9642 bool modelPar_given_isp=mod.given(
"isp");
9643 modParamMap[
"isp"] = &modelPar_isp;
9645 bool modelPar_given_wsp=mod.given(
"wsp");
9646 modParamMap[
"wsp"] = &modelPar_wsp;
9648 bool modelPar_given_nfp=mod.given(
"nfp");
9649 modParamMap[
"nfp"] = &modelPar_nfp;
9651 bool modelPar_given_fc=mod.given(
"fc");
9652 modParamMap[
"fc"] = &modelPar_fc;
9654 bool modelPar_given_cbeo=mod.given(
"cbeo");
9655 modParamMap[
"cbeo"] = &modelPar_cbeo;
9657 bool modelPar_given_cje=mod.given(
"cje");
9658 modParamMap[
"cje"] = &modelPar_cje;
9660 bool modelPar_given_pe=mod.given(
"pe");
9661 modParamMap[
"pe"] = &modelPar_pe;
9663 bool modelPar_given_me=mod.given(
"me");
9664 modParamMap[
"me"] = &modelPar_me;
9666 bool modelPar_given_aje=mod.given(
"aje");
9667 modParamMap[
"aje"] = &modelPar_aje;
9669 bool modelPar_given_cbco=mod.given(
"cbco");
9670 modParamMap[
"cbco"] = &modelPar_cbco;
9672 bool modelPar_given_cjc=mod.given(
"cjc");
9673 modParamMap[
"cjc"] = &modelPar_cjc;
9675 bool modelPar_given_pc=mod.given(
"pc");
9676 modParamMap[
"pc"] = &modelPar_pc;
9678 bool modelPar_given_mc=mod.given(
"mc");
9679 modParamMap[
"mc"] = &modelPar_mc;
9681 bool modelPar_given_ajc=mod.given(
"ajc");
9682 modParamMap[
"ajc"] = &modelPar_ajc;
9684 bool modelPar_given_vrt=mod.given(
"vrt");
9685 modParamMap[
"vrt"] = &modelPar_vrt;
9687 bool modelPar_given_art=mod.given(
"art");
9688 modParamMap[
"art"] = &modelPar_art;
9690 bool modelPar_given_qco=mod.given(
"qco");
9691 modParamMap[
"qco"] = &modelPar_qco;
9693 bool modelPar_given_cjep=mod.given(
"cjep");
9694 modParamMap[
"cjep"] = &modelPar_cjep;
9696 bool modelPar_given_cjcp=mod.given(
"cjcp");
9697 modParamMap[
"cjcp"] = &modelPar_cjcp;
9699 bool modelPar_given_ps=mod.given(
"ps");
9700 modParamMap[
"ps"] = &modelPar_ps;
9702 bool modelPar_given_ms=mod.given(
"ms");
9703 modParamMap[
"ms"] = &modelPar_ms;
9705 bool modelPar_given_ajs=mod.given(
"ajs");
9706 modParamMap[
"ajs"] = &modelPar_ajs;
9708 bool modelPar_given_ccso=mod.given(
"ccso");
9709 modParamMap[
"ccso"] = &modelPar_ccso;
9711 bool modelPar_given_ibei=mod.given(
"ibei");
9712 modParamMap[
"ibei"] = &modelPar_ibei;
9714 bool modelPar_given_wbe=mod.given(
"wbe");
9715 modParamMap[
"wbe"] = &modelPar_wbe;
9717 bool modelPar_given_nei=mod.given(
"nei");
9718 modParamMap[
"nei"] = &modelPar_nei;
9720 bool modelPar_given_qnibeir=mod.given(
"qnibeir");
9721 modParamMap[
"qnibeir"] = &modelPar_qnibeir;
9723 bool modelPar_given_iben=mod.given(
"iben");
9724 modParamMap[
"iben"] = &modelPar_iben;
9726 bool modelPar_given_nen=mod.given(
"nen");
9727 modParamMap[
"nen"] = &modelPar_nen;
9729 bool modelPar_given_ibci=mod.given(
"ibci");
9730 modParamMap[
"ibci"] = &modelPar_ibci;
9732 bool modelPar_given_nci=mod.given(
"nci");
9733 modParamMap[
"nci"] = &modelPar_nci;
9735 bool modelPar_given_ibcn=mod.given(
"ibcn");
9736 modParamMap[
"ibcn"] = &modelPar_ibcn;
9738 bool modelPar_given_ncn=mod.given(
"ncn");
9739 modParamMap[
"ncn"] = &modelPar_ncn;
9741 bool modelPar_given_ibeip=mod.given(
"ibeip");
9742 modParamMap[
"ibeip"] = &modelPar_ibeip;
9744 bool modelPar_given_ibenp=mod.given(
"ibenp");
9745 modParamMap[
"ibenp"] = &modelPar_ibenp;
9747 bool modelPar_given_ibcip=mod.given(
"ibcip");
9748 modParamMap[
"ibcip"] = &modelPar_ibcip;
9750 bool modelPar_given_ncip=mod.given(
"ncip");
9751 modParamMap[
"ncip"] = &modelPar_ncip;
9753 bool modelPar_given_ibcnp=mod.given(
"ibcnp");
9754 modParamMap[
"ibcnp"] = &modelPar_ibcnp;
9756 bool modelPar_given_ncnp=mod.given(
"ncnp");
9757 modParamMap[
"ncnp"] = &modelPar_ncnp;
9759 bool modelPar_given_vef=mod.given(
"vef");
9760 modParamMap[
"vef"] = &modelPar_vef;
9762 bool modelPar_given_ver=mod.given(
"ver");
9763 modParamMap[
"ver"] = &modelPar_ver;
9765 bool modelPar_given_ikf=mod.given(
"ikf");
9766 modParamMap[
"ikf"] = &modelPar_ikf;
9768 bool modelPar_given_nkf=mod.given(
"nkf");
9769 modParamMap[
"nkf"] = &modelPar_nkf;
9771 bool modelPar_given_ikr=mod.given(
"ikr");
9772 modParamMap[
"ikr"] = &modelPar_ikr;
9774 bool modelPar_given_ikp=mod.given(
"ikp");
9775 modParamMap[
"ikp"] = &modelPar_ikp;
9777 bool modelPar_given_tf=mod.given(
"tf");
9778 modParamMap[
"tf"] = &modelPar_tf;
9780 bool modelPar_given_qtf=mod.given(
"qtf");
9781 modParamMap[
"qtf"] = &modelPar_qtf;
9783 bool modelPar_given_xtf=mod.given(
"xtf");
9784 modParamMap[
"xtf"] = &modelPar_xtf;
9786 bool modelPar_given_vtf=mod.given(
"vtf");
9787 modParamMap[
"vtf"] = &modelPar_vtf;
9789 bool modelPar_given_itf=mod.given(
"itf");
9790 modParamMap[
"itf"] = &modelPar_itf;
9792 bool modelPar_given_tr=mod.given(
"tr");
9793 modParamMap[
"tr"] = &modelPar_tr;
9795 bool modelPar_given_td=mod.given(
"td");
9796 modParamMap[
"td"] = &modelPar_td;
9798 bool modelPar_given_avc1=mod.given(
"avc1");
9799 modParamMap[
"avc1"] = &modelPar_avc1;
9801 bool modelPar_given_avc2=mod.given(
"avc2");
9802 modParamMap[
"avc2"] = &modelPar_avc2;
9804 bool modelPar_given_avcx1=mod.given(
"avcx1");
9805 modParamMap[
"avcx1"] = &modelPar_avcx1;
9807 bool modelPar_given_avcx2=mod.given(
"avcx2");
9808 modParamMap[
"avcx2"] = &modelPar_avcx2;
9810 bool modelPar_given_mcx=mod.given(
"mcx");
9811 modParamMap[
"mcx"] = &modelPar_mcx;
9813 bool modelPar_given_vbbe=mod.given(
"vbbe");
9814 modParamMap[
"vbbe"] = &modelPar_vbbe;
9816 bool modelPar_given_nbbe=mod.given(
"nbbe");
9817 modParamMap[
"nbbe"] = &modelPar_nbbe;
9819 bool modelPar_given_ibbe=mod.given(
"ibbe");
9820 modParamMap[
"ibbe"] = &modelPar_ibbe;
9822 bool modelPar_given_tvbbe1=mod.given(
"tvbbe1");
9823 modParamMap[
"tvbbe1"] = &modelPar_tvbbe1;
9825 bool modelPar_given_tvbbe2=mod.given(
"tvbbe2");
9826 modParamMap[
"tvbbe2"] = &modelPar_tvbbe2;
9828 bool modelPar_given_tnbbe=mod.given(
"tnbbe");
9829 modParamMap[
"tnbbe"] = &modelPar_tnbbe;
9831 bool modelPar_given_vpte=mod.given(
"vpte");
9832 modParamMap[
"vpte"] = &modelPar_vpte;
9834 bool modelPar_given_ibk0=mod.given(
"ibk0");
9835 modParamMap[
"ibk0"] = &modelPar_ibk0;
9837 bool modelPar_given_abk=mod.given(
"abk");
9838 modParamMap[
"abk"] = &modelPar_abk;
9840 bool modelPar_given_bbk=mod.given(
"bbk");
9841 modParamMap[
"bbk"] = &modelPar_bbk;
9843 bool modelPar_given_kfn=mod.given(
"kfn");
9844 modParamMap[
"kfn"] = &modelPar_kfn;
9846 bool modelPar_given_afn=mod.given(
"afn");
9847 modParamMap[
"afn"] = &modelPar_afn;
9849 bool modelPar_given_bfn=mod.given(
"bfn");
9850 modParamMap[
"bfn"] = &modelPar_bfn;
9852 bool modelPar_given_rth=mod.given(
"rth");
9853 modParamMap[
"rth"] = &modelPar_rth;
9855 bool modelPar_given_cth=mod.given(
"cth");
9856 modParamMap[
"cth"] = &modelPar_cth;
9858 bool modelPar_given_xre=mod.given(
"xre");
9859 modParamMap[
"xre"] = &modelPar_xre;
9861 bool modelPar_given_xrb=mod.given(
"xrb");
9862 modParamMap[
"xrb"] = &modelPar_xrb;
9864 bool modelPar_given_xrbi=mod.given(
"xrbi");
9865 modParamMap[
"xrbi"] = &modelPar_xrbi;
9867 bool modelPar_given_xrbx=mod.given(
"xrbx");
9868 modParamMap[
"xrbx"] = &modelPar_xrbx;
9870 bool modelPar_given_xrc=mod.given(
"xrc");
9871 modParamMap[
"xrc"] = &modelPar_xrc;
9873 bool modelPar_given_xrci=mod.given(
"xrci");
9874 modParamMap[
"xrci"] = &modelPar_xrci;
9876 bool modelPar_given_xrcx=mod.given(
"xrcx");
9877 modParamMap[
"xrcx"] = &modelPar_xrcx;
9879 bool modelPar_given_xrbp=mod.given(
"xrbp");
9880 modParamMap[
"xrbp"] = &modelPar_xrbp;
9882 bool modelPar_given_xrs=mod.given(
"xrs");
9883 modParamMap[
"xrs"] = &modelPar_xrs;
9885 bool modelPar_given_xvo=mod.given(
"xvo");
9886 modParamMap[
"xvo"] = &modelPar_xvo;
9888 bool modelPar_given_ea=mod.given(
"ea");
9889 modParamMap[
"ea"] = &modelPar_ea;
9891 bool modelPar_given_eaie=mod.given(
"eaie");
9892 modParamMap[
"eaie"] = &modelPar_eaie;
9894 bool modelPar_given_eaic=mod.given(
"eaic");
9895 modParamMap[
"eaic"] = &modelPar_eaic;
9897 bool modelPar_given_eais=mod.given(
"eais");
9898 modParamMap[
"eais"] = &modelPar_eais;
9900 bool modelPar_given_eane=mod.given(
"eane");
9901 modParamMap[
"eane"] = &modelPar_eane;
9903 bool modelPar_given_eanc=mod.given(
"eanc");
9904 modParamMap[
"eanc"] = &modelPar_eanc;
9906 bool modelPar_given_eans=mod.given(
"eans");
9907 modParamMap[
"eans"] = &modelPar_eans;
9909 bool modelPar_given_eap=mod.given(
"eap");
9910 modParamMap[
"eap"] = &modelPar_eap;
9912 bool modelPar_given_dear=mod.given(
"dear");
9913 modParamMap[
"dear"] = &modelPar_dear;
9915 bool modelPar_given_xis=mod.given(
"xis");
9916 modParamMap[
"xis"] = &modelPar_xis;
9918 bool modelPar_given_xii=mod.given(
"xii");
9919 modParamMap[
"xii"] = &modelPar_xii;
9921 bool modelPar_given_xin=mod.given(
"xin");
9922 modParamMap[
"xin"] = &modelPar_xin;
9924 bool modelPar_given_xisr=mod.given(
"xisr");
9925 modParamMap[
"xisr"] = &modelPar_xisr;
9927 bool modelPar_given_xikf=mod.given(
"xikf");
9928 modParamMap[
"xikf"] = &modelPar_xikf;
9930 bool modelPar_given_tavc=mod.given(
"tavc");
9931 modParamMap[
"tavc"] = &modelPar_tavc;
9933 bool modelPar_given_tavcx=mod.given(
"tavcx");
9934 modParamMap[
"tavcx"] = &modelPar_tavcx;
9936 bool modelPar_given_tnf=mod.given(
"tnf");
9937 modParamMap[
"tnf"] = &modelPar_tnf;
9939 bool modelPar_given_tcvef=mod.given(
"tcvef");
9940 modParamMap[
"tcvef"] = &modelPar_tcvef;
9942 bool modelPar_given_tcver=mod.given(
"tcver");
9943 modParamMap[
"tcver"] = &modelPar_tcver;
9945 bool modelPar_given_tcrth=mod.given(
"tcrth");
9946 modParamMap[
"tcrth"] = &modelPar_tcrth;
9953 int modelPar_type=mod.type;
9954 bool modelPar_given_type=mod.given(
"type");
9955 int modelPar_VBICtype=mod.VBICtype;
9956 int modelPar_qbm=mod.qbm;
9957 bool modelPar_given_qbm=mod.given(
"qbm");
9964 modParamMap[name]->diff(0,1);
9976 for (std::vector<Instance*>::const_iterator in_it=mod.instanceContainer.begin(); in_it != mod.instanceContainer.end(); ++in_it,++inst)
9979 Instance & in=*(*in_it);
9981 for (
int i=0; i < 12+0 ; ++i)
9983 staticContributions[i]=0;
9984 dynamicContributions[i]=0;
9992 bool instancePar_given_m=in.given(
"m");
9994 bool instancePar_given_trise=in.given(
"trise");
10001 int instancePar_sw_noise=in.sw_noise;
10002 bool instancePar_given_sw_noise=in.given(
"sw_noise");
10003 int instancePar_sw_et=in.sw_et;
10004 bool instancePar_given_sw_et=in.given(
"sw_et");
10024 Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
10027 probeVars[in.admsProbeID_V_xf2_GND] = (*solVectorPtr)[in.li_xf2];
10028 probeVars[in.admsProbeID_V_xf1_GND] = (*solVectorPtr)[in.li_xf1];
10029 probeVars[in.admsProbeID_V_bp_cx] = (*solVectorPtr)[in.li_bp] - (*solVectorPtr)[in.li_cx];
10030 probeVars[in.admsProbeID_V_e_ei] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_ei];
10031 probeVars[in.admsProbeID_V_bx_bi] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bi];
10032 probeVars[in.admsProbeID_V_b_bx] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_bx];
10033 probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
10034 probeVars[in.admsProbeID_V_c_cx] = (*solVectorPtr)[in.li_c] - (*solVectorPtr)[in.li_cx];
10035 probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
10036 probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
10037 probeVars[in.admsProbeID_V_bx_bp] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bp];
10038 probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
10039 probeVars[in.admsProbeID_V_bx_cx] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_cx];
10040 probeVars[in.admsProbeID_V_bi_cx] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_cx];
10041 probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
10042 probeVars[in.admsProbeID_V_bx_ei] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_ei];
10043 probeVars[in.admsProbeID_V_bi_ei] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ei];
10044 probeVars[in.admsProbeID_Temp_dt_GND] = (*solVectorPtr)[in.li_dt];
10047 probeVars[in.admsProbeID_V_bx_bp] *= modelPar_VBICtype;
10048 probeVars[in.admsProbeID_V_bx_cx] *= modelPar_VBICtype;
10049 probeVars[in.admsProbeID_V_bi_cx] *= modelPar_VBICtype;
10050 probeVars[in.admsProbeID_V_bi_ci] *= modelPar_VBICtype;
10051 probeVars[in.admsProbeID_V_bx_ei] *= modelPar_VBICtype;
10052 probeVars[in.admsProbeID_V_bi_ei] *= modelPar_VBICtype;
10058 evaluateModelEquations(
10061 in.admsProbeID_V_xf2_GND,
10062 in.admsProbeID_V_xf1_GND,
10063 in.admsProbeID_V_bp_cx,
10064 in.admsProbeID_V_e_ei,
10065 in.admsProbeID_V_bx_bi,
10066 in.admsProbeID_V_b_bx,
10067 in.admsProbeID_V_cx_ci,
10068 in.admsProbeID_V_c_cx,
10069 in.admsProbeID_V_b_c,
10070 in.admsProbeID_V_b_e,
10071 in.admsProbeID_V_bx_bp,
10072 in.admsProbeID_V_ci_ei,
10073 in.admsProbeID_V_bx_cx,
10074 in.admsProbeID_V_bi_cx,
10075 in.admsProbeID_V_bi_ci,
10076 in.admsProbeID_V_bx_ei,
10077 in.admsProbeID_V_bi_ei,
10078 in.admsProbeID_Temp_dt_GND,
10096 instancePar_given_m,
10098 instancePar_given_trise,
10100 instancePar_sw_noise,
10101 instancePar_given_sw_noise,
10103 instancePar_given_sw_et,
10107 modelPar_given_npn,
10109 modelPar_given_pnp,
10111 modelPar_given_scale,
10113 modelPar_given_shrink,
10115 modelPar_given_tmin,
10117 modelPar_given_tmax,
10119 modelPar_given_gmin,
10121 modelPar_given_pnjmaxi,
10123 modelPar_given_maxexp,
10125 modelPar_given_tnom,
10127 modelPar_given_tminclip,
10129 modelPar_given_tmaxclip,
10131 modelPar_given_rcx,
10133 modelPar_given_rci,
10137 modelPar_given_gamm,
10139 modelPar_given_hrcf,
10141 modelPar_given_rbx,
10143 modelPar_given_rbi,
10149 modelPar_given_rbp,
10153 modelPar_given_isrr,
10159 modelPar_given_isp,
10161 modelPar_given_wsp,
10163 modelPar_given_nfp,
10167 modelPar_given_cbeo,
10169 modelPar_given_cje,
10175 modelPar_given_aje,
10177 modelPar_given_cbco,
10179 modelPar_given_cjc,
10185 modelPar_given_ajc,
10187 modelPar_given_vrt,
10189 modelPar_given_art,
10191 modelPar_given_qco,
10193 modelPar_given_cjep,
10195 modelPar_given_cjcp,
10201 modelPar_given_ajs,
10203 modelPar_given_ccso,
10205 modelPar_given_ibei,
10207 modelPar_given_wbe,
10209 modelPar_given_nei,
10211 modelPar_given_qnibeir,
10213 modelPar_given_iben,
10215 modelPar_given_nen,
10217 modelPar_given_ibci,
10219 modelPar_given_nci,
10221 modelPar_given_ibcn,
10223 modelPar_given_ncn,
10225 modelPar_given_ibeip,
10227 modelPar_given_ibenp,
10229 modelPar_given_ibcip,
10231 modelPar_given_ncip,
10233 modelPar_given_ibcnp,
10235 modelPar_given_ncnp,
10237 modelPar_given_vef,
10239 modelPar_given_ver,
10241 modelPar_given_ikf,
10243 modelPar_given_nkf,
10245 modelPar_given_ikr,
10247 modelPar_given_ikp,
10251 modelPar_given_qtf,
10253 modelPar_given_xtf,
10255 modelPar_given_vtf,
10257 modelPar_given_itf,
10263 modelPar_given_avc1,
10265 modelPar_given_avc2,
10267 modelPar_given_avcx1,
10269 modelPar_given_avcx2,
10271 modelPar_given_mcx,
10273 modelPar_given_vbbe,
10275 modelPar_given_nbbe,
10277 modelPar_given_ibbe,
10279 modelPar_given_tvbbe1,
10281 modelPar_given_tvbbe2,
10283 modelPar_given_tnbbe,
10285 modelPar_given_vpte,
10287 modelPar_given_ibk0,
10289 modelPar_given_abk,
10291 modelPar_given_bbk,
10293 modelPar_given_kfn,
10295 modelPar_given_afn,
10297 modelPar_given_bfn,
10299 modelPar_given_rth,
10301 modelPar_given_cth,
10303 modelPar_given_xre,
10305 modelPar_given_xrb,
10307 modelPar_given_xrbi,
10309 modelPar_given_xrbx,
10311 modelPar_given_xrc,
10313 modelPar_given_xrci,
10315 modelPar_given_xrcx,
10317 modelPar_given_xrbp,
10319 modelPar_given_xrs,
10321 modelPar_given_xvo,
10325 modelPar_given_eaie,
10327 modelPar_given_eaic,
10329 modelPar_given_eais,
10331 modelPar_given_eane,
10333 modelPar_given_eanc,
10335 modelPar_given_eans,
10337 modelPar_given_eap,
10339 modelPar_given_dear,
10341 modelPar_given_xis,
10343 modelPar_given_xii,
10345 modelPar_given_xin,
10347 modelPar_given_xisr,
10349 modelPar_given_xikf,
10351 modelPar_given_tavc,
10353 modelPar_given_tavcx,
10355 modelPar_given_tnf,
10357 modelPar_given_tcvef,
10359 modelPar_given_tcver,
10361 modelPar_given_tcrth,
10364 modelPar_given_type,
10367 modelPar_given_qbm,
10368 in.admsTemperature,
10370 in.getDeviceOptions().gmin,
10371 staticContributions,
10372 dynamicContributions,
10378 dfdp[in.admsNodeID_c+inst*(12+0)] += staticContributions[in.admsNodeID_c].dx(0);
10379 dqdp[in.admsNodeID_c+inst*(12+0)] += dynamicContributions[in.admsNodeID_c].dx(0);
10380 Findices[in.admsNodeID_c+inst*(12+0)] = in.li_c;
10381 Qindices[in.admsNodeID_c+inst*(12+0)] = in.li_c;
10382 dfdp[in.admsNodeID_b+inst*(12+0)] += staticContributions[in.admsNodeID_b].dx(0);
10383 dqdp[in.admsNodeID_b+inst*(12+0)] += dynamicContributions[in.admsNodeID_b].dx(0);
10384 Findices[in.admsNodeID_b+inst*(12+0)] = in.li_b;
10385 Qindices[in.admsNodeID_b+inst*(12+0)] = in.li_b;
10386 dfdp[in.admsNodeID_e+inst*(12+0)] += staticContributions[in.admsNodeID_e].dx(0);
10387 dqdp[in.admsNodeID_e+inst*(12+0)] += dynamicContributions[in.admsNodeID_e].dx(0);
10388 Findices[in.admsNodeID_e+inst*(12+0)] = in.li_e;
10389 Qindices[in.admsNodeID_e+inst*(12+0)] = in.li_e;
10390 dfdp[in.admsNodeID_dt+inst*(12+0)] += staticContributions[in.admsNodeID_dt].dx(0);
10391 dqdp[in.admsNodeID_dt+inst*(12+0)] += dynamicContributions[in.admsNodeID_dt].dx(0);
10392 Findices[in.admsNodeID_dt+inst*(12+0)] = in.li_dt;
10393 Qindices[in.admsNodeID_dt+inst*(12+0)] = in.li_dt;
10394 dfdp[in.admsNodeID_cx+inst*(12+0)] += staticContributions[in.admsNodeID_cx].dx(0);
10395 dqdp[in.admsNodeID_cx+inst*(12+0)] += dynamicContributions[in.admsNodeID_cx].dx(0);
10396 Findices[in.admsNodeID_cx+inst*(12+0)] = in.li_cx;
10397 Qindices[in.admsNodeID_cx+inst*(12+0)] = in.li_cx;
10398 dfdp[in.admsNodeID_ci+inst*(12+0)] += staticContributions[in.admsNodeID_ci].dx(0);
10399 dqdp[in.admsNodeID_ci+inst*(12+0)] += dynamicContributions[in.admsNodeID_ci].dx(0);
10400 Findices[in.admsNodeID_ci+inst*(12+0)] = in.li_ci;
10401 Qindices[in.admsNodeID_ci+inst*(12+0)] = in.li_ci;
10402 dfdp[in.admsNodeID_bx+inst*(12+0)] += staticContributions[in.admsNodeID_bx].dx(0);
10403 dqdp[in.admsNodeID_bx+inst*(12+0)] += dynamicContributions[in.admsNodeID_bx].dx(0);
10404 Findices[in.admsNodeID_bx+inst*(12+0)] = in.li_bx;
10405 Qindices[in.admsNodeID_bx+inst*(12+0)] = in.li_bx;
10406 dfdp[in.admsNodeID_bi+inst*(12+0)] += staticContributions[in.admsNodeID_bi].dx(0);
10407 dqdp[in.admsNodeID_bi+inst*(12+0)] += dynamicContributions[in.admsNodeID_bi].dx(0);
10408 Findices[in.admsNodeID_bi+inst*(12+0)] = in.li_bi;
10409 Qindices[in.admsNodeID_bi+inst*(12+0)] = in.li_bi;
10410 dfdp[in.admsNodeID_ei+inst*(12+0)] += staticContributions[in.admsNodeID_ei].dx(0);
10411 dqdp[in.admsNodeID_ei+inst*(12+0)] += dynamicContributions[in.admsNodeID_ei].dx(0);
10412 Findices[in.admsNodeID_ei+inst*(12+0)] = in.li_ei;
10413 Qindices[in.admsNodeID_ei+inst*(12+0)] = in.li_ei;
10414 dfdp[in.admsNodeID_bp+inst*(12+0)] += staticContributions[in.admsNodeID_bp].dx(0);
10415 dqdp[in.admsNodeID_bp+inst*(12+0)] += dynamicContributions[in.admsNodeID_bp].dx(0);
10416 Findices[in.admsNodeID_bp+inst*(12+0)] = in.li_bp;
10417 Qindices[in.admsNodeID_bp+inst*(12+0)] = in.li_bp;
10418 dfdp[in.admsNodeID_xf1+inst*(12+0)] += staticContributions[in.admsNodeID_xf1].dx(0);
10419 dqdp[in.admsNodeID_xf1+inst*(12+0)] += dynamicContributions[in.admsNodeID_xf1].dx(0);
10420 Findices[in.admsNodeID_xf1+inst*(12+0)] = in.li_xf1;
10421 Qindices[in.admsNodeID_xf1+inst*(12+0)] = in.li_xf1;
10422 dfdp[in.admsNodeID_xf2+inst*(12+0)] += staticContributions[in.admsNodeID_xf2].dx(0);
10423 dqdp[in.admsNodeID_xf2+inst*(12+0)] += dynamicContributions[in.admsNodeID_xf2].dx(0);
10424 Findices[in.admsNodeID_xf2+inst*(12+0)] = in.li_xf2;
10425 Qindices[in.admsNodeID_xf2+inst*(12+0)] = in.li_xf2;
10430 #endif // Xyce_ADMS_SENSITIVITIES
const InstanceName & getName() const
bool updateSecondaryState()
double * q_ci_Equ_bx_Node_Ptr
Instance(const Configuration &configuration, const InstanceBlock &instance_block, Model &model, const FactoryBlock &factory_block)
int li_state_admsProbeID_V_b_e
double * f_cx_Equ_c_Node_Ptr
double * q_xf2_Equ_xf1_Node_Ptr
double * f_bp_Equ_dt_Node_Ptr
double * q_xf1_Equ_xf1_Node_Ptr
double * f_dt_Equ_xf2_Node_Ptr
double * q_b_Equ_b_Node_Ptr
double * f_bp_Equ_ci_Node_Ptr
double * f_ei_Equ_cx_Node_Ptr
double * f_b_Equ_c_Node_Ptr
double * f_bp_Equ_ei_Node_Ptr
double * q_bp_Equ_ei_Node_Ptr
bool updateDependentParameters()
double * q_ci_Equ_ei_Node_Ptr
double * f_dt_Equ_bp_Node_Ptr
double * q_xf1_Equ_ci_Node_Ptr
static const int admsProbeID_V_bp_cx
double * q_ci_Equ_ci_Node_Ptr
const SolverState & solverState_
double * f_ci_Equ_xf2_Node_Ptr
static const int admsNodeID_bi
static const int admsProbeID_V_bi_cx
Descriptor & addPar(const char *parName, T default_value, T U::*varPtr)
Adds the parameter description to the parameter map.
double pnjlim_new(double vnew, double vold, double vt, double vcrit, int *icheck)
double * f_c_Equ_c_Node_Ptr
double * f_e_Equ_b_Node_Ptr
double * q_dt_Equ_ei_Node_Ptr
int li_state_admsProbeID_V_bx_ei
static const int admsNodeID_xf1
double * q_bx_Equ_bp_Node_Ptr
double * f_bx_Equ_bp_Node_Ptr
double * dFdxdVpVectorRawPtr
Linear::Vector * nextSolVectorPtr
double * q_dt_Equ_bp_Node_Ptr
std::vector< int > devConMap
bool updatePrimaryState()
double * q_b_Equ_e_Node_Ptr
std::vector< double > Jdxp_dynamic
bool given(const std::string ¶meter_name) const
double * q_dt_Equ_cx_Node_Ptr
Linear::Vector * daeQVectorPtr
static const int admsProbeID_V_ci_ei
double * f_ei_Equ_ei_Node_Ptr
double * f_xf2_Equ_xf2_Node_Ptr
double * q_ei_Equ_bx_Node_Ptr
Pure virtual class to augment a linear system.
static const int admsProbeID_V_e_ei
double * f_bp_Equ_bi_Node_Ptr
void addInternalNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
double * f_bi_Equ_bp_Node_Ptr
double * f_bx_Equ_c_Node_Ptr
static const int admsNodeID_bx
double * q_c_Equ_dt_Node_Ptr
ScalarT limRTH(ScalarT orig, ScalarT old)
static const int admsNodeID_b
double * q_bi_Equ_bx_Node_Ptr
double * f_bx_Equ_bx_Node_Ptr
double * q_dt_Equ_bx_Node_Ptr
double * q_dt_Equ_c_Node_Ptr
double * q_bi_Equ_cx_Node_Ptr
double * f_b_Equ_e_Node_Ptr
double * q_c_Equ_c_Node_Ptr
double * q_bp_Equ_ci_Node_Ptr
std::vector< AdmsFadType > dynamicContributions
double * f_ci_Equ_bp_Node_Ptr
double * q_ei_Equ_dt_Node_Ptr
double * f_cx_Equ_ei_Node_Ptr
static const int admsNodeID_ci
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
static const int admsProbeID_V_bi_ei
virtual void registerJacLIDs(const JacobianStamp &jacLIDVec)
double * q_cx_Equ_ei_Node_Ptr
double * q_e_Equ_ei_Node_Ptr
static const int admsNodeID_bp
double * q_c_Equ_b_Node_Ptr
double * q_xf1_Equ_bi_Node_Ptr
double * f_c_Equ_b_Node_Ptr
double * q_bi_Equ_bi_Node_Ptr
void registerJacLIDs(const JacobianStamp &jacLIDVec)
double * f_ei_Equ_bp_Node_Ptr
double * f_b_Equ_b_Node_Ptr
double * q_bx_Equ_ei_Node_Ptr
double * f_dt_Equ_ei_Node_Ptr
static void loadModelParameters(ParametricData< Model > &model_parameters)
double * f_bi_Equ_ei_Node_Ptr
std::vector< double > probeDiffs
double * f_b_Equ_dt_Node_Ptr
static const int admsProbeID_V_c_cx
double * f_ci_Equ_cx_Node_Ptr
double * f_ei_Equ_xf2_Node_Ptr
double * f_bp_Equ_cx_Node_Ptr
static const int admsProbeID_V_xf2_GND
std::vector< Param > params
Parameters from the line.
double * q_xf1_Equ_xf2_Node_Ptr
double * f_bx_Equ_dt_Node_Ptr
double * f_bi_Equ_xf2_Node_Ptr
double * f_xf1_Equ_dt_Node_Ptr
double * f_bx_Equ_ei_Node_Ptr
double * q_b_Equ_dt_Node_Ptr
double * f_ci_Equ_dt_Node_Ptr
double * q_ei_Equ_bp_Node_Ptr
double * q_ei_Equ_ei_Node_Ptr
static const int admsNodeID_e
double * q_xf1_Equ_dt_Node_Ptr
void setParams(const std::vector< Param > ¶ms)
static const int admsProbeID_V_b_e
const std::string & getName() const
Sacado::Fad::SFad< double, 18 > AdmsFadType
double * f_c_Equ_cx_Node_Ptr
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
const JacobianStamp & jacobianStamp() const
double * q_bi_Equ_xf2_Node_Ptr
double * q_bx_Equ_c_Node_Ptr
double * q_e_Equ_e_Node_Ptr
static const int admsProbeID_V_b_c
int li_state_admsProbeID_V_bx_cx
const DeviceOptions & getDeviceOptions() const
double * q_bx_Equ_bi_Node_Ptr
double * f_xf1_Equ_bi_Node_Ptr
double * f_bi_Equ_bi_Node_Ptr
double * f_xf1_Equ_ei_Node_Ptr
Parameter is not to be documented.
double * f_bx_Equ_bi_Node_Ptr
double * f_bi_Equ_ci_Node_Ptr
std::vector< AdmsFadType > probeVars
void registerStateLIDs(const LocalIdVector &staLIDVecRef)
double * f_dt_Equ_dt_Node_Ptr
double * q_e_Equ_b_Node_Ptr
const DeviceOptions & deviceOptions_
double * q_dt_Equ_b_Node_Ptr
double * q_bi_Equ_dt_Node_Ptr
std::vector< std::vector< int > > JacobianStamp
double * f_dt_Equ_bi_Node_Ptr
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
double * q_cx_Equ_c_Node_Ptr
double * f_dt_Equ_ci_Node_Ptr
double * f_bi_Equ_cx_Node_Ptr
Linear::Vector * nextStaVectorPtr
double * f_bi_Equ_bx_Node_Ptr
double * q_ei_Equ_e_Node_Ptr
int li_state_admsProbeID_V_bi_ci
static Config< T > & addConfiguration()
Adds the device to the Xyce device configuration.
double * q_ei_Equ_cx_Node_Ptr
double * q_b_Equ_bx_Node_Ptr
static const int admsNodeID_ei
double * f_ci_Equ_bx_Node_Ptr
static const int admsProbeID_V_bx_cx
Linear::Matrix * dFdxMatrixPtr
double * q_xf1_Equ_ei_Node_Ptr
double * f_ei_Equ_ci_Node_Ptr
static const int admsProbeID_V_b_bx
static std::vector< int > jacMap
int li_state_admsProbeID_V_bi_ei
The Device class is an interface for device implementations.
static const int admsProbeID_Temp_dt_GND
double * q_bi_Equ_ci_Node_Ptr
double * q_ci_Equ_dt_Node_Ptr
double * q_bp_Equ_cx_Node_Ptr
int li_state_admsProbeID_Temp_dt_GND
double * f_xf1_Equ_xf2_Node_Ptr
double * q_ei_Equ_xf2_Node_Ptr
double * f_cx_Equ_ci_Node_Ptr
double * f_bx_Equ_cx_Node_Ptr
double * f_cx_Equ_bp_Node_Ptr
double * q_bp_Equ_bi_Node_Ptr
double * f_e_Equ_ei_Node_Ptr
static std::vector< std::vector< int > > jacStamp
double * f_e_Equ_dt_Node_Ptr
double * dQdxdVpVectorRawPtr
Class Configuration contains device configuration data.
static const int admsNodeID_cx
static std::vector< std::vector< int > > jacMap2
double * q_cx_Equ_dt_Node_Ptr
double * q_ci_Equ_bi_Node_Ptr
double * f_cx_Equ_bi_Node_Ptr
double * q_bx_Equ_b_Node_Ptr
int li_state_admsProbeID_V_bi_cx
bool processParams()
processParams
double * f_dt_Equ_cx_Node_Ptr
double * f_xf1_Equ_ci_Node_Ptr
double * q_dt_Equ_xf2_Node_Ptr
static T adms_vt(const T temp)
const SolverState & getSolverState() const
bool updateIntermediateVars()
double * q_bp_Equ_dt_Node_Ptr
double * f_cx_Equ_bx_Node_Ptr
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
static const int admsNodeID_xf2
double * q_dt_Equ_bi_Node_Ptr
double * q_cx_Equ_ci_Node_Ptr
Sacado::Fad::SFad< double, 1 > AdmsSensFadType
double * q_cx_Equ_cx_Node_Ptr
Linear::Vector * currStaVectorPtr
double * f_ei_Equ_e_Node_Ptr
int li_state_admsProbeID_V_bx_bp
static const int admsProbeID_V_bx_bi
double * f_c_Equ_dt_Node_Ptr
double * nextStaVectorRawPtr
Linear::Vector * daeFVectorPtr
bool updateTemperature(const double &temp=-999.0)
double * f_ei_Equ_bi_Node_Ptr
double * f_ei_Equ_dt_Node_Ptr
static const int admsProbeID_V_xf1_GND
double * q_bi_Equ_ei_Node_Ptr
double * q_dt_Equ_e_Node_Ptr
double * f_b_Equ_bx_Node_Ptr
double * q_bx_Equ_ci_Node_Ptr
double * q_cx_Equ_bi_Node_Ptr
const std::string & getType() const
double * f_cx_Equ_cx_Node_Ptr
double gmin
minimum allowed conductance.
static const int admsNodeID_dt
virtual std::ostream & printOutInstances(std::ostream &os) const
double * q_ci_Equ_xf2_Node_Ptr
static const int admsProbeID_V_cx_ci
double * f_dt_Equ_bx_Node_Ptr
static const int admsNodeID_c
double * f_e_Equ_e_Node_Ptr
double * f_dt_Equ_c_Node_Ptr
double * q_e_Equ_dt_Node_Ptr
double * q_ci_Equ_bp_Node_Ptr
static const int admsProbeID_V_bi_ci
double * f_ci_Equ_ei_Node_Ptr
bool processInstanceParams()
processInstanceParams
double * q_bp_Equ_bx_Node_Ptr
double * f_dt_Equ_b_Node_Ptr
void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)
double * q_cx_Equ_bp_Node_Ptr
double * f_bi_Equ_dt_Node_Ptr
static const int admsProbeID_V_bx_ei
double * q_bp_Equ_bp_Node_Ptr
const ExternData & extData
ModelBlock represents a .MODEL line from the netlist.
double * q_bx_Equ_dt_Node_Ptr
double * f_cx_Equ_dt_Node_Ptr
double * q_ei_Equ_bi_Node_Ptr
Manages parameter binding for class C.
std::vector< Instance * > instanceContainer
InstanceBlock represent a device instance line from the netlist.
Model(const Configuration &configuration, const ModelBlock &model_block, const FactoryBlock &factory_block)
double * q_cx_Equ_bx_Node_Ptr
double * f_bp_Equ_bp_Node_Ptr
bool initJctFlag_
true if on the first newton step of the first dcop solve of the first .STEP iteration. BJT, JFET, Diode, MOSFET, SW, Extern
double * f_ei_Equ_bx_Node_Ptr
double * f_bp_Equ_bx_Node_Ptr
Util::Param temp
operating temperature of ckt.
std::vector< Param > params
std::vector< AdmsFadType > staticContributions
double * q_b_Equ_c_Node_Ptr
Linear::Matrix * dQdxMatrixPtr
double * f_ci_Equ_ci_Node_Ptr
double * q_dt_Equ_dt_Node_Ptr
double * f_bx_Equ_b_Node_Ptr
double * q_bx_Equ_cx_Node_Ptr
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
std::vector< double > Jdxp_static
double * f_ci_Equ_bi_Node_Ptr
double * q_dt_Equ_ci_Node_Ptr
double * q_ci_Equ_cx_Node_Ptr
double * f_xf2_Equ_xf1_Node_Ptr
double * q_bi_Equ_bp_Node_Ptr
double * q_bx_Equ_bx_Node_Ptr
double * q_ei_Equ_ci_Node_Ptr
double * f_bx_Equ_ci_Node_Ptr
static const int admsProbeID_V_bx_bp
double * q_xf2_Equ_xf2_Node_Ptr
void setModParams(const std::vector< Param > ¶ms)
double * q_c_Equ_cx_Node_Ptr
double * f_xf1_Equ_xf1_Node_Ptr
double * f_dt_Equ_e_Node_Ptr