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
90 .setExpressionAccess(
NO_DOC)
93 .setDescription(
"Internal-use parameter for setting device instance temperature");
96 .setDescription(
"Device temperature (use 0.0 for ambient)")
97 #ifdef Xyce_ADMS_SENSITIVITIES
98 .setAnalyticSensitivityAvailable(
true)
99 .setSensitivityFunctor(&instSens)
100 #endif // Xyce_ADMS_SENSITIVITIES
104 .setDescription(
"Number of devices in parallel");
118 .setExpressionAccess(
NO_DOC)
121 .setDescription(
"Internal-use parameter for setting device model temperature");
124 .setDescription(
"Nominal temperature")
125 #ifdef Xyce_ADMS_SENSITIVITIES
126 .setAnalyticSensitivityAvailable(
true)
127 .setSensitivityFunctor(&modSens)
128 #endif // Xyce_ADMS_SENSITIVITIES
133 .setDescription(
"Extrinsic Collector resistance")
134 #ifdef Xyce_ADMS_SENSITIVITIES
135 .setAnalyticSensitivityAvailable(
true)
136 .setSensitivityFunctor(&modSens)
137 #endif // Xyce_ADMS_SENSITIVITIES
142 .setDescription(
"Intrinsic Collector resistance")
143 #ifdef Xyce_ADMS_SENSITIVITIES
144 .setAnalyticSensitivityAvailable(
true)
145 .setSensitivityFunctor(&modSens)
146 #endif // Xyce_ADMS_SENSITIVITIES
150 .setDescription(
"Epi drift saturation voltage")
151 #ifdef Xyce_ADMS_SENSITIVITIES
152 .setAnalyticSensitivityAvailable(
true)
153 .setSensitivityFunctor(&modSens)
154 #endif // Xyce_ADMS_SENSITIVITIES
158 .setDescription(
"Epi doping parameter")
159 #ifdef Xyce_ADMS_SENSITIVITIES
160 .setAnalyticSensitivityAvailable(
true)
161 .setSensitivityFunctor(&modSens)
162 #endif // Xyce_ADMS_SENSITIVITIES
166 .setDescription(
"High current RC factor")
167 #ifdef Xyce_ADMS_SENSITIVITIES
168 .setAnalyticSensitivityAvailable(
true)
169 .setSensitivityFunctor(&modSens)
170 #endif // Xyce_ADMS_SENSITIVITIES
175 .setDescription(
"Extrinsic base resistance")
176 #ifdef Xyce_ADMS_SENSITIVITIES
177 .setAnalyticSensitivityAvailable(
true)
178 .setSensitivityFunctor(&modSens)
179 #endif // Xyce_ADMS_SENSITIVITIES
184 .setDescription(
"Intrinsic base resistance")
185 #ifdef Xyce_ADMS_SENSITIVITIES
186 .setAnalyticSensitivityAvailable(
true)
187 .setSensitivityFunctor(&modSens)
188 #endif // Xyce_ADMS_SENSITIVITIES
193 .setDescription(
"Emitter resistance")
194 #ifdef Xyce_ADMS_SENSITIVITIES
195 .setAnalyticSensitivityAvailable(
true)
196 .setSensitivityFunctor(&modSens)
197 #endif // Xyce_ADMS_SENSITIVITIES
202 .setDescription(
"Substrate resistance")
203 #ifdef Xyce_ADMS_SENSITIVITIES
204 .setAnalyticSensitivityAvailable(
true)
205 .setSensitivityFunctor(&modSens)
206 #endif // Xyce_ADMS_SENSITIVITIES
211 .setDescription(
"Parasitic base resistance")
212 #ifdef Xyce_ADMS_SENSITIVITIES
213 .setAnalyticSensitivityAvailable(
true)
214 .setSensitivityFunctor(&modSens)
215 #endif // Xyce_ADMS_SENSITIVITIES
219 .setDescription(
"Transport saturation current")
220 #ifdef Xyce_ADMS_SENSITIVITIES
221 .setAnalyticSensitivityAvailable(
true)
222 .setSensitivityFunctor(&modSens)
223 #endif // Xyce_ADMS_SENSITIVITIES
227 .setDescription(
"Forward emission coefficient")
228 #ifdef Xyce_ADMS_SENSITIVITIES
229 .setAnalyticSensitivityAvailable(
true)
230 .setSensitivityFunctor(&modSens)
231 #endif // Xyce_ADMS_SENSITIVITIES
235 .setDescription(
"Reverse emission coefficient")
236 #ifdef Xyce_ADMS_SENSITIVITIES
237 .setAnalyticSensitivityAvailable(
true)
238 .setSensitivityFunctor(&modSens)
239 #endif // Xyce_ADMS_SENSITIVITIES
243 .setDescription(
"Forward-bias depletion capacitance limit")
244 #ifdef Xyce_ADMS_SENSITIVITIES
245 .setAnalyticSensitivityAvailable(
true)
246 .setSensitivityFunctor(&modSens)
247 #endif // Xyce_ADMS_SENSITIVITIES
252 .setDescription(
"Extrinsic B-E overlap capacitance")
253 #ifdef Xyce_ADMS_SENSITIVITIES
254 .setAnalyticSensitivityAvailable(
true)
255 .setSensitivityFunctor(&modSens)
256 #endif // Xyce_ADMS_SENSITIVITIES
261 .setDescription(
"B-E zero-bias capacitance")
262 #ifdef Xyce_ADMS_SENSITIVITIES
263 .setAnalyticSensitivityAvailable(
true)
264 .setSensitivityFunctor(&modSens)
265 #endif // Xyce_ADMS_SENSITIVITIES
269 .setDescription(
"B-E built-in potential")
270 #ifdef Xyce_ADMS_SENSITIVITIES
271 .setAnalyticSensitivityAvailable(
true)
272 .setSensitivityFunctor(&modSens)
273 #endif // Xyce_ADMS_SENSITIVITIES
277 .setDescription(
"B-E grading coefficient")
278 #ifdef Xyce_ADMS_SENSITIVITIES
279 .setAnalyticSensitivityAvailable(
true)
280 .setSensitivityFunctor(&modSens)
281 #endif // Xyce_ADMS_SENSITIVITIES
285 .setDescription(
"Base-Emitter capacitor smoothing factor")
286 #ifdef Xyce_ADMS_SENSITIVITIES
287 .setAnalyticSensitivityAvailable(
true)
288 .setSensitivityFunctor(&modSens)
289 #endif // Xyce_ADMS_SENSITIVITIES
294 .setDescription(
"Extrinsic B-C overlap capacitance")
295 #ifdef Xyce_ADMS_SENSITIVITIES
296 .setAnalyticSensitivityAvailable(
true)
297 .setSensitivityFunctor(&modSens)
298 #endif // Xyce_ADMS_SENSITIVITIES
303 .setDescription(
"B-C zero-bias capacitance")
304 #ifdef Xyce_ADMS_SENSITIVITIES
305 .setAnalyticSensitivityAvailable(
true)
306 .setSensitivityFunctor(&modSens)
307 #endif // Xyce_ADMS_SENSITIVITIES
311 .setDescription(
"Epi charge parameter")
312 #ifdef Xyce_ADMS_SENSITIVITIES
313 .setAnalyticSensitivityAvailable(
true)
314 .setSensitivityFunctor(&modSens)
315 #endif // Xyce_ADMS_SENSITIVITIES
320 .setDescription(
"S-E zero-bias capacitance")
321 #ifdef Xyce_ADMS_SENSITIVITIES
322 .setAnalyticSensitivityAvailable(
true)
323 .setSensitivityFunctor(&modSens)
324 #endif // Xyce_ADMS_SENSITIVITIES
328 .setDescription(
"B-C built-in potential")
329 #ifdef Xyce_ADMS_SENSITIVITIES
330 .setAnalyticSensitivityAvailable(
true)
331 .setSensitivityFunctor(&modSens)
332 #endif // Xyce_ADMS_SENSITIVITIES
336 .setDescription(
"B-C grading coefficient")
337 #ifdef Xyce_ADMS_SENSITIVITIES
338 .setAnalyticSensitivityAvailable(
true)
339 .setSensitivityFunctor(&modSens)
340 #endif // Xyce_ADMS_SENSITIVITIES
344 .setDescription(
"Base-Collector capacitor smoothing factor")
345 #ifdef Xyce_ADMS_SENSITIVITIES
346 .setAnalyticSensitivityAvailable(
true)
347 .setSensitivityFunctor(&modSens)
348 #endif // Xyce_ADMS_SENSITIVITIES
353 .setDescription(
"S-C zero-bias capacitance")
354 #ifdef Xyce_ADMS_SENSITIVITIES
355 .setAnalyticSensitivityAvailable(
true)
356 .setSensitivityFunctor(&modSens)
357 #endif // Xyce_ADMS_SENSITIVITIES
361 .setDescription(
"S-C built-in potential")
362 #ifdef Xyce_ADMS_SENSITIVITIES
363 .setAnalyticSensitivityAvailable(
true)
364 .setSensitivityFunctor(&modSens)
365 #endif // Xyce_ADMS_SENSITIVITIES
369 .setDescription(
"S-C grading coefficient")
370 #ifdef Xyce_ADMS_SENSITIVITIES
371 .setAnalyticSensitivityAvailable(
true)
372 .setSensitivityFunctor(&modSens)
373 #endif // Xyce_ADMS_SENSITIVITIES
377 .setDescription(
"Substrate-collector capacitor smoothing factor (unused)")
378 #ifdef Xyce_ADMS_SENSITIVITIES
379 .setAnalyticSensitivityAvailable(
true)
380 .setSensitivityFunctor(&modSens)
381 #endif // Xyce_ADMS_SENSITIVITIES
385 .setDescription(
"Ideal B-E saturation current")
386 #ifdef Xyce_ADMS_SENSITIVITIES
387 .setAnalyticSensitivityAvailable(
true)
388 .setSensitivityFunctor(&modSens)
389 #endif // Xyce_ADMS_SENSITIVITIES
393 .setDescription(
"Portion of Ibei from Vbei")
394 #ifdef Xyce_ADMS_SENSITIVITIES
395 .setAnalyticSensitivityAvailable(
true)
396 .setSensitivityFunctor(&modSens)
397 #endif // Xyce_ADMS_SENSITIVITIES
401 .setDescription(
"Ideal B-E emission coefficient")
402 #ifdef Xyce_ADMS_SENSITIVITIES
403 .setAnalyticSensitivityAvailable(
true)
404 .setSensitivityFunctor(&modSens)
405 #endif // Xyce_ADMS_SENSITIVITIES
409 .setDescription(
"Nonideal B-E saturation current")
410 #ifdef Xyce_ADMS_SENSITIVITIES
411 .setAnalyticSensitivityAvailable(
true)
412 .setSensitivityFunctor(&modSens)
413 #endif // Xyce_ADMS_SENSITIVITIES
417 .setDescription(
"Non-ideal B-E emission coefficient")
418 #ifdef Xyce_ADMS_SENSITIVITIES
419 .setAnalyticSensitivityAvailable(
true)
420 .setSensitivityFunctor(&modSens)
421 #endif // Xyce_ADMS_SENSITIVITIES
425 .setDescription(
"Ideal B-C saturation current")
426 #ifdef Xyce_ADMS_SENSITIVITIES
427 .setAnalyticSensitivityAvailable(
true)
428 .setSensitivityFunctor(&modSens)
429 #endif // Xyce_ADMS_SENSITIVITIES
433 .setDescription(
"Ideal B-C emission coefficient")
434 #ifdef Xyce_ADMS_SENSITIVITIES
435 .setAnalyticSensitivityAvailable(
true)
436 .setSensitivityFunctor(&modSens)
437 #endif // Xyce_ADMS_SENSITIVITIES
441 .setDescription(
"Nonideal B-C saturation current")
442 #ifdef Xyce_ADMS_SENSITIVITIES
443 .setAnalyticSensitivityAvailable(
true)
444 .setSensitivityFunctor(&modSens)
445 #endif // Xyce_ADMS_SENSITIVITIES
449 .setDescription(
"Non-ideal B-C emission coefficient")
450 #ifdef Xyce_ADMS_SENSITIVITIES
451 .setAnalyticSensitivityAvailable(
true)
452 .setSensitivityFunctor(&modSens)
453 #endif // Xyce_ADMS_SENSITIVITIES
457 .setDescription(
"B-C weak avalanche parameter")
458 #ifdef Xyce_ADMS_SENSITIVITIES
459 .setAnalyticSensitivityAvailable(
true)
460 .setSensitivityFunctor(&modSens)
461 #endif // Xyce_ADMS_SENSITIVITIES
465 .setDescription(
"B-C weak avalanche parameter")
466 #ifdef Xyce_ADMS_SENSITIVITIES
467 .setAnalyticSensitivityAvailable(
true)
468 .setSensitivityFunctor(&modSens)
469 #endif // Xyce_ADMS_SENSITIVITIES
473 .setDescription(
"Parasitic transport saturation current")
474 #ifdef Xyce_ADMS_SENSITIVITIES
475 .setAnalyticSensitivityAvailable(
true)
476 .setSensitivityFunctor(&modSens)
477 #endif // Xyce_ADMS_SENSITIVITIES
481 .setDescription(
"Portion of Iccp from Vbep")
482 #ifdef Xyce_ADMS_SENSITIVITIES
483 .setAnalyticSensitivityAvailable(
true)
484 .setSensitivityFunctor(&modSens)
485 #endif // Xyce_ADMS_SENSITIVITIES
489 .setDescription(
"Parasitic forward emission coefficient")
490 #ifdef Xyce_ADMS_SENSITIVITIES
491 .setAnalyticSensitivityAvailable(
true)
492 .setSensitivityFunctor(&modSens)
493 #endif // Xyce_ADMS_SENSITIVITIES
497 .setDescription(
"Ideal parasitic B-E saturation current")
498 #ifdef Xyce_ADMS_SENSITIVITIES
499 .setAnalyticSensitivityAvailable(
true)
500 .setSensitivityFunctor(&modSens)
501 #endif // Xyce_ADMS_SENSITIVITIES
505 .setDescription(
"Nonideal parasitic B-E saturation current")
506 #ifdef Xyce_ADMS_SENSITIVITIES
507 .setAnalyticSensitivityAvailable(
true)
508 .setSensitivityFunctor(&modSens)
509 #endif // Xyce_ADMS_SENSITIVITIES
513 .setDescription(
"Ideal parasitic B-C saturation current")
514 #ifdef Xyce_ADMS_SENSITIVITIES
515 .setAnalyticSensitivityAvailable(
true)
516 .setSensitivityFunctor(&modSens)
517 #endif // Xyce_ADMS_SENSITIVITIES
521 .setDescription(
"Ideal parasitic B-C emission coefficient")
522 #ifdef Xyce_ADMS_SENSITIVITIES
523 .setAnalyticSensitivityAvailable(
true)
524 .setSensitivityFunctor(&modSens)
525 #endif // Xyce_ADMS_SENSITIVITIES
529 .setDescription(
"Nonideal parasitic B-C saturation current")
530 #ifdef Xyce_ADMS_SENSITIVITIES
531 .setAnalyticSensitivityAvailable(
true)
532 .setSensitivityFunctor(&modSens)
533 #endif // Xyce_ADMS_SENSITIVITIES
537 .setDescription(
"Non-ideal parasitic B-C emission coefficient")
538 #ifdef Xyce_ADMS_SENSITIVITIES
539 .setAnalyticSensitivityAvailable(
true)
540 .setSensitivityFunctor(&modSens)
541 #endif // Xyce_ADMS_SENSITIVITIES
545 .setDescription(
"Forward Early voltage")
546 #ifdef Xyce_ADMS_SENSITIVITIES
547 .setAnalyticSensitivityAvailable(
true)
548 .setSensitivityFunctor(&modSens)
549 #endif // Xyce_ADMS_SENSITIVITIES
553 .setDescription(
"Reverse Early voltage")
554 #ifdef Xyce_ADMS_SENSITIVITIES
555 .setAnalyticSensitivityAvailable(
true)
556 .setSensitivityFunctor(&modSens)
557 #endif // Xyce_ADMS_SENSITIVITIES
561 .setDescription(
"Forward knee current")
562 #ifdef Xyce_ADMS_SENSITIVITIES
563 .setAnalyticSensitivityAvailable(
true)
564 .setSensitivityFunctor(&modSens)
565 #endif // Xyce_ADMS_SENSITIVITIES
569 .setDescription(
"Reverse knee current")
570 #ifdef Xyce_ADMS_SENSITIVITIES
571 .setAnalyticSensitivityAvailable(
true)
572 .setSensitivityFunctor(&modSens)
573 #endif // Xyce_ADMS_SENSITIVITIES
577 .setDescription(
"Parasitic knee current")
578 #ifdef Xyce_ADMS_SENSITIVITIES
579 .setAnalyticSensitivityAvailable(
true)
580 .setSensitivityFunctor(&modSens)
581 #endif // Xyce_ADMS_SENSITIVITIES
585 .setDescription(
"Forward transit time")
586 #ifdef Xyce_ADMS_SENSITIVITIES
587 .setAnalyticSensitivityAvailable(
true)
588 .setSensitivityFunctor(&modSens)
589 #endif // Xyce_ADMS_SENSITIVITIES
593 .setDescription(
"Variation of tf with base width modulation")
594 #ifdef Xyce_ADMS_SENSITIVITIES
595 .setAnalyticSensitivityAvailable(
true)
596 .setSensitivityFunctor(&modSens)
597 #endif // Xyce_ADMS_SENSITIVITIES
601 .setDescription(
"Coefficient of tf with bias dependence")
602 #ifdef Xyce_ADMS_SENSITIVITIES
603 .setAnalyticSensitivityAvailable(
true)
604 .setSensitivityFunctor(&modSens)
605 #endif // Xyce_ADMS_SENSITIVITIES
609 .setDescription(
"Coefficient of tf dependence on Vbc")
610 #ifdef Xyce_ADMS_SENSITIVITIES
611 .setAnalyticSensitivityAvailable(
true)
612 .setSensitivityFunctor(&modSens)
613 #endif // Xyce_ADMS_SENSITIVITIES
617 .setDescription(
"Coefficient of tf dependence on Ic")
618 #ifdef Xyce_ADMS_SENSITIVITIES
619 .setAnalyticSensitivityAvailable(
true)
620 .setSensitivityFunctor(&modSens)
621 #endif // Xyce_ADMS_SENSITIVITIES
625 .setDescription(
"Reverse transit time")
626 #ifdef Xyce_ADMS_SENSITIVITIES
627 .setAnalyticSensitivityAvailable(
true)
628 .setSensitivityFunctor(&modSens)
629 #endif // Xyce_ADMS_SENSITIVITIES
633 .setDescription(
"Forward excess-phase delay time (unused in this version)")
634 #ifdef Xyce_ADMS_SENSITIVITIES
635 .setAnalyticSensitivityAvailable(
true)
636 .setSensitivityFunctor(&modSens)
637 #endif // Xyce_ADMS_SENSITIVITIES
641 .setDescription(
"B-E flicker (1/f) noise coefficient (unused)")
642 #ifdef Xyce_ADMS_SENSITIVITIES
643 .setAnalyticSensitivityAvailable(
true)
644 .setSensitivityFunctor(&modSens)
645 #endif // Xyce_ADMS_SENSITIVITIES
649 .setDescription(
"Base-Emitter Flicker Noise coefficient (unused)")
650 #ifdef Xyce_ADMS_SENSITIVITIES
651 .setAnalyticSensitivityAvailable(
true)
652 .setSensitivityFunctor(&modSens)
653 #endif // Xyce_ADMS_SENSITIVITIES
657 .setDescription(
"B-E flicker noise dependence (unused)")
658 #ifdef Xyce_ADMS_SENSITIVITIES
659 .setAnalyticSensitivityAvailable(
true)
660 .setSensitivityFunctor(&modSens)
661 #endif // Xyce_ADMS_SENSITIVITIES
665 .setDescription(
"Temperature exponent of re")
666 #ifdef Xyce_ADMS_SENSITIVITIES
667 .setAnalyticSensitivityAvailable(
true)
668 .setSensitivityFunctor(&modSens)
669 #endif // Xyce_ADMS_SENSITIVITIES
674 #ifdef Xyce_ADMS_SENSITIVITIES
675 .setAnalyticSensitivityAvailable(
true)
676 .setSensitivityFunctor(&modSens)
677 #endif // Xyce_ADMS_SENSITIVITIES
682 #ifdef Xyce_ADMS_SENSITIVITIES
683 .setAnalyticSensitivityAvailable(
true)
684 .setSensitivityFunctor(&modSens)
685 #endif // Xyce_ADMS_SENSITIVITIES
689 .setDescription(
"Temperature exponent of rs")
690 #ifdef Xyce_ADMS_SENSITIVITIES
691 .setAnalyticSensitivityAvailable(
true)
692 .setSensitivityFunctor(&modSens)
693 #endif // Xyce_ADMS_SENSITIVITIES
697 .setDescription(
"Temperature exponent of vo")
698 #ifdef Xyce_ADMS_SENSITIVITIES
699 .setAnalyticSensitivityAvailable(
true)
700 .setSensitivityFunctor(&modSens)
701 #endif // Xyce_ADMS_SENSITIVITIES
705 .setDescription(
"Activation energy for IS")
706 #ifdef Xyce_ADMS_SENSITIVITIES
707 .setAnalyticSensitivityAvailable(
true)
708 .setSensitivityFunctor(&modSens)
709 #endif // Xyce_ADMS_SENSITIVITIES
713 .setDescription(
"Activation energy for IBEI")
714 #ifdef Xyce_ADMS_SENSITIVITIES
715 .setAnalyticSensitivityAvailable(
true)
716 .setSensitivityFunctor(&modSens)
717 #endif // Xyce_ADMS_SENSITIVITIES
721 .setDescription(
"Activation energy for IBCI")
722 #ifdef Xyce_ADMS_SENSITIVITIES
723 .setAnalyticSensitivityAvailable(
true)
724 .setSensitivityFunctor(&modSens)
725 #endif // Xyce_ADMS_SENSITIVITIES
729 .setDescription(
"Activation energy for IBCIP")
730 #ifdef Xyce_ADMS_SENSITIVITIES
731 .setAnalyticSensitivityAvailable(
true)
732 .setSensitivityFunctor(&modSens)
733 #endif // Xyce_ADMS_SENSITIVITIES
737 .setDescription(
"Activation energy for IBEN")
738 #ifdef Xyce_ADMS_SENSITIVITIES
739 .setAnalyticSensitivityAvailable(
true)
740 .setSensitivityFunctor(&modSens)
741 #endif // Xyce_ADMS_SENSITIVITIES
745 .setDescription(
"Activation energy for IBCN")
746 #ifdef Xyce_ADMS_SENSITIVITIES
747 .setAnalyticSensitivityAvailable(
true)
748 .setSensitivityFunctor(&modSens)
749 #endif // Xyce_ADMS_SENSITIVITIES
753 .setDescription(
"Activation energy for IBCNP")
754 #ifdef Xyce_ADMS_SENSITIVITIES
755 .setAnalyticSensitivityAvailable(
true)
756 .setSensitivityFunctor(&modSens)
757 #endif // Xyce_ADMS_SENSITIVITIES
761 .setDescription(
"Temperature exponent of IS")
762 #ifdef Xyce_ADMS_SENSITIVITIES
763 .setAnalyticSensitivityAvailable(
true)
764 .setSensitivityFunctor(&modSens)
765 #endif // Xyce_ADMS_SENSITIVITIES
769 .setDescription(
"Temperature exponent of Ibei, Ibci, Ibeip, and Ibcip")
770 #ifdef Xyce_ADMS_SENSITIVITIES
771 .setAnalyticSensitivityAvailable(
true)
772 .setSensitivityFunctor(&modSens)
773 #endif // Xyce_ADMS_SENSITIVITIES
777 .setDescription(
"Temperature exponent of Iben, Ibcn, Ibenp, and Ibcnp")
778 #ifdef Xyce_ADMS_SENSITIVITIES
779 .setAnalyticSensitivityAvailable(
true)
780 .setSensitivityFunctor(&modSens)
781 #endif // Xyce_ADMS_SENSITIVITIES
785 .setDescription(
"Temperature coefficient of Nf")
786 #ifdef Xyce_ADMS_SENSITIVITIES
787 .setAnalyticSensitivityAvailable(
true)
788 .setSensitivityFunctor(&modSens)
789 #endif // Xyce_ADMS_SENSITIVITIES
793 .setDescription(
"Temperature coefficient of Avc2")
794 #ifdef Xyce_ADMS_SENSITIVITIES
795 .setAnalyticSensitivityAvailable(
true)
796 .setSensitivityFunctor(&modSens)
797 #endif // Xyce_ADMS_SENSITIVITIES
801 .setDescription(
"Thermal resistance, must be given for self-heating")
802 #ifdef Xyce_ADMS_SENSITIVITIES
803 .setAnalyticSensitivityAvailable(
true)
804 .setSensitivityFunctor(&modSens)
805 #endif // Xyce_ADMS_SENSITIVITIES
809 .setDescription(
"Thermal capacitance")
810 #ifdef Xyce_ADMS_SENSITIVITIES
811 .setAnalyticSensitivityAvailable(
true)
812 .setSensitivityFunctor(&modSens)
813 #endif // Xyce_ADMS_SENSITIVITIES
818 #ifdef Xyce_ADMS_SENSITIVITIES
819 .setAnalyticSensitivityAvailable(
true)
820 .setSensitivityFunctor(&modSens)
821 #endif // Xyce_ADMS_SENSITIVITIES
826 #ifdef Xyce_ADMS_SENSITIVITIES
827 .setAnalyticSensitivityAvailable(
true)
828 .setSensitivityFunctor(&modSens)
829 #endif // Xyce_ADMS_SENSITIVITIES
833 .setDescription(
"(unused)")
834 #ifdef Xyce_ADMS_SENSITIVITIES
835 .setAnalyticSensitivityAvailable(
true)
836 .setSensitivityFunctor(&modSens)
837 #endif // Xyce_ADMS_SENSITIVITIES
842 #ifdef Xyce_ADMS_SENSITIVITIES
843 .setAnalyticSensitivityAvailable(
true)
844 .setSensitivityFunctor(&modSens)
845 #endif // Xyce_ADMS_SENSITIVITIES
850 #ifdef Xyce_ADMS_SENSITIVITIES
851 .setAnalyticSensitivityAvailable(
true)
852 .setSensitivityFunctor(&modSens)
853 #endif // Xyce_ADMS_SENSITIVITIES
858 #ifdef Xyce_ADMS_SENSITIVITIES
859 .setAnalyticSensitivityAvailable(
true)
860 .setSensitivityFunctor(&modSens)
861 #endif // Xyce_ADMS_SENSITIVITIES
866 #ifdef Xyce_ADMS_SENSITIVITIES
867 .setAnalyticSensitivityAvailable(
true)
868 .setSensitivityFunctor(&modSens)
869 #endif // Xyce_ADMS_SENSITIVITIES
874 #ifdef Xyce_ADMS_SENSITIVITIES
875 .setAnalyticSensitivityAvailable(
true)
876 .setSensitivityFunctor(&modSens)
877 #endif // Xyce_ADMS_SENSITIVITIES
882 #ifdef Xyce_ADMS_SENSITIVITIES
883 .setAnalyticSensitivityAvailable(
true)
884 .setSensitivityFunctor(&modSens)
885 #endif // Xyce_ADMS_SENSITIVITIES
889 .setDescription(
"Saturation current for reverse operation")
890 #ifdef Xyce_ADMS_SENSITIVITIES
891 .setAnalyticSensitivityAvailable(
true)
892 .setSensitivityFunctor(&modSens)
893 #endif // Xyce_ADMS_SENSITIVITIES
897 .setDescription(
"Temperature exponent of ISRR")
898 #ifdef Xyce_ADMS_SENSITIVITIES
899 .setAnalyticSensitivityAvailable(
true)
900 .setSensitivityFunctor(&modSens)
901 #endif // Xyce_ADMS_SENSITIVITIES
905 .setDescription(
"Activation energy for ISRR")
906 #ifdef Xyce_ADMS_SENSITIVITIES
907 .setAnalyticSensitivityAvailable(
true)
908 .setSensitivityFunctor(&modSens)
909 #endif // Xyce_ADMS_SENSITIVITIES
913 .setDescription(
"Activation energy for ISP")
914 #ifdef Xyce_ADMS_SENSITIVITIES
915 .setAnalyticSensitivityAvailable(
true)
916 .setSensitivityFunctor(&modSens)
917 #endif // Xyce_ADMS_SENSITIVITIES
922 #ifdef Xyce_ADMS_SENSITIVITIES
923 .setAnalyticSensitivityAvailable(
true)
924 .setSensitivityFunctor(&modSens)
925 #endif // Xyce_ADMS_SENSITIVITIES
930 #ifdef Xyce_ADMS_SENSITIVITIES
931 .setAnalyticSensitivityAvailable(
true)
932 .setSensitivityFunctor(&modSens)
933 #endif // Xyce_ADMS_SENSITIVITIES
938 #ifdef Xyce_ADMS_SENSITIVITIES
939 .setAnalyticSensitivityAvailable(
true)
940 .setSensitivityFunctor(&modSens)
941 #endif // Xyce_ADMS_SENSITIVITIES
946 #ifdef Xyce_ADMS_SENSITIVITIES
947 .setAnalyticSensitivityAvailable(
true)
948 .setSensitivityFunctor(&modSens)
949 #endif // Xyce_ADMS_SENSITIVITIES
954 #ifdef Xyce_ADMS_SENSITIVITIES
955 .setAnalyticSensitivityAvailable(
true)
956 .setSensitivityFunctor(&modSens)
957 #endif // Xyce_ADMS_SENSITIVITIES
962 #ifdef Xyce_ADMS_SENSITIVITIES
963 .setAnalyticSensitivityAvailable(
true)
964 .setSensitivityFunctor(&modSens)
965 #endif // Xyce_ADMS_SENSITIVITIES
969 .setDescription(
"(unused)")
970 #ifdef Xyce_ADMS_SENSITIVITIES
971 .setAnalyticSensitivityAvailable(
true)
972 .setSensitivityFunctor(&modSens)
973 #endif // Xyce_ADMS_SENSITIVITIES
977 .setDescription(
"Device temperature (use 0.0 for ambient)")
978 #ifdef Xyce_ADMS_SENSITIVITIES
979 .setAnalyticSensitivityAvailable(
true)
980 .setSensitivityFunctor(&modSens)
981 #endif // Xyce_ADMS_SENSITIVITIES
985 .setDescription(
"Version of this VBIC model")
986 #ifdef Xyce_ADMS_SENSITIVITIES
987 .setAnalyticSensitivityAvailable(
true)
988 .setSensitivityFunctor(&modSens)
989 #endif // Xyce_ADMS_SENSITIVITIES
994 #ifdef Xyce_ADMS_SENSITIVITIES
995 .setAnalyticSensitivityAvailable(
true)
996 .setSensitivityFunctor(&modSens)
997 #endif // Xyce_ADMS_SENSITIVITIES
1017 if (!(
given(
"DTEMP")))
1034 UserError0(*
this) <<
"ADMSvbic: Parameter M value " <<
M <<
" out of range [ 1, (+inf) [";
1065 :
DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
1079 f_bi_Equ_bi_Node_Ptr(0),
1080 f_bi_Equ_ei_Node_Ptr(0),
1081 f_ei_Equ_bi_Node_Ptr(0),
1082 f_ei_Equ_ei_Node_Ptr(0),
1083 f_bi_Equ_dt_Node_Ptr(0),
1084 f_ei_Equ_dt_Node_Ptr(0),
1085 f_bx_Equ_bx_Node_Ptr(0),
1086 f_bx_Equ_ei_Node_Ptr(0),
1087 f_ei_Equ_bx_Node_Ptr(0),
1088 f_bx_Equ_dt_Node_Ptr(0),
1089 f_ci_Equ_bi_Node_Ptr(0),
1090 f_ci_Equ_ci_Node_Ptr(0),
1091 f_ei_Equ_ci_Node_Ptr(0),
1092 f_ci_Equ_ei_Node_Ptr(0),
1093 f_ci_Equ_dt_Node_Ptr(0),
1094 f_bi_Equ_ci_Node_Ptr(0),
1095 f_bx_Equ_bp_Node_Ptr(0),
1096 f_bp_Equ_bx_Node_Ptr(0),
1097 f_bp_Equ_bp_Node_Ptr(0),
1098 f_bp_Equ_dt_Node_Ptr(0),
1099 f_c_Equ_dt_Node_Ptr(0),
1100 f_cx_Equ_dt_Node_Ptr(0),
1101 f_c_Equ_c_Node_Ptr(0),
1102 f_c_Equ_cx_Node_Ptr(0),
1103 f_cx_Equ_c_Node_Ptr(0),
1104 f_cx_Equ_cx_Node_Ptr(0),
1105 f_cx_Equ_bi_Node_Ptr(0),
1106 f_ci_Equ_cx_Node_Ptr(0),
1107 f_cx_Equ_ci_Node_Ptr(0),
1108 f_b_Equ_dt_Node_Ptr(0),
1109 f_b_Equ_b_Node_Ptr(0),
1110 f_b_Equ_bx_Node_Ptr(0),
1111 f_bx_Equ_b_Node_Ptr(0),
1112 f_bx_Equ_bi_Node_Ptr(0),
1113 f_bx_Equ_ci_Node_Ptr(0),
1114 f_bi_Equ_bx_Node_Ptr(0),
1115 f_e_Equ_dt_Node_Ptr(0),
1116 f_e_Equ_e_Node_Ptr(0),
1117 f_e_Equ_ei_Node_Ptr(0),
1118 f_ei_Equ_e_Node_Ptr(0),
1119 f_bp_Equ_bi_Node_Ptr(0),
1120 f_bp_Equ_ci_Node_Ptr(0),
1121 f_cx_Equ_bx_Node_Ptr(0),
1122 f_cx_Equ_bp_Node_Ptr(0),
1123 f_bp_Equ_cx_Node_Ptr(0),
1124 f_bi_Equ_cx_Node_Ptr(0),
1125 f_b_Equ_e_Node_Ptr(0),
1126 f_e_Equ_b_Node_Ptr(0),
1127 f_b_Equ_c_Node_Ptr(0),
1128 f_c_Equ_b_Node_Ptr(0),
1129 f_dt_Equ_dt_Node_Ptr(0),
1130 f_dt_Equ_bp_Node_Ptr(0),
1131 f_dt_Equ_cx_Node_Ptr(0),
1132 f_dt_Equ_e_Node_Ptr(0),
1133 f_dt_Equ_ei_Node_Ptr(0),
1134 f_dt_Equ_bx_Node_Ptr(0),
1135 f_dt_Equ_bi_Node_Ptr(0),
1136 f_dt_Equ_b_Node_Ptr(0),
1137 f_dt_Equ_ci_Node_Ptr(0),
1138 f_dt_Equ_c_Node_Ptr(0),
1139 q_bi_Equ_bi_Node_Ptr(0),
1140 q_bi_Equ_ei_Node_Ptr(0),
1141 q_ei_Equ_bi_Node_Ptr(0),
1142 q_ei_Equ_ei_Node_Ptr(0),
1143 q_bi_Equ_dt_Node_Ptr(0),
1144 q_ei_Equ_dt_Node_Ptr(0),
1145 q_bx_Equ_bx_Node_Ptr(0),
1146 q_bx_Equ_ei_Node_Ptr(0),
1147 q_ei_Equ_bx_Node_Ptr(0),
1148 q_bx_Equ_dt_Node_Ptr(0),
1149 q_ci_Equ_bi_Node_Ptr(0),
1150 q_ci_Equ_ci_Node_Ptr(0),
1151 q_ei_Equ_ci_Node_Ptr(0),
1152 q_ci_Equ_ei_Node_Ptr(0),
1153 q_ci_Equ_dt_Node_Ptr(0),
1154 q_bi_Equ_ci_Node_Ptr(0),
1155 q_bx_Equ_bp_Node_Ptr(0),
1156 q_bp_Equ_bx_Node_Ptr(0),
1157 q_bp_Equ_bp_Node_Ptr(0),
1158 q_bp_Equ_dt_Node_Ptr(0),
1159 q_c_Equ_dt_Node_Ptr(0),
1160 q_cx_Equ_dt_Node_Ptr(0),
1161 q_c_Equ_c_Node_Ptr(0),
1162 q_c_Equ_cx_Node_Ptr(0),
1163 q_cx_Equ_c_Node_Ptr(0),
1164 q_cx_Equ_cx_Node_Ptr(0),
1165 q_cx_Equ_bi_Node_Ptr(0),
1166 q_ci_Equ_cx_Node_Ptr(0),
1167 q_cx_Equ_ci_Node_Ptr(0),
1168 q_b_Equ_dt_Node_Ptr(0),
1169 q_b_Equ_b_Node_Ptr(0),
1170 q_b_Equ_bx_Node_Ptr(0),
1171 q_bx_Equ_b_Node_Ptr(0),
1172 q_bx_Equ_bi_Node_Ptr(0),
1173 q_bx_Equ_ci_Node_Ptr(0),
1174 q_bi_Equ_bx_Node_Ptr(0),
1175 q_e_Equ_dt_Node_Ptr(0),
1176 q_e_Equ_e_Node_Ptr(0),
1177 q_e_Equ_ei_Node_Ptr(0),
1178 q_ei_Equ_e_Node_Ptr(0),
1179 q_bp_Equ_bi_Node_Ptr(0),
1180 q_bp_Equ_ci_Node_Ptr(0),
1181 q_cx_Equ_bx_Node_Ptr(0),
1182 q_cx_Equ_bp_Node_Ptr(0),
1183 q_bp_Equ_cx_Node_Ptr(0),
1184 q_bi_Equ_cx_Node_Ptr(0),
1185 q_b_Equ_e_Node_Ptr(0),
1186 q_e_Equ_b_Node_Ptr(0),
1187 q_b_Equ_c_Node_Ptr(0),
1188 q_c_Equ_b_Node_Ptr(0),
1189 q_dt_Equ_dt_Node_Ptr(0),
1190 q_dt_Equ_bp_Node_Ptr(0),
1191 q_dt_Equ_cx_Node_Ptr(0),
1192 q_dt_Equ_e_Node_Ptr(0),
1193 q_dt_Equ_ei_Node_Ptr(0),
1194 q_dt_Equ_bx_Node_Ptr(0),
1195 q_dt_Equ_bi_Node_Ptr(0),
1196 q_dt_Equ_b_Node_Ptr(0),
1197 q_dt_Equ_ci_Node_Ptr(0),
1198 q_dt_Equ_c_Node_Ptr(0),
1199 admsTemperature(getDeviceOptions().temp.getImmutableValue<double>()),
1200 externalNodeMode(false)
1315 for (
int i=0;i<mapSize;++i)
1320 for (
int j=0;j<rowSize;++j)
1333 if (!
given(
"XYCEADMSINSTTEMP"))
1349 DevelFatal0(*
this) <<
"Instance " <<
getName() <<
" has wrong number of external nodes!"
1350 <<
" If you specify any internal nodes as external, you must set all that exist. ";
1419 std::vector< std::vector<int> > tempStamp;
1420 std::vector<int> tempMap;
1421 std::vector< std::vector<int> > tempMap2;
1423 int OriginalSize =
jacMap.size();
1433 tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1435 tempStamp, tempMap, tempMap2,
1444 tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1446 tempStamp, tempMap, tempMap2,
1455 tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1457 tempStamp, tempMap, tempMap2,
1492 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1494 Xyce::dout() << std::endl << section_divider << std::endl
1495 <<
"In ADMSvbic::Instance::register LIDs\n\n"
1496 <<
"name = " <<
getName() << std::endl
1497 <<
"number of internal variables: " <<
numIntVars << std::endl
1498 <<
"number of external variables: " <<
numExtVars << std::endl;
1508 li_c = extLIDVecRef[i++];
1509 li_b = extLIDVecRef[i++];
1510 li_e = extLIDVecRef[i++];
1511 li_dt = extLIDVecRef[i++];
1518 li_cx = extLIDVecRef[i++];
1520 li_cx = intLIDVecRef[j++];
1525 li_ci = extLIDVecRef[i++];
1527 li_ci = intLIDVecRef[j++];
1532 li_bx = extLIDVecRef[i++];
1534 li_bx = intLIDVecRef[j++];
1539 li_bi = extLIDVecRef[i++];
1541 li_bi = intLIDVecRef[j++];
1545 li_ei = extLIDVecRef[i++];
1547 li_ei = intLIDVecRef[j++];
1551 li_bp = intLIDVecRef[j++];
1554 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
1556 Xyce::dout() <<
"\nSolution and RHS variables:\n";
1557 Xyce::dout() <<
"\nli_c = " <<
li_c << std::endl;
1558 Xyce::dout() <<
"\nli_b = " <<
li_b << std::endl;
1559 Xyce::dout() <<
"\nli_e = " <<
li_e << std::endl;
1560 Xyce::dout() <<
"\nli_dt = " <<
li_dt << std::endl;
1561 Xyce::dout() <<
"\nli_cx = " <<
li_cx << std::endl;
1562 Xyce::dout() <<
"\nli_ci = " <<
li_ci << std::endl;
1563 Xyce::dout() <<
"\nli_bx = " <<
li_bx << std::endl;
1564 Xyce::dout() <<
"\nli_bi = " <<
li_bi << std::endl;
1565 Xyce::dout() <<
"\nli_ei = " <<
li_ei << std::endl;
1566 Xyce::dout() <<
"\nli_bp = " <<
li_bp << std::endl;
1568 Xyce::dout() <<
"\nEnd of ADMSvbic::Instance::register LIDs\n";
1569 Xyce::dout() << section_divider << std::endl;
1613 int numSta = staLIDVecRef.size();
1654 std::vector<int> & map=
jacMap;
1655 std::vector< std::vector<int> > & map2=
jacMap2;
1896 bool bsuccess =
true;
1929 bool bsuccess =
true;
1951 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
1953 Xyce::dout() << std::endl << subsection_divider << std::endl;
1954 Xyce::dout() <<
" In ADMSvbic::Instance::updateIntermediateVars\n\n";
1955 Xyce::dout() <<
" name = " <<
getName() << std::endl;
2144 double Vbe_orig,Vbe_limited,Vbe_old;
2145 double Vrth_orig,Vrth_limited,Vrth_old;
2146 double Vbep_orig,Vbep_limited,Vbep_old;
2147 double Vbcx_orig,Vbcx_limited,Vbcx_old;
2148 double Vbex_orig,Vbex_limited,Vbex_old;
2149 double Vbci_orig,Vbci_limited,Vbci_old;
2150 double Vbei_orig,Vbei_limited,Vbei_old;
2166 for (
int i=0; i < 10+0 ; ++i)
2174 for (
int i=0; i < 15 ; ++i)
2264 if ((*flagSolVectorPtr)[
li_e] == 0 ||
2265 (*flagSolVectorPtr)[
li_ei] == 0 ||
2266 (*flagSolVectorPtr)[
li_b] == 0 ||
2267 (*flagSolVectorPtr)[
li_bi] == 0 ||
2268 (*flagSolVectorPtr)[
li_bx] == 0 ||
2269 (*flagSolVectorPtr)[
li_bp] == 0 ||
2270 (*flagSolVectorPtr)[
li_c] == 0 ||
2271 (*flagSolVectorPtr)[
li_ci] == 0 ||
2272 (*flagSolVectorPtr)[
li_cx] == 0 ||
2273 (*flagSolVectorPtr)[
li_dt] == 0 )
2275 Vbci_limited = Vbcx_limited = Vbep_limited = 0;
2276 Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
2283 Vbci_limited = Vbcx_limited = Vbep_limited = 0;
2284 Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
2289 Xyce::dout() <<
" Setting device initial condition to Base-Emitter drop=tVCrit (" << tVCrit <<
")"<<std::endl;
2307 Vbe_old = Vbe_limited;
2308 Vrth_old = Vrth_limited;
2309 Vbep_old = Vbep_limited;
2310 Vbcx_old = Vbcx_limited;
2311 Vbex_old = Vbex_limited;
2312 Vbci_old = Vbci_limited;
2313 Vbei_old = Vbei_limited;
2422 if (Vrth_limited != Vrth_orig)
2463 Vtv = ((1.380662e-23*Tdev)/1.602189e-19);
2490 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(
model_.
PE))*rT)/Vtv))-exp(((((-0.5)*(
model_.
PE))*rT)/Vtv)))));
2491 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((
model_.
EAIE)*(rT-1.0)));
2492 PEatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2493 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(
model_.
PC))*rT)/Vtv))-exp(((((-0.5)*(
model_.
PC))*rT)/Vtv)))));
2494 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((
model_.
EAIC)*(rT-1.0)));
2495 PCatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2496 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(
model_.
PS))*rT)/Vtv))-exp(((((-0.5)*(
model_.
PS))*rT)/Vtv)))));
2497 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((
model_.
EAIS)*(rT-1.0)));
2498 PSatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2505 EBBEatT = exp(((-VBBEatT)/(NBBEatT*Vtv)));
2511 IIKF = (1.0/IKFatT);
2527 dvh_vbei = (Vbei+dv0);
2532 qhi_vbei = ((dvh_vbei*((1.0-(
model_.
FC))+(((0.5*(
model_.
ME))*dvh_vbei)/PEatT)))*pwq);
2536 qlo_vbei = ((PEatT*(1.0-pow((1.0-(Vbei/PEatT)),(1.0-(
model_.
ME)))))/(1.0-(
model_.
ME)));
2539 qdbe = (qlo_vbei+qhi_vbei);
2544 vl0 = ((-0.5)*(dv0+mv0));
2545 q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2546 dv_vbei = (Vbei+dv0);
2548 vl_vbei = ((0.5*(dv_vbei-mv_vbei))-dv0);
2549 qlo_vbei = (((-PEatT)*pow((1.0-(vl_vbei/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2550 qdbe = ((qlo_vbei+(pow((1.0-(
model_.
FC)),(-(
model_.
ME)))*((Vbei-vl_vbei)+vl0)))-q0);
2555 dvh_vbex = (Vbex+dv0);
2560 qhi_vbex = ((dvh_vbex*((1.0-(
model_.
FC))+(((0.5*(
model_.
ME))*dvh_vbex)/PEatT)))*pwq);
2564 qlo_vbex = ((PEatT*(1.0-pow((1.0-(Vbex/PEatT)),(1.0-(
model_.
ME)))))/(1.0-(
model_.
ME)));
2567 qdbex = (qlo_vbex+qhi_vbex);
2572 vl0 = ((-0.5)*(dv0+mv0));
2573 q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2574 dv_vbex = (Vbex+dv0);
2576 vl_vbex = ((0.5*(dv_vbex-mv_vbex))-dv0);
2577 qlo_vbex = (((-PEatT)*pow((1.0-(vl_vbex/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2578 qdbex = ((qlo_vbex+(pow((1.0-(
model_.
FC)),(-(
model_.
ME)))*((Vbex-vl_vbex)+vl0)))-q0);
2583 dvh_vbci = (Vbci+dv0);
2588 qhi_vbci = ((dvh_vbci*((1.0-(
model_.
FC))+(((0.5*(
model_.
MC))*dvh_vbci)/PCatT)))*pwq);
2598 qlo_vbci = ((PCatT*(1.0-pow((1.0-(Vbci/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2602 qdbc = (qlo_vbci+qhi_vbci);
2611 qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2615 qlo_vbci = ((PCatT*(1.0-pow((1.0-(vl_vbci/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2616 sel_vbci = (0.5*(vnl_vbci+1.0));
2618 cmx = pow((1.0+(dv0/PCatT)),(-(
model_.
MC)));
2619 cl_vbci = (((1.0-sel_vbci)*crt)+(sel_vbci*cmx));
2620 ql_vbci = (((Vbci-vl_vbci)+vl0)*cl_vbci);
2621 qdbc = ((ql_vbci+qlo_vbci)-qlo0);
2626 vl0 = ((-0.5)*(dv0+mv0));
2627 q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2628 dv_vbci = (Vbci+dv0);
2630 vl_vbci = ((0.5*(dv_vbci-mv_vbci))-dv0);
2631 qlo_vbci = (((-PCatT)*pow((1.0-(vl_vbci/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2632 qdbc = ((qlo_vbci+(pow((1.0-(
model_.
FC)),(-(
model_.
MC)))*((Vbci-vl_vbci)+vl0)))-q0);
2638 dvh_vbep = (Vbep+dv0);
2643 qhi_vbep = ((dvh_vbep*((1.0-(
model_.
FC))+(((0.5*(
model_.
MC))*dvh_vbep)/PCatT)))*pwq);
2653 qlo_vbep = ((PCatT*(1.0-pow((1.0-(Vbep/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2657 qdbep = (qlo_vbep+qhi_vbep);
2666 qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2670 qlo_vbep = ((PCatT*(1.0-pow((1.0-(vl_vbep/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2671 sel_vbep = (0.5*(vnl_vbep+1.0));
2673 cmx = pow((1.0+(dv0/PCatT)),(-(
model_.
MC)));
2674 cl_vbep = (((1.0-sel_vbep)*crt)+(sel_vbep*cmx));
2675 ql_vbep = (((Vbep-vl_vbep)+vl0)*cl_vbep);
2676 qdbep = ((ql_vbep+qlo_vbep)-qlo0);
2681 vl0 = ((-0.5)*(dv0+mv0));
2682 q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2683 dv_vbep = (Vbep+dv0);
2685 vl_vbep = ((0.5*(dv_vbep-mv_vbep))-dv0);
2686 qlo_vbep = (((-PCatT)*pow((1.0-(vl_vbep/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2687 qdbep = ((qlo_vbep+(pow((1.0-(
model_.
FC)),(-(
model_.
MC)))*((Vbep-vl_vbep)+vl0)))-q0);
2690 argi_vbei = (Vbei/(NFatT*Vtv));
2691 expi_vbei = limexp<AdmsFadType>(argi_vbei);
2692 Ifi = (ISatT*(expi_vbei-1.0));
2693 argi_vbci = (Vbci/(NRatT*Vtv));
2694 expi_vbci = limexp<AdmsFadType>(argi_vbci);
2695 Iri = ((ISatT*ISRRatT)*(expi_vbci-1.0));
2696 q1z = ((1.0+(qdbe*IVER))+(qdbc*IVEF));
2697 q1 = ((0.5*((sqrt((((q1z-1.0e-4)*(q1z-1.0e-4))+1.0e-8))+q1z)-1.0e-4))+1.0e-4);
2698 q2 = ((Ifi*IIKF)+(Iri*IIKR));
2707 qb = ((0.5*q1)*(1.0+pow((1.0+(4.0*q2)),(
model_.
NKF))));
2719 expi_vbep = limexp<AdmsFadType>(argi_vbep);
2721 expx_vbci = limexp<AdmsFadType>(argx_vbci);
2724 qbp = (0.5*(1.0+sqrt((1.0+(4.0*q2p)))));
2734 expi_vbei = limexp<AdmsFadType>(argi_vbei);
2736 expn_vbei = limexp<AdmsFadType>(argn_vbei);
2739 argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
2740 expx_vbei = limexp<AdmsFadType>(argx_vbei);
2741 Ibe = (((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-((
model_.
IBBE)*(expx_vbei-EBBEatT)));
2745 Ibe = ((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)));
2755 expi_vbex = limexp<AdmsFadType>(argi_vbex);
2757 expn_vbex = limexp<AdmsFadType>(argn_vbex);
2760 argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
2761 expx_vbex = limexp<AdmsFadType>(argx_vbex);
2762 Ibex = (((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-((
model_.
IBBE)*(expx_vbex-EBBEatT)));
2766 Ibex = ((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)));
2772 expi_vbei = limexp<AdmsFadType>(argi_vbei);
2774 expn_vbei = limexp<AdmsFadType>(argn_vbei);
2777 argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
2778 expx_vbei = limexp<AdmsFadType>(argx_vbei);
2779 Ibe = ((
model_.
WBE)*(((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-((
model_.
IBBE)*(expx_vbei-EBBEatT))));
2783 Ibe = ((
model_.
WBE)*((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0))));
2786 expi_vbex = limexp<AdmsFadType>(argi_vbex);
2788 expn_vbex = limexp<AdmsFadType>(argn_vbex);
2791 argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
2792 expx_vbex = limexp<AdmsFadType>(argx_vbex);
2793 Ibex = ((1.0-(
model_.
WBE))*(((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-((
model_.
IBBE)*(expx_vbex-EBBEatT))));
2797 Ibex = ((1.0-(
model_.
WBE))*((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0))));
2802 expi_vbci = limexp<AdmsFadType>(argi_vbci);
2804 expn_vbci = limexp<AdmsFadType>(argn_vbci);
2805 Ibcj = ((IBCIatT*(expi_vbci-1.0))+(IBCNatT*(expn_vbci-1.0)));
2809 expi_vbep = limexp<AdmsFadType>(argi_vbep);
2811 expn_vbep = limexp<AdmsFadType>(argn_vbep);
2812 Ibep = ((IBEIPatT*(expi_vbep-1.0))+(IBENPatT*(expn_vbep-1.0)));
2820 vl_vbci = (0.5*(sqrt((((PCatT-Vbci)*(PCatT-Vbci))+0.01))+(PCatT-Vbci)));
2821 avalf_exparg = ((-AVC2atT)*pow(vl_vbci,((
model_.
MC)-1.0)));
2822 avalf = (((
model_.
AVC1)*vl_vbci)*limexp<AdmsFadType>(avalf_exparg));
2823 Igc = (((Itzf-Itzr)-Ibcj)*avalf);
2832 Ircx = (Vrcx/RCXatT);
2838 argi_vbci = (Vbci/Vtv);
2839 expi_vbci = limexp<AdmsFadType>(argi_vbci);
2840 argx_vbcx = (Vbcx/Vtv);
2841 expx_vbcx = limexp<AdmsFadType>(argx_vbcx);
2842 Kbci = sqrt((1.0+(GAMMatT*expi_vbci)));
2843 Kbcx = sqrt((1.0+(GAMMatT*expx_vbcx)));
2846 rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
2847 Iohm = ((Vrci+(Vtv*((Kbci-Kbcx)-log(rKp1))))/RCIatT);
2848 derf = (((IVO*RCIatT)*Iohm)/(1.0+(((0.5*IVO)*IHRCF)*sqrt(((Vrci*Vrci)+0.01)))));
2849 Irci = (Iohm/sqrt((1+(derf*derf))));
2857 Irbx = (Vrbx/RBXatT);
2865 Irbi = ((Vrbi*qb)/RBIatT);
2881 Irbp = ((Vrbp*qbp)/RBPatT);
2887 sgIf = ((Ifi>0.0)?1.0:0.0);
2888 rIf = ((Ifi*sgIf)*IITF);
2889 mIf = (rIf/(rIf+1.0));
2890 tff_exparg = ((Vbci*IVTF)/1.44);
2891 tff = (((
model_.
TF)*(1.0+((
model_.
QTF)*q1)))*(1.0+((((
model_.
XTF)*limexp<AdmsFadType>(tff_exparg))*(slTF+(mIf*mIf)))*sgIf)));
2892 Qbe = (((CJEatT*qdbe)*(
model_.
WBE))+((tff*Ifi)/qb));
2893 Qbex = ((CJEatT*qdbex)*(1.0-(
model_.
WBE)));
2896 Qbep = ((CJEPatT*qdbep)+((
model_.
TR)*Ifp));
2899 Ith = (-(((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itzf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp)));
3135 contribTemp= (Qcth);
3143 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3145 Xyce::dout() <<
" probeVars[admsProbeID_V_ci_ei] = "
3147 Xyce::dout() <<
" probeVars[admsProbeID_V_b_c] = "
3149 Xyce::dout() <<
" probeVars[admsProbeID_V_bp_cx] = "
3151 Xyce::dout() <<
" probeVars[admsProbeID_V_e_ei] = "
3153 Xyce::dout() <<
" probeVars[admsProbeID_V_b_bx] = "
3155 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_bi] = "
3157 Xyce::dout() <<
" probeVars[admsProbeID_V_cx_ci] = "
3159 Xyce::dout() <<
" probeVars[admsProbeID_V_c_cx] = "
3161 Xyce::dout() <<
" probeVars[admsProbeID_V_b_e] = "
3163 Xyce::dout() <<
" probeVars[admsProbeID_V_dt_GND] = "
3165 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_bp] = "
3167 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_cx] = "
3169 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_ei] = "
3171 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ci] = "
3173 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ei] = "
3175 Xyce::dout() <<
" staticContributions[admsNodeID_c] = "
3177 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
3179 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
3180 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_e_ei) << std::endl;
3181 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_b_bx) << std::endl;
3182 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
3183 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
3184 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_c_cx) << std::endl;
3192 Xyce::dout() <<
" dynamicContributions[admsNodeID_c] = "
3194 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
3196 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
3199 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
3200 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
3209 Xyce::dout() <<
" Jdxp_static[admsNodeID_c] = "
3211 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c] = "
3213 Xyce::dout() <<
" staticContributions[admsNodeID_b] = "
3215 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
3217 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
3218 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_e_ei) << std::endl;
3219 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_b_bx) << std::endl;
3220 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
3221 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
3222 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_c_cx) << std::endl;
3230 Xyce::dout() <<
" dynamicContributions[admsNodeID_b] = "
3232 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
3234 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
3237 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
3238 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
3247 Xyce::dout() <<
" Jdxp_static[admsNodeID_b] = "
3249 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_b] = "
3251 Xyce::dout() <<
" staticContributions[admsNodeID_e] = "
3253 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
3255 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
3256 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_e_ei) << std::endl;
3257 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_b_bx) << std::endl;
3258 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
3259 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
3260 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_c_cx) << std::endl;
3268 Xyce::dout() <<
" dynamicContributions[admsNodeID_e] = "
3270 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
3272 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
3275 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
3276 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
3285 Xyce::dout() <<
" Jdxp_static[admsNodeID_e] = "
3287 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_e] = "
3289 Xyce::dout() <<
" staticContributions[admsNodeID_dt] = "
3291 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_ci_ei) << std::endl;
3293 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_bp_cx) << std::endl;
3296 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_bx_bi) << std::endl;
3297 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_cx_ci) << std::endl;
3306 Xyce::dout() <<
" dynamicContributions[admsNodeID_dt] = "
3323 Xyce::dout() <<
" Jdxp_static[admsNodeID_dt] = "
3325 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_dt] = "
3327 Xyce::dout() <<
" staticContributions[admsNodeID_cx] = "
3329 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
3331 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_bp_cx) << std::endl;
3334 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_bx_bi) << std::endl;
3335 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
3344 Xyce::dout() <<
" dynamicContributions[admsNodeID_cx] = "
3361 Xyce::dout() <<
" Jdxp_static[admsNodeID_cx] = "
3363 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_cx] = "
3365 Xyce::dout() <<
" staticContributions[admsNodeID_ci] = "
3367 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
3369 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_bp_cx) << std::endl;
3372 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_bx_bi) << std::endl;
3373 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
3382 Xyce::dout() <<
" dynamicContributions[admsNodeID_ci] = "
3399 Xyce::dout() <<
" Jdxp_static[admsNodeID_ci] = "
3401 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ci] = "
3403 Xyce::dout() <<
" staticContributions[admsNodeID_bx] = "
3405 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_ci_ei) << std::endl;
3407 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_bp_cx) << std::endl;
3410 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_bx_bi) << std::endl;
3411 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_cx_ci) << std::endl;
3420 Xyce::dout() <<
" dynamicContributions[admsNodeID_bx] = "
3437 Xyce::dout() <<
" Jdxp_static[admsNodeID_bx] = "
3439 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bx] = "
3441 Xyce::dout() <<
" staticContributions[admsNodeID_bi] = "
3443 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
3445 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_bp_cx) << std::endl;
3448 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_bx_bi) << std::endl;
3449 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
3458 Xyce::dout() <<
" dynamicContributions[admsNodeID_bi] = "
3475 Xyce::dout() <<
" Jdxp_static[admsNodeID_bi] = "
3477 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bi] = "
3479 Xyce::dout() <<
" staticContributions[admsNodeID_ei] = "
3481 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
3483 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_bp_cx) << std::endl;
3486 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_bx_bi) << std::endl;
3487 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
3496 Xyce::dout() <<
" dynamicContributions[admsNodeID_ei] = "
3513 Xyce::dout() <<
" Jdxp_static[admsNodeID_ei] = "
3515 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ei] = "
3517 Xyce::dout() <<
" staticContributions[admsNodeID_bp] = "
3519 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_ci_ei) << std::endl;
3521 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_bp_cx) << std::endl;
3524 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_bx_bi) << std::endl;
3525 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_cx_ci) << std::endl;
3534 Xyce::dout() <<
" dynamicContributions[admsNodeID_bp] = "
3551 Xyce::dout() <<
" Jdxp_static[admsNodeID_bp] = "
3553 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bp] = "
3558 Xyce::dout() <<
"This step was limited by this device." << std::endl;
3559 Xyce::dout() <<
" Vbei_limited = " << Vbei_limited <<
" _orig = " << Vbei_orig <<
" diff = " << Vbei_limited - Vbei_orig << std::endl;
3560 Xyce::dout() <<
" Vbci_limited = " << Vbci_limited <<
" _orig = " << Vbci_orig <<
" diff = " << Vbci_limited - Vbci_orig << std::endl;
3561 Xyce::dout() <<
" Vbex_limited = " << Vbex_limited <<
" _orig = " << Vbex_orig <<
" diff = " << Vbex_limited - Vbex_orig << std::endl;
3562 Xyce::dout() <<
" Vbcx_limited = " << Vbcx_limited <<
" _orig = " << Vbcx_orig <<
" diff = " << Vbcx_limited - Vbcx_orig << std::endl;
3563 Xyce::dout() <<
" Vbep_limited = " << Vbep_limited <<
" _orig = " << Vbep_orig <<
" diff = " << Vbep_limited - Vbep_orig << std::endl;
3564 Xyce::dout() <<
" Vrth_limited = " << Vrth_limited <<
" _orig = " << Vrth_orig <<
" diff = " << Vrth_limited - Vrth_orig << std::endl;
3581 bool bsuccess =
true;
3584 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3586 Xyce::dout() << subsection_divider << std::endl;
3587 Xyce::dout() <<
"ADMSvbic::Instance::loadDAEdFdx (" <<
getName() <<
"):" << std::endl;
3592 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3599 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3606 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3613 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3620 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3627 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3634 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3641 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3648 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3655 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3662 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3669 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3676 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3683 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3690 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3697 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3704 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3711 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3718 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3725 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3732 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3739 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3746 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3753 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3760 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3767 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3774 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3781 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3788 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3795 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3802 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3809 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3816 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3823 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3830 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3837 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3844 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3851 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3858 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3865 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3872 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3879 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3886 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3893 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3900 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3907 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3914 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3921 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3928 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3935 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3942 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3949 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3956 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3963 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3970 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3990 bool bsuccess =
true;
3993 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
3995 Xyce::dout() << subsection_divider << std::endl;
3996 Xyce::dout() <<
"ADMSvbic::Instance::loadDAEdQdx (" <<
getName() <<
"):" << std::endl;
4001 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4008 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4015 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4022 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4029 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4036 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4043 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4050 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4057 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4064 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4071 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4078 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4085 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4092 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4099 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4106 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4113 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4120 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4127 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4134 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4141 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4148 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4155 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4162 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4169 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4176 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4183 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4190 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4197 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4204 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4211 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4218 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4225 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4232 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4239 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS) &&
getSolverState().debugTimeFlag)
4283 if ( (!((
RCX >=0.0))) )
4285 UserError0(*
this) <<
"ADMSvbic: Parameter RCX value " <<
RCX <<
" out of range [ 0.0, (+inf) [";
4289 if ( (!((
RCI >=0.0))) )
4291 UserError0(*
this) <<
"ADMSvbic: Parameter RCI value " <<
RCI <<
" out of range [ 0.0, (+inf) [";
4295 if ( (!((
VO >=0.0))) )
4297 UserError0(*
this) <<
"ADMSvbic: Parameter VO value " <<
VO <<
" out of range [ 0.0, (+inf) [";
4301 if ( (!((
GAMM >=0.0))) )
4303 UserError0(*
this) <<
"ADMSvbic: Parameter GAMM value " <<
GAMM <<
" out of range [ 0.0, (+inf) [";
4307 if ( (!((
HRCF >=0.0))) )
4309 UserError0(*
this) <<
"ADMSvbic: Parameter HRCF value " <<
HRCF <<
" out of range [ 0.0, (+inf) [";
4313 if ( (!((
RBX >=0.0))) )
4315 UserError0(*
this) <<
"ADMSvbic: Parameter RBX value " <<
RBX <<
" out of range [ 0.0, (+inf) [";
4319 if ( (!((
RBI >=0.0))) )
4321 UserError0(*
this) <<
"ADMSvbic: Parameter RBI value " <<
RBI <<
" out of range [ 0.0, (+inf) [";
4325 if ( (!((
RE >=0.0))) )
4327 UserError0(*
this) <<
"ADMSvbic: Parameter RE value " <<
RE <<
" out of range [ 0.0, (+inf) [";
4331 if ( (!((
RS >=0.0))) )
4333 UserError0(*
this) <<
"ADMSvbic: Parameter RS value " <<
RS <<
" out of range [ 0.0, (+inf) [";
4337 if ( (!((
RBP >=0.0))) )
4339 UserError0(*
this) <<
"ADMSvbic: Parameter RBP value " <<
RBP <<
" out of range [ 0.0, (+inf) [";
4343 if ( (!((
IS >0.0))) )
4345 UserError0(*
this) <<
"ADMSvbic: Parameter IS value " <<
IS <<
" out of range ] 0.0, (+inf) [";
4349 if ( (!((
NF >0.0))) )
4351 UserError0(*
this) <<
"ADMSvbic: Parameter NF value " <<
NF <<
" out of range ] 0.0, (+inf) [";
4355 if ( (!((
NR >0.0))) )
4357 UserError0(*
this) <<
"ADMSvbic: Parameter NR value " <<
NR <<
" out of range ] 0.0, (+inf) [";
4361 if ( (!((
FC >=0.0 &&
FC <1.0 ))) )
4363 UserError0(*
this) <<
"ADMSvbic: Parameter FC value " <<
FC <<
" out of range [ 0.0, 1.0 [";
4367 if ( (!((
CBEO >=0.0))) )
4369 UserError0(*
this) <<
"ADMSvbic: Parameter CBEO value " <<
CBEO <<
" out of range [ 0.0, (+inf) [";
4373 if ( (!((
CJE >=0.0))) )
4375 UserError0(*
this) <<
"ADMSvbic: Parameter CJE value " <<
CJE <<
" out of range [ 0.0, (+inf) [";
4379 if ( (!((
PE >0.0))) )
4381 UserError0(*
this) <<
"ADMSvbic: Parameter PE value " <<
PE <<
" out of range ] 0.0, (+inf) [";
4385 if ( (!((
ME >0.0 &&
ME <=1.0 ))) )
4387 UserError0(*
this) <<
"ADMSvbic: Parameter ME value " <<
ME <<
" out of range ] 0.0, 1.0 ]";
4391 if ( (!((
CBCO >=0.0))) )
4393 UserError0(*
this) <<
"ADMSvbic: Parameter CBCO value " <<
CBCO <<
" out of range [ 0.0, (+inf) [";
4397 if ( (!((
CJC >=0.0))) )
4399 UserError0(*
this) <<
"ADMSvbic: Parameter CJC value " <<
CJC <<
" out of range [ 0.0, (+inf) [";
4403 if ( (!((
QCO >=0.0))) )
4405 UserError0(*
this) <<
"ADMSvbic: Parameter QCO value " <<
QCO <<
" out of range [ 0.0, (+inf) [";
4409 if ( (!((
CJEP >=0.0))) )
4411 UserError0(*
this) <<
"ADMSvbic: Parameter CJEP value " <<
CJEP <<
" out of range [ 0.0, (+inf) [";
4415 if ( (!((
PC >0.0))) )
4417 UserError0(*
this) <<
"ADMSvbic: Parameter PC value " <<
PC <<
" out of range ] 0.0, (+inf) [";
4421 if ( (!((
MC >0.0 &&
MC <=1.0 ))) )
4423 UserError0(*
this) <<
"ADMSvbic: Parameter MC value " <<
MC <<
" out of range ] 0.0, 1.0 ]";
4427 if ( (!((
CJCP >=0.0))) )
4429 UserError0(*
this) <<
"ADMSvbic: Parameter CJCP value " <<
CJCP <<
" out of range [ 0.0, (+inf) [";
4433 if ( (!((
PS >0.0))) )
4435 UserError0(*
this) <<
"ADMSvbic: Parameter PS value " <<
PS <<
" out of range ] 0.0, (+inf) [";
4439 if ( (!((
MS >0.0 &&
MS <=1.0 ))) )
4441 UserError0(*
this) <<
"ADMSvbic: Parameter MS value " <<
MS <<
" out of range ] 0.0, 1.0 ]";
4445 if ( (!((
IBEI >0.0))) )
4447 UserError0(*
this) <<
"ADMSvbic: Parameter IBEI value " <<
IBEI <<
" out of range ] 0.0, (+inf) [";
4451 if ( (!((
WBE >=0.0 &&
WBE <=1.0 ))) )
4453 UserError0(*
this) <<
"ADMSvbic: Parameter WBE value " <<
WBE <<
" out of range [ 0.0, 1.0 ]";
4457 if ( (!((
NEI >0.0))) )
4459 UserError0(*
this) <<
"ADMSvbic: Parameter NEI value " <<
NEI <<
" out of range ] 0.0, (+inf) [";
4463 if ( (!((
IBEN >=0.0))) )
4465 UserError0(*
this) <<
"ADMSvbic: Parameter IBEN value " <<
IBEN <<
" out of range [ 0.0, (+inf) [";
4469 if ( (!((
NEN >0.0))) )
4471 UserError0(*
this) <<
"ADMSvbic: Parameter NEN value " <<
NEN <<
" out of range ] 0.0, (+inf) [";
4475 if ( (!((
IBCI >0.0))) )
4477 UserError0(*
this) <<
"ADMSvbic: Parameter IBCI value " <<
IBCI <<
" out of range ] 0.0, (+inf) [";
4481 if ( (!((
NCI >0.0))) )
4483 UserError0(*
this) <<
"ADMSvbic: Parameter NCI value " <<
NCI <<
" out of range ] 0.0, (+inf) [";
4487 if ( (!((
IBCN >=0.0))) )
4489 UserError0(*
this) <<
"ADMSvbic: Parameter IBCN value " <<
IBCN <<
" out of range [ 0.0, (+inf) [";
4493 if ( (!((
NCN >0.0))) )
4495 UserError0(*
this) <<
"ADMSvbic: Parameter NCN value " <<
NCN <<
" out of range ] 0.0, (+inf) [";
4499 if ( (!((
AVC1 >=0.0))) )
4501 UserError0(*
this) <<
"ADMSvbic: Parameter AVC1 value " <<
AVC1 <<
" out of range [ 0.0, (+inf) [";
4505 if ( (!((
AVC2 >=0.0))) )
4507 UserError0(*
this) <<
"ADMSvbic: Parameter AVC2 value " <<
AVC2 <<
" out of range [ 0.0, (+inf) [";
4511 if ( (!((
ISP >=0.0))) )
4513 UserError0(*
this) <<
"ADMSvbic: Parameter ISP value " <<
ISP <<
" out of range [ 0.0, (+inf) [";
4517 if ( (!((
WSP >=0.0 &&
WSP <=1.0 ))) )
4519 UserError0(*
this) <<
"ADMSvbic: Parameter WSP value " <<
WSP <<
" out of range [ 0.0, 1.0 ]";
4523 if ( (!((
NFP >0.0))) )
4525 UserError0(*
this) <<
"ADMSvbic: Parameter NFP value " <<
NFP <<
" out of range ] 0.0, (+inf) [";
4529 if ( (!((
IBEIP >=0.0))) )
4531 UserError0(*
this) <<
"ADMSvbic: Parameter IBEIP value " <<
IBEIP <<
" out of range [ 0.0, (+inf) [";
4535 if ( (!((
IBENP >=0.0))) )
4537 UserError0(*
this) <<
"ADMSvbic: Parameter IBENP value " <<
IBENP <<
" out of range [ 0.0, (+inf) [";
4541 if ( (!((
IBCIP >=0.0))) )
4543 UserError0(*
this) <<
"ADMSvbic: Parameter IBCIP value " <<
IBCIP <<
" out of range [ 0.0, (+inf) [";
4547 if ( (!((
NCIP >0.0))) )
4549 UserError0(*
this) <<
"ADMSvbic: Parameter NCIP value " <<
NCIP <<
" out of range ] 0.0, (+inf) [";
4553 if ( (!((
IBCNP >=0.0))) )
4555 UserError0(*
this) <<
"ADMSvbic: Parameter IBCNP value " <<
IBCNP <<
" out of range [ 0.0, (+inf) [";
4559 if ( (!((
NCNP >0.0))) )
4561 UserError0(*
this) <<
"ADMSvbic: Parameter NCNP value " <<
NCNP <<
" out of range ] 0.0, (+inf) [";
4565 if ( (!((
VEF >=0.0))) )
4567 UserError0(*
this) <<
"ADMSvbic: Parameter VEF value " <<
VEF <<
" out of range [ 0.0, (+inf) [";
4571 if ( (!((
VER >=0.0))) )
4573 UserError0(*
this) <<
"ADMSvbic: Parameter VER value " <<
VER <<
" out of range [ 0.0, (+inf) [";
4577 if ( (!((
IKF >=0.0))) )
4579 UserError0(*
this) <<
"ADMSvbic: Parameter IKF value " <<
IKF <<
" out of range [ 0.0, (+inf) [";
4583 if ( (!((
IKR >=0.0))) )
4585 UserError0(*
this) <<
"ADMSvbic: Parameter IKR value " <<
IKR <<
" out of range [ 0.0, (+inf) [";
4589 if ( (!((
IKP >=0.0))) )
4591 UserError0(*
this) <<
"ADMSvbic: Parameter IKP value " <<
IKP <<
" out of range [ 0.0, (+inf) [";
4595 if ( (!((
TF >=0.0))) )
4597 UserError0(*
this) <<
"ADMSvbic: Parameter TF value " <<
TF <<
" out of range [ 0.0, (+inf) [";
4601 if ( (!((
QTF >=0.0))) )
4603 UserError0(*
this) <<
"ADMSvbic: Parameter QTF value " <<
QTF <<
" out of range [ 0.0, (+inf) [";
4607 if ( (!((
XTF >=0.0))) )
4609 UserError0(*
this) <<
"ADMSvbic: Parameter XTF value " <<
XTF <<
" out of range [ 0.0, (+inf) [";
4613 if ( (!((
VTF >=0.0))) )
4615 UserError0(*
this) <<
"ADMSvbic: Parameter VTF value " <<
VTF <<
" out of range [ 0.0, (+inf) [";
4619 if ( (!((
ITF >=0.0))) )
4621 UserError0(*
this) <<
"ADMSvbic: Parameter ITF value " <<
ITF <<
" out of range [ 0.0, (+inf) [";
4625 if ( (!((
TR >=0.0))) )
4627 UserError0(*
this) <<
"ADMSvbic: Parameter TR value " <<
TR <<
" out of range [ 0.0, (+inf) [";
4631 if ( (!((
TD >=0.0))) )
4633 UserError0(*
this) <<
"ADMSvbic: Parameter TD value " <<
TD <<
" out of range [ 0.0, (+inf) [";
4637 if ( (!((
KFN >=0.0))) )
4639 UserError0(*
this) <<
"ADMSvbic: Parameter KFN value " <<
KFN <<
" out of range [ 0.0, (+inf) [";
4643 if ( (!((
AFN >0.0))) )
4645 UserError0(*
this) <<
"ADMSvbic: Parameter AFN value " <<
AFN <<
" out of range ] 0.0, (+inf) [";
4649 if ( (!((
BFN >0.0))) )
4651 UserError0(*
this) <<
"ADMSvbic: Parameter BFN value " <<
BFN <<
" out of range ] 0.0, (+inf) [";
4655 if ( (!((
RTH >=0.0))) )
4657 UserError0(*
this) <<
"ADMSvbic: Parameter RTH value " <<
RTH <<
" out of range [ 0.0, (+inf) [";
4661 if ( (!((
CTH >=0.0))) )
4663 UserError0(*
this) <<
"ADMSvbic: Parameter CTH value " <<
CTH <<
" out of range [ 0.0, (+inf) [";
4667 if ( (!((
VRT >=0.0))) )
4669 UserError0(*
this) <<
"ADMSvbic: Parameter VRT value " <<
VRT <<
" out of range [ 0.0, (+inf) [";
4673 if ( (!((
ART >0.0))) )
4675 UserError0(*
this) <<
"ADMSvbic: Parameter ART value " <<
ART <<
" out of range ] 0.0, (+inf) [";
4679 if ( (!((
CCSO >=0.0))) )
4681 UserError0(*
this) <<
"ADMSvbic: Parameter CCSO value " <<
CCSO <<
" out of range [ 0.0, (+inf) [";
4685 if ( (!((
NKF >0.0))) )
4687 UserError0(*
this) <<
"ADMSvbic: Parameter NKF value " <<
NKF <<
" out of range ] 0.0, (+inf) [";
4691 if ( (!((
ISRR >0.0))) )
4693 UserError0(*
this) <<
"ADMSvbic: Parameter ISRR value " <<
ISRR <<
" out of range ] 0.0, (+inf) [";
4697 if ( (!((
NBBE >0.0))) )
4699 UserError0(*
this) <<
"ADMSvbic: Parameter NBBE value " <<
NBBE <<
" out of range ] 0.0, (+inf) [";
4705 UserError0(*
this) <<
"ADMSvbic: Parameter dtype value " <<
dtype <<
" out of range [ (-1), 1 ] or in excluded range [ 0, 0 ]";
4726 std::vector<Instance*>::iterator iter;
4730 for (iter=first; iter!=last; ++iter)
4732 (*iter)->processParams();
4750 :
DeviceModel(model_block, configuration.getModelParameters(), factory_block),
4872 if (!
given(
"XYCEADMSMODTEMP"))
4903 std::vector<Instance*>::iterator iterI;
4908 for (iterI = firstI; iterI != lastI; ++iterI)
4924 std::vector<Instance*>::const_iterator iter;
4930 os <<
" name model name Parameters" << std::endl;
4931 for (i=0, iter=first; iter!=last; ++iter, ++i)
4933 os <<
" " << i <<
": " << (*iter)->getName() <<
" ";
4937 os <<
"DTEMP = " << (*iter)->DTEMP << std::endl;
4938 os <<
"M = " << (*iter)->M << std::endl;
4963 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
4975 .registerDevice(
"q", 10)
4976 .registerModelType(
"npn", 10)
4977 .registerModelType(
"pnp", 10);
4982 #ifdef Xyce_ADMS_SENSITIVITIES
4991 void evaluateInitialInstance(
4995 bool instancePar_given_DTEMP,
4998 bool instancePar_given_M,
5002 bool modelPar_given_TNOM,
5004 bool modelPar_given_RCX,
5006 bool modelPar_given_RCI,
5008 bool modelPar_given_VO,
5010 bool modelPar_given_GAMM,
5012 bool modelPar_given_HRCF,
5014 bool modelPar_given_RBX,
5016 bool modelPar_given_RBI,
5018 bool modelPar_given_RE,
5020 bool modelPar_given_RS,
5022 bool modelPar_given_RBP,
5024 bool modelPar_given_IS,
5026 bool modelPar_given_NF,
5028 bool modelPar_given_NR,
5030 bool modelPar_given_FC,
5032 bool modelPar_given_CBEO,
5034 bool modelPar_given_CJE,
5036 bool modelPar_given_PE,
5038 bool modelPar_given_ME,
5040 bool modelPar_given_AJE,
5042 bool modelPar_given_CBCO,
5044 bool modelPar_given_CJC,
5046 bool modelPar_given_QCO,
5048 bool modelPar_given_CJEP,
5050 bool modelPar_given_PC,
5052 bool modelPar_given_MC,
5054 bool modelPar_given_AJC,
5056 bool modelPar_given_CJCP,
5058 bool modelPar_given_PS,
5060 bool modelPar_given_MS,
5062 bool modelPar_given_AJS,
5064 bool modelPar_given_IBEI,
5066 bool modelPar_given_WBE,
5068 bool modelPar_given_NEI,
5070 bool modelPar_given_IBEN,
5072 bool modelPar_given_NEN,
5074 bool modelPar_given_IBCI,
5076 bool modelPar_given_NCI,
5078 bool modelPar_given_IBCN,
5080 bool modelPar_given_NCN,
5082 bool modelPar_given_AVC1,
5084 bool modelPar_given_AVC2,
5086 bool modelPar_given_ISP,
5088 bool modelPar_given_WSP,
5090 bool modelPar_given_NFP,
5092 bool modelPar_given_IBEIP,
5094 bool modelPar_given_IBENP,
5096 bool modelPar_given_IBCIP,
5098 bool modelPar_given_NCIP,
5100 bool modelPar_given_IBCNP,
5102 bool modelPar_given_NCNP,
5104 bool modelPar_given_VEF,
5106 bool modelPar_given_VER,
5108 bool modelPar_given_IKF,
5110 bool modelPar_given_IKR,
5112 bool modelPar_given_IKP,
5114 bool modelPar_given_TF,
5116 bool modelPar_given_QTF,
5118 bool modelPar_given_XTF,
5120 bool modelPar_given_VTF,
5122 bool modelPar_given_ITF,
5124 bool modelPar_given_TR,
5126 bool modelPar_given_TD,
5128 bool modelPar_given_KFN,
5130 bool modelPar_given_AFN,
5132 bool modelPar_given_BFN,
5134 bool modelPar_given_XRE,
5136 bool modelPar_given_XRBI,
5138 bool modelPar_given_XRCI,
5140 bool modelPar_given_XRS,
5142 bool modelPar_given_XVO,
5144 bool modelPar_given_EA,
5146 bool modelPar_given_EAIE,
5148 bool modelPar_given_EAIC,
5150 bool modelPar_given_EAIS,
5152 bool modelPar_given_EANE,
5154 bool modelPar_given_EANC,
5156 bool modelPar_given_EANS,
5158 bool modelPar_given_XIS,
5160 bool modelPar_given_XII,
5162 bool modelPar_given_XIN,
5164 bool modelPar_given_TNF,
5166 bool modelPar_given_TAVC,
5168 bool modelPar_given_RTH,
5170 bool modelPar_given_CTH,
5172 bool modelPar_given_VRT,
5174 bool modelPar_given_ART,
5176 bool modelPar_given_CCSO,
5178 bool modelPar_given_QBM,
5180 bool modelPar_given_NKF,
5182 bool modelPar_given_XIKF,
5184 bool modelPar_given_XRCX,
5186 bool modelPar_given_XRBX,
5188 bool modelPar_given_XRBP,
5190 bool modelPar_given_ISRR,
5192 bool modelPar_given_XISR,
5194 bool modelPar_given_DEAR,
5196 bool modelPar_given_EAP,
5198 bool modelPar_given_VBBE,
5200 bool modelPar_given_NBBE,
5202 bool modelPar_given_IBBE,
5204 bool modelPar_given_TVBBE1,
5206 bool modelPar_given_TVBBE2,
5208 bool modelPar_given_TNBBE,
5210 bool modelPar_given_EBBE,
5212 bool modelPar_given_DTEMP,
5214 bool modelPar_given_VERS,
5216 bool modelPar_given_VREV,
5219 double admsTemperature,
double adms_vt_nom)
5233 void evaluateInitialModel(
5237 bool modelPar_given_TNOM,
5239 bool modelPar_given_RCX,
5241 bool modelPar_given_RCI,
5243 bool modelPar_given_VO,
5245 bool modelPar_given_GAMM,
5247 bool modelPar_given_HRCF,
5249 bool modelPar_given_RBX,
5251 bool modelPar_given_RBI,
5253 bool modelPar_given_RE,
5255 bool modelPar_given_RS,
5257 bool modelPar_given_RBP,
5259 bool modelPar_given_IS,
5261 bool modelPar_given_NF,
5263 bool modelPar_given_NR,
5265 bool modelPar_given_FC,
5267 bool modelPar_given_CBEO,
5269 bool modelPar_given_CJE,
5271 bool modelPar_given_PE,
5273 bool modelPar_given_ME,
5275 bool modelPar_given_AJE,
5277 bool modelPar_given_CBCO,
5279 bool modelPar_given_CJC,
5281 bool modelPar_given_QCO,
5283 bool modelPar_given_CJEP,
5285 bool modelPar_given_PC,
5287 bool modelPar_given_MC,
5289 bool modelPar_given_AJC,
5291 bool modelPar_given_CJCP,
5293 bool modelPar_given_PS,
5295 bool modelPar_given_MS,
5297 bool modelPar_given_AJS,
5299 bool modelPar_given_IBEI,
5301 bool modelPar_given_WBE,
5303 bool modelPar_given_NEI,
5305 bool modelPar_given_IBEN,
5307 bool modelPar_given_NEN,
5309 bool modelPar_given_IBCI,
5311 bool modelPar_given_NCI,
5313 bool modelPar_given_IBCN,
5315 bool modelPar_given_NCN,
5317 bool modelPar_given_AVC1,
5319 bool modelPar_given_AVC2,
5321 bool modelPar_given_ISP,
5323 bool modelPar_given_WSP,
5325 bool modelPar_given_NFP,
5327 bool modelPar_given_IBEIP,
5329 bool modelPar_given_IBENP,
5331 bool modelPar_given_IBCIP,
5333 bool modelPar_given_NCIP,
5335 bool modelPar_given_IBCNP,
5337 bool modelPar_given_NCNP,
5339 bool modelPar_given_VEF,
5341 bool modelPar_given_VER,
5343 bool modelPar_given_IKF,
5345 bool modelPar_given_IKR,
5347 bool modelPar_given_IKP,
5349 bool modelPar_given_TF,
5351 bool modelPar_given_QTF,
5353 bool modelPar_given_XTF,
5355 bool modelPar_given_VTF,
5357 bool modelPar_given_ITF,
5359 bool modelPar_given_TR,
5361 bool modelPar_given_TD,
5363 bool modelPar_given_KFN,
5365 bool modelPar_given_AFN,
5367 bool modelPar_given_BFN,
5369 bool modelPar_given_XRE,
5371 bool modelPar_given_XRBI,
5373 bool modelPar_given_XRCI,
5375 bool modelPar_given_XRS,
5377 bool modelPar_given_XVO,
5379 bool modelPar_given_EA,
5381 bool modelPar_given_EAIE,
5383 bool modelPar_given_EAIC,
5385 bool modelPar_given_EAIS,
5387 bool modelPar_given_EANE,
5389 bool modelPar_given_EANC,
5391 bool modelPar_given_EANS,
5393 bool modelPar_given_XIS,
5395 bool modelPar_given_XII,
5397 bool modelPar_given_XIN,
5399 bool modelPar_given_TNF,
5401 bool modelPar_given_TAVC,
5403 bool modelPar_given_RTH,
5405 bool modelPar_given_CTH,
5407 bool modelPar_given_VRT,
5409 bool modelPar_given_ART,
5411 bool modelPar_given_CCSO,
5413 bool modelPar_given_QBM,
5415 bool modelPar_given_NKF,
5417 bool modelPar_given_XIKF,
5419 bool modelPar_given_XRCX,
5421 bool modelPar_given_XRBX,
5423 bool modelPar_given_XRBP,
5425 bool modelPar_given_ISRR,
5427 bool modelPar_given_XISR,
5429 bool modelPar_given_DEAR,
5431 bool modelPar_given_EAP,
5433 bool modelPar_given_VBBE,
5435 bool modelPar_given_NBBE,
5437 bool modelPar_given_IBBE,
5439 bool modelPar_given_TVBBE1,
5441 bool modelPar_given_TVBBE2,
5443 bool modelPar_given_TNBBE,
5445 bool modelPar_given_EBBE,
5447 bool modelPar_given_DTEMP,
5449 bool modelPar_given_VERS,
5451 bool modelPar_given_VREV,
5454 double admsTemperature)
5471 void evaluateModelEquations(
5472 std::vector <double> & probeVars,
5474 const int admsProbeID_V_ci_ei,
5475 const int admsProbeID_V_b_c,
5476 const int admsProbeID_V_bp_cx,
5477 const int admsProbeID_V_e_ei,
5478 const int admsProbeID_V_b_bx,
5479 const int admsProbeID_V_bx_bi,
5480 const int admsProbeID_V_cx_ci,
5481 const int admsProbeID_V_c_cx,
5482 const int admsProbeID_V_b_e,
5483 const int admsProbeID_V_dt_GND,
5484 const int admsProbeID_V_bx_bp,
5485 const int admsProbeID_V_bi_cx,
5486 const int admsProbeID_V_bx_ei,
5487 const int admsProbeID_V_bi_ci,
5488 const int admsProbeID_V_bi_ei,
5490 const int admsNodeID_c,
5491 const int admsNodeID_b,
5492 const int admsNodeID_e,
5493 const int admsNodeID_dt,
5494 const int admsNodeID_cx,
5495 const int admsNodeID_ci,
5496 const int admsNodeID_bx,
5497 const int admsNodeID_bi,
5498 const int admsNodeID_ei,
5499 const int admsNodeID_bp,
5503 bool instancePar_given_DTEMP,
5506 bool instancePar_given_M,
5510 bool modelPar_given_TNOM,
5512 bool modelPar_given_RCX,
5514 bool modelPar_given_RCI,
5516 bool modelPar_given_VO,
5518 bool modelPar_given_GAMM,
5520 bool modelPar_given_HRCF,
5522 bool modelPar_given_RBX,
5524 bool modelPar_given_RBI,
5526 bool modelPar_given_RE,
5528 bool modelPar_given_RS,
5530 bool modelPar_given_RBP,
5532 bool modelPar_given_IS,
5534 bool modelPar_given_NF,
5536 bool modelPar_given_NR,
5538 bool modelPar_given_FC,
5540 bool modelPar_given_CBEO,
5542 bool modelPar_given_CJE,
5544 bool modelPar_given_PE,
5546 bool modelPar_given_ME,
5548 bool modelPar_given_AJE,
5550 bool modelPar_given_CBCO,
5552 bool modelPar_given_CJC,
5554 bool modelPar_given_QCO,
5556 bool modelPar_given_CJEP,
5558 bool modelPar_given_PC,
5560 bool modelPar_given_MC,
5562 bool modelPar_given_AJC,
5564 bool modelPar_given_CJCP,
5566 bool modelPar_given_PS,
5568 bool modelPar_given_MS,
5570 bool modelPar_given_AJS,
5572 bool modelPar_given_IBEI,
5574 bool modelPar_given_WBE,
5576 bool modelPar_given_NEI,
5578 bool modelPar_given_IBEN,
5580 bool modelPar_given_NEN,
5582 bool modelPar_given_IBCI,
5584 bool modelPar_given_NCI,
5586 bool modelPar_given_IBCN,
5588 bool modelPar_given_NCN,
5590 bool modelPar_given_AVC1,
5592 bool modelPar_given_AVC2,
5594 bool modelPar_given_ISP,
5596 bool modelPar_given_WSP,
5598 bool modelPar_given_NFP,
5600 bool modelPar_given_IBEIP,
5602 bool modelPar_given_IBENP,
5604 bool modelPar_given_IBCIP,
5606 bool modelPar_given_NCIP,
5608 bool modelPar_given_IBCNP,
5610 bool modelPar_given_NCNP,
5612 bool modelPar_given_VEF,
5614 bool modelPar_given_VER,
5616 bool modelPar_given_IKF,
5618 bool modelPar_given_IKR,
5620 bool modelPar_given_IKP,
5622 bool modelPar_given_TF,
5624 bool modelPar_given_QTF,
5626 bool modelPar_given_XTF,
5628 bool modelPar_given_VTF,
5630 bool modelPar_given_ITF,
5632 bool modelPar_given_TR,
5634 bool modelPar_given_TD,
5636 bool modelPar_given_KFN,
5638 bool modelPar_given_AFN,
5640 bool modelPar_given_BFN,
5642 bool modelPar_given_XRE,
5644 bool modelPar_given_XRBI,
5646 bool modelPar_given_XRCI,
5648 bool modelPar_given_XRS,
5650 bool modelPar_given_XVO,
5652 bool modelPar_given_EA,
5654 bool modelPar_given_EAIE,
5656 bool modelPar_given_EAIC,
5658 bool modelPar_given_EAIS,
5660 bool modelPar_given_EANE,
5662 bool modelPar_given_EANC,
5664 bool modelPar_given_EANS,
5666 bool modelPar_given_XIS,
5668 bool modelPar_given_XII,
5670 bool modelPar_given_XIN,
5672 bool modelPar_given_TNF,
5674 bool modelPar_given_TAVC,
5676 bool modelPar_given_RTH,
5678 bool modelPar_given_CTH,
5680 bool modelPar_given_VRT,
5682 bool modelPar_given_ART,
5684 bool modelPar_given_CCSO,
5686 bool modelPar_given_QBM,
5688 bool modelPar_given_NKF,
5690 bool modelPar_given_XIKF,
5692 bool modelPar_given_XRCX,
5694 bool modelPar_given_XRBX,
5696 bool modelPar_given_XRBP,
5698 bool modelPar_given_ISRR,
5700 bool modelPar_given_XISR,
5702 bool modelPar_given_DEAR,
5704 bool modelPar_given_EAP,
5706 bool modelPar_given_VBBE,
5708 bool modelPar_given_NBBE,
5710 bool modelPar_given_IBBE,
5712 bool modelPar_given_TVBBE1,
5714 bool modelPar_given_TVBBE2,
5716 bool modelPar_given_TNBBE,
5718 bool modelPar_given_EBBE,
5720 bool modelPar_given_DTEMP,
5722 bool modelPar_given_VERS,
5724 bool modelPar_given_VREV,
5728 double admsTemperature,
double adms_vt_nom,
double gmin, std::vector <AdmsSensFadType> & staticContributions, std::vector <AdmsSensFadType> & dynamicContributions,
const Instance & theInstance)
5919 tVCrit = (
adms_vt(admsTemperature)*log((
adms_vt(admsTemperature)/(1.41421356237309504880*modelPar_IS))));
5920 Vbei = probeVars[admsProbeID_V_bi_ei];
5922 Vbci = probeVars[admsProbeID_V_bi_ci];
5924 Vbex = probeVars[admsProbeID_V_bx_ei];
5926 Vbcx = probeVars[admsProbeID_V_bi_cx];
5928 Vbep = probeVars[admsProbeID_V_bx_bp];
5930 Vrth = probeVars[admsProbeID_V_dt_GND];
5932 Vbe = probeVars[admsProbeID_V_b_e];
5934 Vrcx = (modelPar_dtype*(probeVars[admsProbeID_V_c_cx]));
5935 Vrci = (modelPar_dtype*(probeVars[admsProbeID_V_cx_ci]));
5936 Vrbi = (modelPar_dtype*(probeVars[admsProbeID_V_bx_bi]));
5937 Vrbx = (modelPar_dtype*(probeVars[admsProbeID_V_b_bx]));
5938 Vre = (modelPar_dtype*(probeVars[admsProbeID_V_e_ei]));
5939 Vrbp = (modelPar_dtype*(probeVars[admsProbeID_V_bp_cx]));
5940 Vbc = (modelPar_dtype*(probeVars[admsProbeID_V_b_c]));
5941 Vcei = (modelPar_dtype*(probeVars[admsProbeID_V_ci_ei]));
5942 Tini = (2.731500e+02+modelPar_TNOM);
5943 Tdev = ((admsTemperature+instancePar_DTEMP)+Vrth);
5944 Vtv = ((1.380662e-23*Tdev)/1.602189e-19);
5947 IKFatT = (modelPar_IKF*pow(rT,modelPar_XIKF));
5948 RCXatT = (modelPar_RCX*pow(rT,modelPar_XRCX));
5949 RCIatT = (modelPar_RCI*pow(rT,modelPar_XRCI));
5950 RBXatT = (modelPar_RBX*pow(rT,modelPar_XRBX));
5951 RBIatT = (modelPar_RBI*pow(rT,modelPar_XRBI));
5952 REatT = (modelPar_RE*pow(rT,modelPar_XRE));
5953 RSatT = (modelPar_RS*pow(rT,modelPar_XRS));
5954 RBPatT = (modelPar_RBP*pow(rT,modelPar_XRBP));
5955 ISatT = (modelPar_IS*pow((pow(rT,modelPar_XIS)*exp((((-modelPar_EA)*(1.0-rT))/Vtv))),(1.0/modelPar_NF)));
5956 ISRRatT = (modelPar_ISRR*pow((pow(rT,modelPar_XISR)*exp((((-modelPar_DEAR)*(1.0-rT))/Vtv))),(1.0/modelPar_NR)));
5957 ISPatT = (modelPar_ISP*pow((pow(rT,modelPar_XIS)*exp((((-modelPar_EAP)*(1.0-rT))/Vtv))),(1.0/modelPar_NFP)));
5958 IBEIatT = (modelPar_IBEI*pow((pow(rT,modelPar_XII)*exp((((-modelPar_EAIE)*(1.0-rT))/Vtv))),(1.0/modelPar_NEI)));
5959 IBENatT = (modelPar_IBEN*pow((pow(rT,modelPar_XIN)*exp((((-modelPar_EANE)*(1.0-rT))/Vtv))),(1.0/modelPar_NEN)));
5960 IBCIatT = (modelPar_IBCI*pow((pow(rT,modelPar_XII)*exp((((-modelPar_EAIC)*(1.0-rT))/Vtv))),(1.0/modelPar_NCI)));
5961 IBCNatT = (modelPar_IBCN*pow((pow(rT,modelPar_XIN)*exp((((-modelPar_EANC)*(1.0-rT))/Vtv))),(1.0/modelPar_NCN)));
5962 IBEIPatT = (modelPar_IBEIP*pow((pow(rT,modelPar_XII)*exp((((-modelPar_EAIC)*(1.0-rT))/Vtv))),(1.0/modelPar_NCI)));
5963 IBENPatT = (modelPar_IBENP*pow((pow(rT,modelPar_XIN)*exp((((-modelPar_EANC)*(1.0-rT))/Vtv))),(1.0/modelPar_NCN)));
5964 IBCIPatT = (modelPar_IBCIP*pow((pow(rT,modelPar_XII)*exp((((-modelPar_EAIS)*(1.0-rT))/Vtv))),(1.0/modelPar_NCIP)));
5965 IBCNPatT = (modelPar_IBCNP*pow((pow(rT,modelPar_XIN)*exp((((-modelPar_EANS)*(1.0-rT))/Vtv))),(1.0/modelPar_NCNP)));
5966 NFatT = (modelPar_NF*(1.0+(dT*modelPar_TNF)));
5967 NRatT = (modelPar_NR*(1.0+(dT*modelPar_TNF)));
5968 AVC2atT = (modelPar_AVC2*(1.0+(dT*modelPar_TAVC)));
5969 VBBEatT = (modelPar_VBBE*(1.0+(dT*(modelPar_TVBBE1+(dT*modelPar_TVBBE2)))));
5970 NBBEatT = (modelPar_NBBE*(1.0+(dT*modelPar_TNBBE)));
5971 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*modelPar_PE)*rT)/Vtv))-exp(((((-0.5)*modelPar_PE)*rT)/Vtv)))));
5972 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-(modelPar_EAIE*(rT-1.0)));
5973 PEatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
5974 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*modelPar_PC)*rT)/Vtv))-exp(((((-0.5)*modelPar_PC)*rT)/Vtv)))));
5975 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-(modelPar_EAIC*(rT-1.0)));
5976 PCatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
5977 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*modelPar_PS)*rT)/Vtv))-exp(((((-0.5)*modelPar_PS)*rT)/Vtv)))));
5978 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-(modelPar_EAIS*(rT-1.0)));
5979 PSatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
5980 CJEatT = (modelPar_CJE*pow((modelPar_PE/PEatT),modelPar_ME));
5981 CJCatT = (modelPar_CJC*pow((modelPar_PC/PCatT),modelPar_MC));
5982 CJEPatT = (modelPar_CJEP*pow((modelPar_PC/PCatT),modelPar_MC));
5983 CJCPatT = (modelPar_CJCP*pow((modelPar_PS/PSatT),modelPar_MS));
5984 GAMMatT = ((modelPar_GAMM*pow(rT,modelPar_XIS))*exp((((-modelPar_EA)*(1.0-rT))/Vtv)));
5985 VOatT = (modelPar_VO*pow(rT,modelPar_XVO));
5986 EBBEatT = exp(((-VBBEatT)/(NBBEatT*Vtv)));
5987 IVEF = adms_ternary_op<AdmsSensFadType>((modelPar_VEF>0.0),(1.0/modelPar_VEF),0.0);
5988 IVER = adms_ternary_op<AdmsSensFadType>((modelPar_VER>0.0),(1.0/modelPar_VER),0.0);
5990 if ((modelPar_IKF>0.0))
5992 IIKF = (1.0/IKFatT);
5994 IIKR = adms_ternary_op<AdmsSensFadType>((modelPar_IKR>0.0),(1.0/modelPar_IKR),0.0);
5995 IIKP = adms_ternary_op<AdmsSensFadType>((modelPar_IKP>0.0),(1.0/modelPar_IKP),0.0);
5997 if ((modelPar_VO>0.0))
6001 IHRCF = adms_ternary_op<AdmsSensFadType>((modelPar_HRCF>0.0),(1.0/modelPar_HRCF),0.0);
6002 IVTF = adms_ternary_op<AdmsSensFadType>((modelPar_VTF>0.0),(1.0/modelPar_VTF),0.0);
6003 IITF = adms_ternary_op<AdmsSensFadType>((modelPar_ITF>0.0),(1.0/modelPar_ITF),0.0);
6004 slTF = ((modelPar_ITF>0.0)?0.0:1.0);
6005 dv0 = ((-PEatT)*modelPar_FC);
6006 if ((modelPar_AJE<=0.0))
6008 dvh_vbei = (Vbei+dv0);
6011 pwq = pow((1.0-modelPar_FC),((-1.0)-modelPar_ME));
6012 qlo_vbei = ((PEatT*(1.0-((pwq*(1.0-modelPar_FC))*(1.0-modelPar_FC))))/(1.0-modelPar_ME));
6013 qhi_vbei = ((dvh_vbei*((1.0-modelPar_FC)+(((0.5*modelPar_ME)*dvh_vbei)/PEatT)))*pwq);
6017 qlo_vbei = ((PEatT*(1.0-pow((1.0-(Vbei/PEatT)),(1.0-modelPar_ME))))/(1.0-modelPar_ME));
6020 qdbe = (qlo_vbei+qhi_vbei);
6024 mv0 = sqrt(((dv0*dv0)+((4*modelPar_AJE)*modelPar_AJE)));
6025 vl0 = ((-0.5)*(dv0+mv0));
6026 q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-modelPar_ME)))/(1.0-modelPar_ME));
6027 dv_vbei = (Vbei+dv0);
6028 mv_vbei = sqrt(((dv_vbei*dv_vbei)+((4*modelPar_AJE)*modelPar_AJE)));
6029 vl_vbei = ((0.5*(dv_vbei-mv_vbei))-dv0);
6030 qlo_vbei = (((-PEatT)*pow((1.0-(vl_vbei/PEatT)),(1.0-modelPar_ME)))/(1.0-modelPar_ME));
6031 qdbe = ((qlo_vbei+(pow((1.0-modelPar_FC),(-modelPar_ME))*((Vbei-vl_vbei)+vl0)))-q0);
6033 dv0 = ((-PEatT)*modelPar_FC);
6034 if ((modelPar_AJE<=0.0))
6036 dvh_vbex = (Vbex+dv0);
6039 pwq = pow((1.0-modelPar_FC),((-1.0)-modelPar_ME));
6040 qlo_vbex = ((PEatT*(1.0-((pwq*(1.0-modelPar_FC))*(1.0-modelPar_FC))))/(1.0-modelPar_ME));
6041 qhi_vbex = ((dvh_vbex*((1.0-modelPar_FC)+(((0.5*modelPar_ME)*dvh_vbex)/PEatT)))*pwq);
6045 qlo_vbex = ((PEatT*(1.0-pow((1.0-(Vbex/PEatT)),(1.0-modelPar_ME))))/(1.0-modelPar_ME));
6048 qdbex = (qlo_vbex+qhi_vbex);
6052 mv0 = sqrt(((dv0*dv0)+((4*modelPar_AJE)*modelPar_AJE)));
6053 vl0 = ((-0.5)*(dv0+mv0));
6054 q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-modelPar_ME)))/(1.0-modelPar_ME));
6055 dv_vbex = (Vbex+dv0);
6056 mv_vbex = sqrt(((dv_vbex*dv_vbex)+((4*modelPar_AJE)*modelPar_AJE)));
6057 vl_vbex = ((0.5*(dv_vbex-mv_vbex))-dv0);
6058 qlo_vbex = (((-PEatT)*pow((1.0-(vl_vbex/PEatT)),(1.0-modelPar_ME)))/(1.0-modelPar_ME));
6059 qdbex = ((qlo_vbex+(pow((1.0-modelPar_FC),(-modelPar_ME))*((Vbex-vl_vbex)+vl0)))-q0);
6061 dv0 = ((-PCatT)*modelPar_FC);
6062 if ((modelPar_AJC<=0.0))
6064 dvh_vbci = (Vbci+dv0);
6067 pwq = pow((1.0-modelPar_FC),((-1.0)-modelPar_MC));
6068 qlo_vbci = ((PCatT*(1.0-((pwq*(1.0-modelPar_FC))*(1.0-modelPar_FC))))/(1.0-modelPar_MC));
6069 qhi_vbci = ((dvh_vbci*((1.0-modelPar_FC)+(((0.5*modelPar_MC)*dvh_vbci)/PCatT)))*pwq);
6073 if (((modelPar_VRT>0.0)&&(Vbci<(-modelPar_VRT))))
6075 qlo_vbci = ((PCatT*(1.0-(pow((1.0+(modelPar_VRT/PCatT)),(1.0-modelPar_MC))*(1.0-(((1.0-modelPar_MC)*(Vbci+modelPar_VRT))/(PCatT+modelPar_VRT))))))/(1.0-modelPar_MC));
6079 qlo_vbci = ((PCatT*(1.0-pow((1.0-(Vbci/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
6083 qdbc = (qlo_vbci+qhi_vbci);
6087 if (((modelPar_VRT>0.0)&&(modelPar_ART>0.0)))
6089 vn0 = ((modelPar_VRT+dv0)/(modelPar_VRT-dv0));
6090 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)))));
6091 vl0 = (0.5*(((vnl0*(modelPar_VRT-dv0))-modelPar_VRT)-dv0));
6092 qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
6093 vn_vbci = ((((2*Vbci)+modelPar_VRT)+dv0)/(modelPar_VRT-dv0));
6094 vnl_vbci = ((2.0*vn_vbci)/(sqrt((((vn_vbci-1.0)*(vn_vbci-1))+((4*modelPar_AJC)*modelPar_AJC)))+sqrt((((vn_vbci+1.0)*(vn_vbci+1))+((4*modelPar_ART)*modelPar_ART)))));
6095 vl_vbci = (0.5*(((vnl_vbci*(modelPar_VRT-dv0))-modelPar_VRT)-dv0));
6096 qlo_vbci = ((PCatT*(1.0-pow((1.0-(vl_vbci/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
6097 sel_vbci = (0.5*(vnl_vbci+1.0));
6098 crt = pow((1.0+(modelPar_VRT/PCatT)),(-modelPar_MC));
6099 cmx = pow((1.0+(dv0/PCatT)),(-modelPar_MC));
6100 cl_vbci = (((1.0-sel_vbci)*crt)+(sel_vbci*cmx));
6101 ql_vbci = (((Vbci-vl_vbci)+vl0)*cl_vbci);
6102 qdbc = ((ql_vbci+qlo_vbci)-qlo0);
6106 mv0 = sqrt(((dv0*dv0)+((4*modelPar_AJC)*modelPar_AJC)));
6107 vl0 = ((-0.5)*(dv0+mv0));
6108 q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-modelPar_MC)))/(1.0-modelPar_MC));
6109 dv_vbci = (Vbci+dv0);
6110 mv_vbci = sqrt(((dv_vbci*dv_vbci)+((4*modelPar_AJC)*modelPar_AJC)));
6111 vl_vbci = ((0.5*(dv_vbci-mv_vbci))-dv0);
6112 qlo_vbci = (((-PCatT)*pow((1.0-(vl_vbci/PCatT)),(1.0-modelPar_MC)))/(1.0-modelPar_MC));
6113 qdbc = ((qlo_vbci+(pow((1.0-modelPar_FC),(-modelPar_MC))*((Vbci-vl_vbci)+vl0)))-q0);
6116 dv0 = ((-PCatT)*modelPar_FC);
6117 if ((modelPar_AJC<=0.0))
6119 dvh_vbep = (Vbep+dv0);
6122 pwq = pow((1.0-modelPar_FC),((-1.0)-modelPar_MC));
6123 qlo_vbep = ((PCatT*(1.0-((pwq*(1.0-modelPar_FC))*(1.0-modelPar_FC))))/(1.0-modelPar_MC));
6124 qhi_vbep = ((dvh_vbep*((1.0-modelPar_FC)+(((0.5*modelPar_MC)*dvh_vbep)/PCatT)))*pwq);
6128 if (((modelPar_VRT>0.0)&&(Vbep<(-modelPar_VRT))))
6130 qlo_vbep = ((PCatT*(1.0-(pow((1.0+(modelPar_VRT/PCatT)),(1.0-modelPar_MC))*(1.0-(((1.0-modelPar_MC)*(Vbep+modelPar_VRT))/(PCatT+modelPar_VRT))))))/(1.0-modelPar_MC));
6134 qlo_vbep = ((PCatT*(1.0-pow((1.0-(Vbep/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
6138 qdbep = (qlo_vbep+qhi_vbep);
6142 if (((modelPar_VRT>0.0)&&(modelPar_ART>0.0)))
6144 vn0 = ((modelPar_VRT+dv0)/(modelPar_VRT-dv0));
6145 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)))));
6146 vl0 = (0.5*(((vnl0*(modelPar_VRT-dv0))-modelPar_VRT)-dv0));
6147 qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
6148 vn_vbep = ((((2*Vbep)+modelPar_VRT)+dv0)/(modelPar_VRT-dv0));
6149 vnl_vbep = ((2.0*vn_vbep)/(sqrt((((vn_vbep-1.0)*(vn_vbep-1))+((4*modelPar_AJC)*modelPar_AJC)))+sqrt((((vn_vbep+1.0)*(vn_vbep+1))+((4*modelPar_ART)*modelPar_ART)))));
6150 vl_vbep = (0.5*(((vnl_vbep*(modelPar_VRT-dv0))-modelPar_VRT)-dv0));
6151 qlo_vbep = ((PCatT*(1.0-pow((1.0-(vl_vbep/PCatT)),(1.0-modelPar_MC))))/(1.0-modelPar_MC));
6152 sel_vbep = (0.5*(vnl_vbep+1.0));
6153 crt = pow((1.0+(modelPar_VRT/PCatT)),(-modelPar_MC));
6154 cmx = pow((1.0+(dv0/PCatT)),(-modelPar_MC));
6155 cl_vbep = (((1.0-sel_vbep)*crt)+(sel_vbep*cmx));
6156 ql_vbep = (((Vbep-vl_vbep)+vl0)*cl_vbep);
6157 qdbep = ((ql_vbep+qlo_vbep)-qlo0);
6161 mv0 = sqrt(((dv0*dv0)+((4*modelPar_AJC)*modelPar_AJC)));
6162 vl0 = ((-0.5)*(dv0+mv0));
6163 q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-modelPar_MC)))/(1.0-modelPar_MC));
6164 dv_vbep = (Vbep+dv0);
6165 mv_vbep = sqrt(((dv_vbep*dv_vbep)+((4*modelPar_AJC)*modelPar_AJC)));
6166 vl_vbep = ((0.5*(dv_vbep-mv_vbep))-dv0);
6167 qlo_vbep = (((-PCatT)*pow((1.0-(vl_vbep/PCatT)),(1.0-modelPar_MC)))/(1.0-modelPar_MC));
6168 qdbep = ((qlo_vbep+(pow((1.0-modelPar_FC),(-modelPar_MC))*((Vbep-vl_vbep)+vl0)))-q0);
6171 argi_vbei = (Vbei/(NFatT*Vtv));
6172 expi_vbei = limexp<AdmsSensFadType>(argi_vbei);
6173 Ifi = (ISatT*(expi_vbei-1.0));
6174 argi_vbci = (Vbci/(NRatT*Vtv));
6175 expi_vbci = limexp<AdmsSensFadType>(argi_vbci);
6176 Iri = ((ISatT*ISRRatT)*(expi_vbci-1.0));
6177 q1z = ((1.0+(qdbe*IVER))+(qdbc*IVEF));
6178 q1 = ((0.5*((sqrt((((q1z-1.0e-4)*(q1z-1.0e-4))+1.0e-8))+q1z)-1.0e-4))+1.0e-4);
6179 q2 = ((Ifi*IIKF)+(Iri*IIKR));
6182 if ((modelPar_QBM<0.5))
6184 qb = (0.5*(q1+pow((pow(q1,(1.0/modelPar_NKF))+(4.0*q2)),modelPar_NKF)));
6188 qb = ((0.5*q1)*(1.0+pow((1.0+(4.0*q2)),modelPar_NKF)));
6197 if ((modelPar_ISP>0.0))
6199 argi_vbep = (Vbep/(modelPar_NFP*Vtv));
6200 expi_vbep = limexp<AdmsSensFadType>(argi_vbep);
6201 argx_vbci = (Vbci/(modelPar_NFP*Vtv));
6202 expx_vbci = limexp<AdmsSensFadType>(argx_vbci);
6203 Ifp = (ISPatT*(((modelPar_WSP*expi_vbep)+((1.0-modelPar_WSP)*expx_vbci))-1.0));
6205 qbp = (0.5*(1.0+sqrt((1.0+(4.0*q2p)))));
6212 if ((modelPar_WBE==1.0))
6214 argi_vbei = (Vbei/(modelPar_NEI*Vtv));
6215 expi_vbei = limexp<AdmsSensFadType>(argi_vbei);
6216 argn_vbei = (Vbei/(modelPar_NEN*Vtv));
6217 expn_vbei = limexp<AdmsSensFadType>(argn_vbei);
6218 if ((modelPar_VBBE>0.0))
6220 argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
6221 expx_vbei = limexp<AdmsSensFadType>(argx_vbei);
6222 Ibe = (((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-(modelPar_IBBE*(expx_vbei-EBBEatT)));
6226 Ibe = ((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)));
6232 if ((modelPar_WBE==0.0))
6235 argi_vbex = (Vbex/(modelPar_NEI*Vtv));
6236 expi_vbex = limexp<AdmsSensFadType>(argi_vbex);
6237 argn_vbex = (Vbex/(modelPar_NEN*Vtv));
6238 expn_vbex = limexp<AdmsSensFadType>(argn_vbex);
6239 if ((modelPar_VBBE>0.0))
6241 argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
6242 expx_vbex = limexp<AdmsSensFadType>(argx_vbex);
6243 Ibex = (((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-(modelPar_IBBE*(expx_vbex-EBBEatT)));
6247 Ibex = ((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)));
6252 argi_vbei = (Vbei/(modelPar_NEI*Vtv));
6253 expi_vbei = limexp<AdmsSensFadType>(argi_vbei);
6254 argn_vbei = (Vbei/(modelPar_NEN*Vtv));
6255 expn_vbei = limexp<AdmsSensFadType>(argn_vbei);
6256 if ((modelPar_VBBE>0.0))
6258 argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
6259 expx_vbei = limexp<AdmsSensFadType>(argx_vbei);
6260 Ibe = (modelPar_WBE*(((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-(modelPar_IBBE*(expx_vbei-EBBEatT))));
6264 Ibe = (modelPar_WBE*((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0))));
6266 argi_vbex = (Vbex/(modelPar_NEI*Vtv));
6267 expi_vbex = limexp<AdmsSensFadType>(argi_vbex);
6268 argn_vbex = (Vbex/(modelPar_NEN*Vtv));
6269 expn_vbex = limexp<AdmsSensFadType>(argn_vbex);
6270 if ((modelPar_VBBE>0.0))
6272 argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
6273 expx_vbex = limexp<AdmsSensFadType>(argx_vbex);
6274 Ibex = ((1.0-modelPar_WBE)*(((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-(modelPar_IBBE*(expx_vbex-EBBEatT))));
6278 Ibex = ((1.0-modelPar_WBE)*((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0))));
6282 argi_vbci = (Vbci/(modelPar_NCI*Vtv));
6283 expi_vbci = limexp<AdmsSensFadType>(argi_vbci);
6284 argn_vbci = (Vbci/(modelPar_NCN*Vtv));
6285 expn_vbci = limexp<AdmsSensFadType>(argn_vbci);
6286 Ibcj = ((IBCIatT*(expi_vbci-1.0))+(IBCNatT*(expn_vbci-1.0)));
6287 if (((modelPar_IBEIP>0.0)||(modelPar_IBENP>0.0)))
6289 argi_vbep = (Vbep/(modelPar_NCI*Vtv));
6290 expi_vbep = limexp<AdmsSensFadType>(argi_vbep);
6291 argn_vbep = (Vbep/(modelPar_NCN*Vtv));
6292 expn_vbep = limexp<AdmsSensFadType>(argn_vbep);
6293 Ibep = ((IBEIPatT*(expi_vbep-1.0))+(IBENPatT*(expn_vbep-1.0)));
6299 if ((modelPar_AVC1>0.0))
6301 vl_vbci = (0.5*(sqrt((((PCatT-Vbci)*(PCatT-Vbci))+0.01))+(PCatT-Vbci)));
6302 avalf_exparg = ((-AVC2atT)*pow(vl_vbci,(modelPar_MC-1.0)));
6303 avalf = ((modelPar_AVC1*vl_vbci)*limexp<AdmsSensFadType>(avalf_exparg));
6304 Igc = (((Itzf-Itzr)-Ibcj)*avalf);
6311 if ((modelPar_RCX>0.0))
6313 Ircx = (Vrcx/RCXatT);
6319 argi_vbci = (Vbci/Vtv);
6320 expi_vbci = limexp<AdmsSensFadType>(argi_vbci);
6321 argx_vbcx = (Vbcx/Vtv);
6322 expx_vbcx = limexp<AdmsSensFadType>(argx_vbcx);
6323 Kbci = sqrt((1.0+(GAMMatT*expi_vbci)));
6324 Kbcx = sqrt((1.0+(GAMMatT*expx_vbcx)));
6325 if ((modelPar_RCI>0.0))
6327 rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
6328 Iohm = ((Vrci+(Vtv*((Kbci-Kbcx)-log(rKp1))))/RCIatT);
6329 derf = (((IVO*RCIatT)*Iohm)/(1.0+(((0.5*IVO)*IHRCF)*sqrt(((Vrci*Vrci)+0.01)))));
6330 Irci = (Iohm/sqrt((1+(derf*derf))));
6336 if ((modelPar_RBX>0.0))
6338 Irbx = (Vrbx/RBXatT);
6344 if ((modelPar_RBI>0.0))
6346 Irbi = ((Vrbi*qb)/RBIatT);
6352 if ((modelPar_RE>0.0))
6360 if ((modelPar_RBP>0.0))
6362 Irbp = ((Vrbp*qbp)/RBPatT);
6368 sgIf = ((Ifi>0.0)?1.0:0.0);
6369 rIf = ((Ifi*sgIf)*IITF);
6370 mIf = (rIf/(rIf+1.0));
6371 tff_exparg = ((Vbci*IVTF)/1.44);
6372 tff = ((modelPar_TF*(1.0+(modelPar_QTF*q1)))*(1.0+(((modelPar_XTF*limexp<AdmsSensFadType>(tff_exparg))*(slTF+(mIf*mIf)))*sgIf)));
6373 Qbe = (((CJEatT*qdbe)*modelPar_WBE)+((tff*Ifi)/qb));
6374 Qbex = ((CJEatT*qdbex)*(1.0-modelPar_WBE));
6375 Qbc = (((CJCatT*qdbc)+(modelPar_TR*Iri))+(modelPar_QCO*Kbci));
6376 Qbcx = (modelPar_QCO*Kbcx);
6377 Qbep = ((CJEPatT*qdbep)+(modelPar_TR*Ifp));
6378 Qbeo = (Vbe*modelPar_CBEO);
6379 Qbco = (Vbc*modelPar_CBCO);
6380 Ith = (-(((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itzf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp)));
6381 if ((modelPar_RTH>0.0))
6383 Irth = (Vrth/modelPar_RTH);
6389 Qcth = (Vrth*modelPar_CTH);
6391 staticContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Ibe+(gmin*Vbei)));
6392 staticContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*(Ibe+(gmin*Vbei)));
6394 staticContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*(Ibex+(gmin*Vbex)));
6395 staticContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*(Ibex+(gmin*Vbex)));
6397 staticContributions[admsNodeID_ci] += ((instancePar_M*modelPar_dtype)*Itzf);
6398 staticContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*Itzf);
6400 staticContributions[admsNodeID_ei] += ((instancePar_M*modelPar_dtype)*Itzr);
6401 staticContributions[admsNodeID_ci] -= ((instancePar_M*modelPar_dtype)*Itzr);
6403 staticContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Ibc+(gmin*Vbci)));
6404 staticContributions[admsNodeID_ci] -= ((instancePar_M*modelPar_dtype)*(Ibc+(gmin*Vbci)));
6406 staticContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*(Ibep+(gmin*Vbep)));
6407 staticContributions[admsNodeID_bp] -= ((instancePar_M*modelPar_dtype)*(Ibep+(gmin*Vbep)));
6408 if ((modelPar_RCX>0))
6411 staticContributions[admsNodeID_c] += ((instancePar_M*modelPar_dtype)*Ircx);
6412 staticContributions[admsNodeID_cx] -= ((instancePar_M*modelPar_dtype)*Ircx);
6420 staticContributions[admsNodeID_cx] += ((instancePar_M*modelPar_dtype)*(Irci+(gmin*Vrci)));
6421 staticContributions[admsNodeID_ci] -= ((instancePar_M*modelPar_dtype)*(Irci+(gmin*Vrci)));
6422 if ((modelPar_RBX>0))
6425 staticContributions[admsNodeID_b] += ((instancePar_M*modelPar_dtype)*Irbx);
6426 staticContributions[admsNodeID_bx] -= ((instancePar_M*modelPar_dtype)*Irbx);
6434 staticContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*Irbi);
6435 staticContributions[admsNodeID_bi] -= ((instancePar_M*modelPar_dtype)*Irbi);
6436 if ((modelPar_RE>0))
6439 staticContributions[admsNodeID_e] += ((instancePar_M*modelPar_dtype)*Ire);
6440 staticContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*Ire);
6448 staticContributions[admsNodeID_bp] += ((instancePar_M*modelPar_dtype)*Irbp);
6449 staticContributions[admsNodeID_cx] -= ((instancePar_M*modelPar_dtype)*Irbp);
6451 dynamicContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Qbe));
6452 dynamicContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*(Qbe));
6454 dynamicContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*(Qbex));
6455 dynamicContributions[admsNodeID_ei] -= ((instancePar_M*modelPar_dtype)*(Qbex));
6457 dynamicContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Qbc));
6458 dynamicContributions[admsNodeID_ci] -= ((instancePar_M*modelPar_dtype)*(Qbc));
6460 dynamicContributions[admsNodeID_bi] += ((instancePar_M*modelPar_dtype)*(Qbcx));
6461 dynamicContributions[admsNodeID_cx] -= ((instancePar_M*modelPar_dtype)*(Qbcx));
6463 dynamicContributions[admsNodeID_bx] += ((instancePar_M*modelPar_dtype)*(Qbep));
6464 dynamicContributions[admsNodeID_bp] -= ((instancePar_M*modelPar_dtype)*(Qbep));
6466 dynamicContributions[admsNodeID_b] += ((instancePar_M*modelPar_dtype)*(Qbeo));
6467 dynamicContributions[admsNodeID_e] -= ((instancePar_M*modelPar_dtype)*(Qbeo));
6469 dynamicContributions[admsNodeID_b] += ((instancePar_M*modelPar_dtype)*(Qbco));
6470 dynamicContributions[admsNodeID_c] -= ((instancePar_M*modelPar_dtype)*(Qbco));
6472 staticContributions[admsNodeID_dt] += Irth;
6474 staticContributions[admsNodeID_dt] += Ith;
6476 dynamicContributions[admsNodeID_dt] += (Qcth);
6503 void InstanceSensitivity::operator()
6505 const ParameterBase &entity,
6506 const std::string &name,
6507 std::vector<double> & dfdp,
6508 std::vector<double> & dqdp,
6509 std::vector<double> & dbdp,
6510 std::vector<int> & Findices,
6511 std::vector<int> & Qindices,
6512 std::vector<int> & Bindices
6515 const ParameterBase * e1 = &entity;
6516 const Instance & in = *(
dynamic_cast<const Instance *
> (e1));
6517 const Model & mod =in.model_;
6521 Findices.resize(10+0);
6522 Qindices.resize(10+0);
6524 std::vector <double> probeVars(15);
6525 std::vector <AdmsSensFadType> staticContributions(10+0);
6526 std::vector <AdmsSensFadType> dynamicContributions(10+0);
6530 for (
int i=0; i < 10+0 ; ++i)
6532 staticContributions[i]=0;
6533 dynamicContributions[i]=0;
6539 bool modelPar_given_TNOM=mod.given(
"TNOM");
6541 bool modelPar_given_RCX=mod.given(
"RCX");
6543 bool modelPar_given_RCI=mod.given(
"RCI");
6545 bool modelPar_given_VO=mod.given(
"VO");
6547 bool modelPar_given_GAMM=mod.given(
"GAMM");
6549 bool modelPar_given_HRCF=mod.given(
"HRCF");
6551 bool modelPar_given_RBX=mod.given(
"RBX");
6553 bool modelPar_given_RBI=mod.given(
"RBI");
6555 bool modelPar_given_RE=mod.given(
"RE");
6557 bool modelPar_given_RS=mod.given(
"RS");
6559 bool modelPar_given_RBP=mod.given(
"RBP");
6561 bool modelPar_given_IS=mod.given(
"IS");
6563 bool modelPar_given_NF=mod.given(
"NF");
6565 bool modelPar_given_NR=mod.given(
"NR");
6567 bool modelPar_given_FC=mod.given(
"FC");
6569 bool modelPar_given_CBEO=mod.given(
"CBEO");
6571 bool modelPar_given_CJE=mod.given(
"CJE");
6573 bool modelPar_given_PE=mod.given(
"PE");
6575 bool modelPar_given_ME=mod.given(
"ME");
6577 bool modelPar_given_AJE=mod.given(
"AJE");
6579 bool modelPar_given_CBCO=mod.given(
"CBCO");
6581 bool modelPar_given_CJC=mod.given(
"CJC");
6583 bool modelPar_given_QCO=mod.given(
"QCO");
6585 bool modelPar_given_CJEP=mod.given(
"CJEP");
6587 bool modelPar_given_PC=mod.given(
"PC");
6589 bool modelPar_given_MC=mod.given(
"MC");
6591 bool modelPar_given_AJC=mod.given(
"AJC");
6593 bool modelPar_given_CJCP=mod.given(
"CJCP");
6595 bool modelPar_given_PS=mod.given(
"PS");
6597 bool modelPar_given_MS=mod.given(
"MS");
6599 bool modelPar_given_AJS=mod.given(
"AJS");
6601 bool modelPar_given_IBEI=mod.given(
"IBEI");
6603 bool modelPar_given_WBE=mod.given(
"WBE");
6605 bool modelPar_given_NEI=mod.given(
"NEI");
6607 bool modelPar_given_IBEN=mod.given(
"IBEN");
6609 bool modelPar_given_NEN=mod.given(
"NEN");
6611 bool modelPar_given_IBCI=mod.given(
"IBCI");
6613 bool modelPar_given_NCI=mod.given(
"NCI");
6615 bool modelPar_given_IBCN=mod.given(
"IBCN");
6617 bool modelPar_given_NCN=mod.given(
"NCN");
6619 bool modelPar_given_AVC1=mod.given(
"AVC1");
6621 bool modelPar_given_AVC2=mod.given(
"AVC2");
6623 bool modelPar_given_ISP=mod.given(
"ISP");
6625 bool modelPar_given_WSP=mod.given(
"WSP");
6627 bool modelPar_given_NFP=mod.given(
"NFP");
6629 bool modelPar_given_IBEIP=mod.given(
"IBEIP");
6631 bool modelPar_given_IBENP=mod.given(
"IBENP");
6633 bool modelPar_given_IBCIP=mod.given(
"IBCIP");
6635 bool modelPar_given_NCIP=mod.given(
"NCIP");
6637 bool modelPar_given_IBCNP=mod.given(
"IBCNP");
6639 bool modelPar_given_NCNP=mod.given(
"NCNP");
6641 bool modelPar_given_VEF=mod.given(
"VEF");
6643 bool modelPar_given_VER=mod.given(
"VER");
6645 bool modelPar_given_IKF=mod.given(
"IKF");
6647 bool modelPar_given_IKR=mod.given(
"IKR");
6649 bool modelPar_given_IKP=mod.given(
"IKP");
6651 bool modelPar_given_TF=mod.given(
"TF");
6653 bool modelPar_given_QTF=mod.given(
"QTF");
6655 bool modelPar_given_XTF=mod.given(
"XTF");
6657 bool modelPar_given_VTF=mod.given(
"VTF");
6659 bool modelPar_given_ITF=mod.given(
"ITF");
6661 bool modelPar_given_TR=mod.given(
"TR");
6663 bool modelPar_given_TD=mod.given(
"TD");
6665 bool modelPar_given_KFN=mod.given(
"KFN");
6667 bool modelPar_given_AFN=mod.given(
"AFN");
6669 bool modelPar_given_BFN=mod.given(
"BFN");
6671 bool modelPar_given_XRE=mod.given(
"XRE");
6673 bool modelPar_given_XRBI=mod.given(
"XRBI");
6675 bool modelPar_given_XRCI=mod.given(
"XRCI");
6677 bool modelPar_given_XRS=mod.given(
"XRS");
6679 bool modelPar_given_XVO=mod.given(
"XVO");
6681 bool modelPar_given_EA=mod.given(
"EA");
6683 bool modelPar_given_EAIE=mod.given(
"EAIE");
6685 bool modelPar_given_EAIC=mod.given(
"EAIC");
6687 bool modelPar_given_EAIS=mod.given(
"EAIS");
6689 bool modelPar_given_EANE=mod.given(
"EANE");
6691 bool modelPar_given_EANC=mod.given(
"EANC");
6693 bool modelPar_given_EANS=mod.given(
"EANS");
6695 bool modelPar_given_XIS=mod.given(
"XIS");
6697 bool modelPar_given_XII=mod.given(
"XII");
6699 bool modelPar_given_XIN=mod.given(
"XIN");
6701 bool modelPar_given_TNF=mod.given(
"TNF");
6703 bool modelPar_given_TAVC=mod.given(
"TAVC");
6705 bool modelPar_given_RTH=mod.given(
"RTH");
6707 bool modelPar_given_CTH=mod.given(
"CTH");
6709 bool modelPar_given_VRT=mod.given(
"VRT");
6711 bool modelPar_given_ART=mod.given(
"ART");
6713 bool modelPar_given_CCSO=mod.given(
"CCSO");
6715 bool modelPar_given_QBM=mod.given(
"QBM");
6717 bool modelPar_given_NKF=mod.given(
"NKF");
6719 bool modelPar_given_XIKF=mod.given(
"XIKF");
6721 bool modelPar_given_XRCX=mod.given(
"XRCX");
6723 bool modelPar_given_XRBX=mod.given(
"XRBX");
6725 bool modelPar_given_XRBP=mod.given(
"XRBP");
6727 bool modelPar_given_ISRR=mod.given(
"ISRR");
6729 bool modelPar_given_XISR=mod.given(
"XISR");
6731 bool modelPar_given_DEAR=mod.given(
"DEAR");
6733 bool modelPar_given_EAP=mod.given(
"EAP");
6735 bool modelPar_given_VBBE=mod.given(
"VBBE");
6737 bool modelPar_given_NBBE=mod.given(
"NBBE");
6739 bool modelPar_given_IBBE=mod.given(
"IBBE");
6741 bool modelPar_given_TVBBE1=mod.given(
"TVBBE1");
6743 bool modelPar_given_TVBBE2=mod.given(
"TVBBE2");
6745 bool modelPar_given_TNBBE=mod.given(
"TNBBE");
6747 bool modelPar_given_EBBE=mod.given(
"EBBE");
6749 bool modelPar_given_DTEMP=mod.given(
"DTEMP");
6751 bool modelPar_given_VERS=mod.given(
"VERS");
6753 bool modelPar_given_VREV=mod.given(
"VREV");
6760 int modelPar_dtype=mod.dtype;
6768 unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> inParamMap;
6772 bool instancePar_given_DTEMP=in.given(
"DTEMP");
6773 inParamMap[
"DTEMP"] = &instancePar_DTEMP;
6781 int instancePar_M=in.M;
6782 bool instancePar_given_M=in.given(
"M");
6789 inParamMap[name]->diff(0,1);
6806 Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
6810 probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
6811 probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
6812 probeVars[in.admsProbeID_V_bp_cx] = (*solVectorPtr)[in.li_bp] - (*solVectorPtr)[in.li_cx];
6813 probeVars[in.admsProbeID_V_e_ei] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_ei];
6814 probeVars[in.admsProbeID_V_b_bx] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_bx];
6815 probeVars[in.admsProbeID_V_bx_bi] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bi];
6816 probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
6817 probeVars[in.admsProbeID_V_c_cx] = (*solVectorPtr)[in.li_c] - (*solVectorPtr)[in.li_cx];
6818 probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
6819 probeVars[in.admsProbeID_V_dt_GND] = (*solVectorPtr)[in.li_dt];
6820 probeVars[in.admsProbeID_V_bx_bp] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bp];
6821 probeVars[in.admsProbeID_V_bi_cx] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_cx];
6822 probeVars[in.admsProbeID_V_bx_ei] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_ei];
6823 probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
6824 probeVars[in.admsProbeID_V_bi_ei] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ei];
6827 probeVars[in.admsProbeID_V_b_e] *= modelPar_dtype;
6828 probeVars[in.admsProbeID_V_bx_bp] *= modelPar_dtype;
6829 probeVars[in.admsProbeID_V_bi_cx] *= modelPar_dtype;
6830 probeVars[in.admsProbeID_V_bx_ei] *= modelPar_dtype;
6831 probeVars[in.admsProbeID_V_bi_ci] *= modelPar_dtype;
6832 probeVars[in.admsProbeID_V_bi_ei] *= modelPar_dtype;
6837 evaluateModelEquations(
6840 in.admsProbeID_V_ci_ei,
6841 in.admsProbeID_V_b_c,
6842 in.admsProbeID_V_bp_cx,
6843 in.admsProbeID_V_e_ei,
6844 in.admsProbeID_V_b_bx,
6845 in.admsProbeID_V_bx_bi,
6846 in.admsProbeID_V_cx_ci,
6847 in.admsProbeID_V_c_cx,
6848 in.admsProbeID_V_b_e,
6849 in.admsProbeID_V_dt_GND,
6850 in.admsProbeID_V_bx_bp,
6851 in.admsProbeID_V_bi_cx,
6852 in.admsProbeID_V_bx_ei,
6853 in.admsProbeID_V_bi_ci,
6854 in.admsProbeID_V_bi_ei,
6870 instancePar_given_DTEMP,
6873 instancePar_given_M,
6877 modelPar_given_TNOM,
6885 modelPar_given_GAMM,
6887 modelPar_given_HRCF,
6907 modelPar_given_CBEO,
6917 modelPar_given_CBCO,
6923 modelPar_given_CJEP,
6931 modelPar_given_CJCP,
6939 modelPar_given_IBEI,
6945 modelPar_given_IBEN,
6949 modelPar_given_IBCI,
6953 modelPar_given_IBCN,
6957 modelPar_given_AVC1,
6959 modelPar_given_AVC2,
6967 modelPar_given_IBEIP,
6969 modelPar_given_IBENP,
6971 modelPar_given_IBCIP,
6973 modelPar_given_NCIP,
6975 modelPar_given_IBCNP,
6977 modelPar_given_NCNP,
7011 modelPar_given_XRBI,
7013 modelPar_given_XRCI,
7021 modelPar_given_EAIE,
7023 modelPar_given_EAIC,
7025 modelPar_given_EAIS,
7027 modelPar_given_EANE,
7029 modelPar_given_EANC,
7031 modelPar_given_EANS,
7041 modelPar_given_TAVC,
7051 modelPar_given_CCSO,
7057 modelPar_given_XIKF,
7059 modelPar_given_XRCX,
7061 modelPar_given_XRBX,
7063 modelPar_given_XRBP,
7065 modelPar_given_ISRR,
7067 modelPar_given_XISR,
7069 modelPar_given_DEAR,
7073 modelPar_given_VBBE,
7075 modelPar_given_NBBE,
7077 modelPar_given_IBBE,
7079 modelPar_given_TVBBE1,
7081 modelPar_given_TVBBE2,
7083 modelPar_given_TNBBE,
7085 modelPar_given_EBBE,
7087 modelPar_given_DTEMP,
7089 modelPar_given_VERS,
7091 modelPar_given_VREV,
7096 in.getDeviceOptions().gmin,
7097 staticContributions,
7098 dynamicContributions,
7104 dfdp[in.admsNodeID_c] += staticContributions[in.admsNodeID_c].dx(0);
7105 dqdp[in.admsNodeID_c] += dynamicContributions[in.admsNodeID_c].dx(0);
7106 Findices[in.admsNodeID_c] = in.li_c;
7107 Qindices[in.admsNodeID_c] = in.li_c;
7108 dfdp[in.admsNodeID_b] += staticContributions[in.admsNodeID_b].dx(0);
7109 dqdp[in.admsNodeID_b] += dynamicContributions[in.admsNodeID_b].dx(0);
7110 Findices[in.admsNodeID_b] = in.li_b;
7111 Qindices[in.admsNodeID_b] = in.li_b;
7112 dfdp[in.admsNodeID_e] += staticContributions[in.admsNodeID_e].dx(0);
7113 dqdp[in.admsNodeID_e] += dynamicContributions[in.admsNodeID_e].dx(0);
7114 Findices[in.admsNodeID_e] = in.li_e;
7115 Qindices[in.admsNodeID_e] = in.li_e;
7116 dfdp[in.admsNodeID_dt] += staticContributions[in.admsNodeID_dt].dx(0);
7117 dqdp[in.admsNodeID_dt] += dynamicContributions[in.admsNodeID_dt].dx(0);
7118 Findices[in.admsNodeID_dt] = in.li_dt;
7119 Qindices[in.admsNodeID_dt] = in.li_dt;
7120 dfdp[in.admsNodeID_cx] += staticContributions[in.admsNodeID_cx].dx(0);
7121 dqdp[in.admsNodeID_cx] += dynamicContributions[in.admsNodeID_cx].dx(0);
7122 Findices[in.admsNodeID_cx] = in.li_cx;
7123 Qindices[in.admsNodeID_cx] = in.li_cx;
7124 dfdp[in.admsNodeID_ci] += staticContributions[in.admsNodeID_ci].dx(0);
7125 dqdp[in.admsNodeID_ci] += dynamicContributions[in.admsNodeID_ci].dx(0);
7126 Findices[in.admsNodeID_ci] = in.li_ci;
7127 Qindices[in.admsNodeID_ci] = in.li_ci;
7128 dfdp[in.admsNodeID_bx] += staticContributions[in.admsNodeID_bx].dx(0);
7129 dqdp[in.admsNodeID_bx] += dynamicContributions[in.admsNodeID_bx].dx(0);
7130 Findices[in.admsNodeID_bx] = in.li_bx;
7131 Qindices[in.admsNodeID_bx] = in.li_bx;
7132 dfdp[in.admsNodeID_bi] += staticContributions[in.admsNodeID_bi].dx(0);
7133 dqdp[in.admsNodeID_bi] += dynamicContributions[in.admsNodeID_bi].dx(0);
7134 Findices[in.admsNodeID_bi] = in.li_bi;
7135 Qindices[in.admsNodeID_bi] = in.li_bi;
7136 dfdp[in.admsNodeID_ei] += staticContributions[in.admsNodeID_ei].dx(0);
7137 dqdp[in.admsNodeID_ei] += dynamicContributions[in.admsNodeID_ei].dx(0);
7138 Findices[in.admsNodeID_ei] = in.li_ei;
7139 Qindices[in.admsNodeID_ei] = in.li_ei;
7140 dfdp[in.admsNodeID_bp] += staticContributions[in.admsNodeID_bp].dx(0);
7141 dqdp[in.admsNodeID_bp] += dynamicContributions[in.admsNodeID_bp].dx(0);
7142 Findices[in.admsNodeID_bp] = in.li_bp;
7143 Qindices[in.admsNodeID_bp] = in.li_bp;
7170 void ModelSensitivity::operator()
7172 const ParameterBase &entity,
7173 const std::string &name,
7174 std::vector<double> & dfdp,
7175 std::vector<double> & dqdp,
7176 std::vector<double> & dbdp,
7177 std::vector<int> & Findices,
7178 std::vector<int> & Qindices,
7179 std::vector<int> & Bindices
7182 const ParameterBase * e1 = &entity;
7183 const Model & mod = *(
dynamic_cast<const Model *
> (e1));
7184 int sizeInstance = mod.instanceContainer.size();
7186 dfdp.resize((10+0)*sizeInstance);
7187 dqdp.resize((10+0)*sizeInstance);
7188 Findices.resize((10+0)*sizeInstance);
7189 Qindices.resize((10+0)*sizeInstance);
7191 std::vector <double> probeVars(15);
7192 std::vector <AdmsSensFadType> staticContributions(10+0);
7193 std::vector <AdmsSensFadType> dynamicContributions(10+0);
7200 unordered_map <std::string,AdmsSensFadType*,HashNoCase,EqualNoCase> modParamMap;
7204 bool modelPar_given_TNOM=mod.given(
"TNOM");
7205 modParamMap[
"TNOM"] = &modelPar_TNOM;
7207 bool modelPar_given_RCX=mod.given(
"RCX");
7208 modParamMap[
"RCX"] = &modelPar_RCX;
7210 bool modelPar_given_RCI=mod.given(
"RCI");
7211 modParamMap[
"RCI"] = &modelPar_RCI;
7213 bool modelPar_given_VO=mod.given(
"VO");
7214 modParamMap[
"VO"] = &modelPar_VO;
7216 bool modelPar_given_GAMM=mod.given(
"GAMM");
7217 modParamMap[
"GAMM"] = &modelPar_GAMM;
7219 bool modelPar_given_HRCF=mod.given(
"HRCF");
7220 modParamMap[
"HRCF"] = &modelPar_HRCF;
7222 bool modelPar_given_RBX=mod.given(
"RBX");
7223 modParamMap[
"RBX"] = &modelPar_RBX;
7225 bool modelPar_given_RBI=mod.given(
"RBI");
7226 modParamMap[
"RBI"] = &modelPar_RBI;
7228 bool modelPar_given_RE=mod.given(
"RE");
7229 modParamMap[
"RE"] = &modelPar_RE;
7231 bool modelPar_given_RS=mod.given(
"RS");
7232 modParamMap[
"RS"] = &modelPar_RS;
7234 bool modelPar_given_RBP=mod.given(
"RBP");
7235 modParamMap[
"RBP"] = &modelPar_RBP;
7237 bool modelPar_given_IS=mod.given(
"IS");
7238 modParamMap[
"IS"] = &modelPar_IS;
7240 bool modelPar_given_NF=mod.given(
"NF");
7241 modParamMap[
"NF"] = &modelPar_NF;
7243 bool modelPar_given_NR=mod.given(
"NR");
7244 modParamMap[
"NR"] = &modelPar_NR;
7246 bool modelPar_given_FC=mod.given(
"FC");
7247 modParamMap[
"FC"] = &modelPar_FC;
7249 bool modelPar_given_CBEO=mod.given(
"CBEO");
7250 modParamMap[
"CBEO"] = &modelPar_CBEO;
7252 bool modelPar_given_CJE=mod.given(
"CJE");
7253 modParamMap[
"CJE"] = &modelPar_CJE;
7255 bool modelPar_given_PE=mod.given(
"PE");
7256 modParamMap[
"PE"] = &modelPar_PE;
7258 bool modelPar_given_ME=mod.given(
"ME");
7259 modParamMap[
"ME"] = &modelPar_ME;
7261 bool modelPar_given_AJE=mod.given(
"AJE");
7262 modParamMap[
"AJE"] = &modelPar_AJE;
7264 bool modelPar_given_CBCO=mod.given(
"CBCO");
7265 modParamMap[
"CBCO"] = &modelPar_CBCO;
7267 bool modelPar_given_CJC=mod.given(
"CJC");
7268 modParamMap[
"CJC"] = &modelPar_CJC;
7270 bool modelPar_given_QCO=mod.given(
"QCO");
7271 modParamMap[
"QCO"] = &modelPar_QCO;
7273 bool modelPar_given_CJEP=mod.given(
"CJEP");
7274 modParamMap[
"CJEP"] = &modelPar_CJEP;
7276 bool modelPar_given_PC=mod.given(
"PC");
7277 modParamMap[
"PC"] = &modelPar_PC;
7279 bool modelPar_given_MC=mod.given(
"MC");
7280 modParamMap[
"MC"] = &modelPar_MC;
7282 bool modelPar_given_AJC=mod.given(
"AJC");
7283 modParamMap[
"AJC"] = &modelPar_AJC;
7285 bool modelPar_given_CJCP=mod.given(
"CJCP");
7286 modParamMap[
"CJCP"] = &modelPar_CJCP;
7288 bool modelPar_given_PS=mod.given(
"PS");
7289 modParamMap[
"PS"] = &modelPar_PS;
7291 bool modelPar_given_MS=mod.given(
"MS");
7292 modParamMap[
"MS"] = &modelPar_MS;
7294 bool modelPar_given_AJS=mod.given(
"AJS");
7295 modParamMap[
"AJS"] = &modelPar_AJS;
7297 bool modelPar_given_IBEI=mod.given(
"IBEI");
7298 modParamMap[
"IBEI"] = &modelPar_IBEI;
7300 bool modelPar_given_WBE=mod.given(
"WBE");
7301 modParamMap[
"WBE"] = &modelPar_WBE;
7303 bool modelPar_given_NEI=mod.given(
"NEI");
7304 modParamMap[
"NEI"] = &modelPar_NEI;
7306 bool modelPar_given_IBEN=mod.given(
"IBEN");
7307 modParamMap[
"IBEN"] = &modelPar_IBEN;
7309 bool modelPar_given_NEN=mod.given(
"NEN");
7310 modParamMap[
"NEN"] = &modelPar_NEN;
7312 bool modelPar_given_IBCI=mod.given(
"IBCI");
7313 modParamMap[
"IBCI"] = &modelPar_IBCI;
7315 bool modelPar_given_NCI=mod.given(
"NCI");
7316 modParamMap[
"NCI"] = &modelPar_NCI;
7318 bool modelPar_given_IBCN=mod.given(
"IBCN");
7319 modParamMap[
"IBCN"] = &modelPar_IBCN;
7321 bool modelPar_given_NCN=mod.given(
"NCN");
7322 modParamMap[
"NCN"] = &modelPar_NCN;
7324 bool modelPar_given_AVC1=mod.given(
"AVC1");
7325 modParamMap[
"AVC1"] = &modelPar_AVC1;
7327 bool modelPar_given_AVC2=mod.given(
"AVC2");
7328 modParamMap[
"AVC2"] = &modelPar_AVC2;
7330 bool modelPar_given_ISP=mod.given(
"ISP");
7331 modParamMap[
"ISP"] = &modelPar_ISP;
7333 bool modelPar_given_WSP=mod.given(
"WSP");
7334 modParamMap[
"WSP"] = &modelPar_WSP;
7336 bool modelPar_given_NFP=mod.given(
"NFP");
7337 modParamMap[
"NFP"] = &modelPar_NFP;
7339 bool modelPar_given_IBEIP=mod.given(
"IBEIP");
7340 modParamMap[
"IBEIP"] = &modelPar_IBEIP;
7342 bool modelPar_given_IBENP=mod.given(
"IBENP");
7343 modParamMap[
"IBENP"] = &modelPar_IBENP;
7345 bool modelPar_given_IBCIP=mod.given(
"IBCIP");
7346 modParamMap[
"IBCIP"] = &modelPar_IBCIP;
7348 bool modelPar_given_NCIP=mod.given(
"NCIP");
7349 modParamMap[
"NCIP"] = &modelPar_NCIP;
7351 bool modelPar_given_IBCNP=mod.given(
"IBCNP");
7352 modParamMap[
"IBCNP"] = &modelPar_IBCNP;
7354 bool modelPar_given_NCNP=mod.given(
"NCNP");
7355 modParamMap[
"NCNP"] = &modelPar_NCNP;
7357 bool modelPar_given_VEF=mod.given(
"VEF");
7358 modParamMap[
"VEF"] = &modelPar_VEF;
7360 bool modelPar_given_VER=mod.given(
"VER");
7361 modParamMap[
"VER"] = &modelPar_VER;
7363 bool modelPar_given_IKF=mod.given(
"IKF");
7364 modParamMap[
"IKF"] = &modelPar_IKF;
7366 bool modelPar_given_IKR=mod.given(
"IKR");
7367 modParamMap[
"IKR"] = &modelPar_IKR;
7369 bool modelPar_given_IKP=mod.given(
"IKP");
7370 modParamMap[
"IKP"] = &modelPar_IKP;
7372 bool modelPar_given_TF=mod.given(
"TF");
7373 modParamMap[
"TF"] = &modelPar_TF;
7375 bool modelPar_given_QTF=mod.given(
"QTF");
7376 modParamMap[
"QTF"] = &modelPar_QTF;
7378 bool modelPar_given_XTF=mod.given(
"XTF");
7379 modParamMap[
"XTF"] = &modelPar_XTF;
7381 bool modelPar_given_VTF=mod.given(
"VTF");
7382 modParamMap[
"VTF"] = &modelPar_VTF;
7384 bool modelPar_given_ITF=mod.given(
"ITF");
7385 modParamMap[
"ITF"] = &modelPar_ITF;
7387 bool modelPar_given_TR=mod.given(
"TR");
7388 modParamMap[
"TR"] = &modelPar_TR;
7390 bool modelPar_given_TD=mod.given(
"TD");
7391 modParamMap[
"TD"] = &modelPar_TD;
7393 bool modelPar_given_KFN=mod.given(
"KFN");
7394 modParamMap[
"KFN"] = &modelPar_KFN;
7396 bool modelPar_given_AFN=mod.given(
"AFN");
7397 modParamMap[
"AFN"] = &modelPar_AFN;
7399 bool modelPar_given_BFN=mod.given(
"BFN");
7400 modParamMap[
"BFN"] = &modelPar_BFN;
7402 bool modelPar_given_XRE=mod.given(
"XRE");
7403 modParamMap[
"XRE"] = &modelPar_XRE;
7405 bool modelPar_given_XRBI=mod.given(
"XRBI");
7406 modParamMap[
"XRBI"] = &modelPar_XRBI;
7408 bool modelPar_given_XRCI=mod.given(
"XRCI");
7409 modParamMap[
"XRCI"] = &modelPar_XRCI;
7411 bool modelPar_given_XRS=mod.given(
"XRS");
7412 modParamMap[
"XRS"] = &modelPar_XRS;
7414 bool modelPar_given_XVO=mod.given(
"XVO");
7415 modParamMap[
"XVO"] = &modelPar_XVO;
7417 bool modelPar_given_EA=mod.given(
"EA");
7418 modParamMap[
"EA"] = &modelPar_EA;
7420 bool modelPar_given_EAIE=mod.given(
"EAIE");
7421 modParamMap[
"EAIE"] = &modelPar_EAIE;
7423 bool modelPar_given_EAIC=mod.given(
"EAIC");
7424 modParamMap[
"EAIC"] = &modelPar_EAIC;
7426 bool modelPar_given_EAIS=mod.given(
"EAIS");
7427 modParamMap[
"EAIS"] = &modelPar_EAIS;
7429 bool modelPar_given_EANE=mod.given(
"EANE");
7430 modParamMap[
"EANE"] = &modelPar_EANE;
7432 bool modelPar_given_EANC=mod.given(
"EANC");
7433 modParamMap[
"EANC"] = &modelPar_EANC;
7435 bool modelPar_given_EANS=mod.given(
"EANS");
7436 modParamMap[
"EANS"] = &modelPar_EANS;
7438 bool modelPar_given_XIS=mod.given(
"XIS");
7439 modParamMap[
"XIS"] = &modelPar_XIS;
7441 bool modelPar_given_XII=mod.given(
"XII");
7442 modParamMap[
"XII"] = &modelPar_XII;
7444 bool modelPar_given_XIN=mod.given(
"XIN");
7445 modParamMap[
"XIN"] = &modelPar_XIN;
7447 bool modelPar_given_TNF=mod.given(
"TNF");
7448 modParamMap[
"TNF"] = &modelPar_TNF;
7450 bool modelPar_given_TAVC=mod.given(
"TAVC");
7451 modParamMap[
"TAVC"] = &modelPar_TAVC;
7453 bool modelPar_given_RTH=mod.given(
"RTH");
7454 modParamMap[
"RTH"] = &modelPar_RTH;
7456 bool modelPar_given_CTH=mod.given(
"CTH");
7457 modParamMap[
"CTH"] = &modelPar_CTH;
7459 bool modelPar_given_VRT=mod.given(
"VRT");
7460 modParamMap[
"VRT"] = &modelPar_VRT;
7462 bool modelPar_given_ART=mod.given(
"ART");
7463 modParamMap[
"ART"] = &modelPar_ART;
7465 bool modelPar_given_CCSO=mod.given(
"CCSO");
7466 modParamMap[
"CCSO"] = &modelPar_CCSO;
7468 bool modelPar_given_QBM=mod.given(
"QBM");
7469 modParamMap[
"QBM"] = &modelPar_QBM;
7471 bool modelPar_given_NKF=mod.given(
"NKF");
7472 modParamMap[
"NKF"] = &modelPar_NKF;
7474 bool modelPar_given_XIKF=mod.given(
"XIKF");
7475 modParamMap[
"XIKF"] = &modelPar_XIKF;
7477 bool modelPar_given_XRCX=mod.given(
"XRCX");
7478 modParamMap[
"XRCX"] = &modelPar_XRCX;
7480 bool modelPar_given_XRBX=mod.given(
"XRBX");
7481 modParamMap[
"XRBX"] = &modelPar_XRBX;
7483 bool modelPar_given_XRBP=mod.given(
"XRBP");
7484 modParamMap[
"XRBP"] = &modelPar_XRBP;
7486 bool modelPar_given_ISRR=mod.given(
"ISRR");
7487 modParamMap[
"ISRR"] = &modelPar_ISRR;
7489 bool modelPar_given_XISR=mod.given(
"XISR");
7490 modParamMap[
"XISR"] = &modelPar_XISR;
7492 bool modelPar_given_DEAR=mod.given(
"DEAR");
7493 modParamMap[
"DEAR"] = &modelPar_DEAR;
7495 bool modelPar_given_EAP=mod.given(
"EAP");
7496 modParamMap[
"EAP"] = &modelPar_EAP;
7498 bool modelPar_given_VBBE=mod.given(
"VBBE");
7499 modParamMap[
"VBBE"] = &modelPar_VBBE;
7501 bool modelPar_given_NBBE=mod.given(
"NBBE");
7502 modParamMap[
"NBBE"] = &modelPar_NBBE;
7504 bool modelPar_given_IBBE=mod.given(
"IBBE");
7505 modParamMap[
"IBBE"] = &modelPar_IBBE;
7507 bool modelPar_given_TVBBE1=mod.given(
"TVBBE1");
7508 modParamMap[
"TVBBE1"] = &modelPar_TVBBE1;
7510 bool modelPar_given_TVBBE2=mod.given(
"TVBBE2");
7511 modParamMap[
"TVBBE2"] = &modelPar_TVBBE2;
7513 bool modelPar_given_TNBBE=mod.given(
"TNBBE");
7514 modParamMap[
"TNBBE"] = &modelPar_TNBBE;
7516 bool modelPar_given_EBBE=mod.given(
"EBBE");
7517 modParamMap[
"EBBE"] = &modelPar_EBBE;
7519 bool modelPar_given_DTEMP=mod.given(
"DTEMP");
7520 modParamMap[
"DTEMP"] = &modelPar_DTEMP;
7522 bool modelPar_given_VERS=mod.given(
"VERS");
7523 modParamMap[
"VERS"] = &modelPar_VERS;
7525 bool modelPar_given_VREV=mod.given(
"VREV");
7526 modParamMap[
"VREV"] = &modelPar_VREV;
7533 int modelPar_dtype=mod.dtype;
7540 modParamMap[name]->diff(0,1);
7552 for (std::vector<Instance*>::const_iterator in_it=mod.instanceContainer.begin(); in_it != mod.instanceContainer.end(); ++in_it,++inst)
7555 Instance & in=*(*in_it);
7557 for (
int i=0; i < 10+0 ; ++i)
7559 staticContributions[i]=0;
7560 dynamicContributions[i]=0;
7568 bool instancePar_given_DTEMP=in.given(
"DTEMP");
7575 int instancePar_M=in.M;
7576 bool instancePar_given_M=in.given(
"M");
7586 if (!(in.given(
"DTEMP")))
7588 instancePar_DTEMP = modelPar_DTEMP;
7600 Linear::Vector * solVectorPtr = in.extData.nextSolVectorPtr;
7603 probeVars[in.admsProbeID_V_ci_ei] = (*solVectorPtr)[in.li_ci] - (*solVectorPtr)[in.li_ei];
7604 probeVars[in.admsProbeID_V_b_c] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_c];
7605 probeVars[in.admsProbeID_V_bp_cx] = (*solVectorPtr)[in.li_bp] - (*solVectorPtr)[in.li_cx];
7606 probeVars[in.admsProbeID_V_e_ei] = (*solVectorPtr)[in.li_e] - (*solVectorPtr)[in.li_ei];
7607 probeVars[in.admsProbeID_V_b_bx] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_bx];
7608 probeVars[in.admsProbeID_V_bx_bi] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bi];
7609 probeVars[in.admsProbeID_V_cx_ci] = (*solVectorPtr)[in.li_cx] - (*solVectorPtr)[in.li_ci];
7610 probeVars[in.admsProbeID_V_c_cx] = (*solVectorPtr)[in.li_c] - (*solVectorPtr)[in.li_cx];
7611 probeVars[in.admsProbeID_V_b_e] = (*solVectorPtr)[in.li_b] - (*solVectorPtr)[in.li_e];
7612 probeVars[in.admsProbeID_V_dt_GND] = (*solVectorPtr)[in.li_dt];
7613 probeVars[in.admsProbeID_V_bx_bp] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_bp];
7614 probeVars[in.admsProbeID_V_bi_cx] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_cx];
7615 probeVars[in.admsProbeID_V_bx_ei] = (*solVectorPtr)[in.li_bx] - (*solVectorPtr)[in.li_ei];
7616 probeVars[in.admsProbeID_V_bi_ci] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ci];
7617 probeVars[in.admsProbeID_V_bi_ei] = (*solVectorPtr)[in.li_bi] - (*solVectorPtr)[in.li_ei];
7620 probeVars[in.admsProbeID_V_b_e] *= modelPar_dtype;
7621 probeVars[in.admsProbeID_V_bx_bp] *= modelPar_dtype;
7622 probeVars[in.admsProbeID_V_bi_cx] *= modelPar_dtype;
7623 probeVars[in.admsProbeID_V_bx_ei] *= modelPar_dtype;
7624 probeVars[in.admsProbeID_V_bi_ci] *= modelPar_dtype;
7625 probeVars[in.admsProbeID_V_bi_ei] *= modelPar_dtype;
7631 evaluateModelEquations(
7634 in.admsProbeID_V_ci_ei,
7635 in.admsProbeID_V_b_c,
7636 in.admsProbeID_V_bp_cx,
7637 in.admsProbeID_V_e_ei,
7638 in.admsProbeID_V_b_bx,
7639 in.admsProbeID_V_bx_bi,
7640 in.admsProbeID_V_cx_ci,
7641 in.admsProbeID_V_c_cx,
7642 in.admsProbeID_V_b_e,
7643 in.admsProbeID_V_dt_GND,
7644 in.admsProbeID_V_bx_bp,
7645 in.admsProbeID_V_bi_cx,
7646 in.admsProbeID_V_bx_ei,
7647 in.admsProbeID_V_bi_ci,
7648 in.admsProbeID_V_bi_ei,
7664 instancePar_given_DTEMP,
7667 instancePar_given_M,
7671 modelPar_given_TNOM,
7679 modelPar_given_GAMM,
7681 modelPar_given_HRCF,
7701 modelPar_given_CBEO,
7711 modelPar_given_CBCO,
7717 modelPar_given_CJEP,
7725 modelPar_given_CJCP,
7733 modelPar_given_IBEI,
7739 modelPar_given_IBEN,
7743 modelPar_given_IBCI,
7747 modelPar_given_IBCN,
7751 modelPar_given_AVC1,
7753 modelPar_given_AVC2,
7761 modelPar_given_IBEIP,
7763 modelPar_given_IBENP,
7765 modelPar_given_IBCIP,
7767 modelPar_given_NCIP,
7769 modelPar_given_IBCNP,
7771 modelPar_given_NCNP,
7805 modelPar_given_XRBI,
7807 modelPar_given_XRCI,
7815 modelPar_given_EAIE,
7817 modelPar_given_EAIC,
7819 modelPar_given_EAIS,
7821 modelPar_given_EANE,
7823 modelPar_given_EANC,
7825 modelPar_given_EANS,
7835 modelPar_given_TAVC,
7845 modelPar_given_CCSO,
7851 modelPar_given_XIKF,
7853 modelPar_given_XRCX,
7855 modelPar_given_XRBX,
7857 modelPar_given_XRBP,
7859 modelPar_given_ISRR,
7861 modelPar_given_XISR,
7863 modelPar_given_DEAR,
7867 modelPar_given_VBBE,
7869 modelPar_given_NBBE,
7871 modelPar_given_IBBE,
7873 modelPar_given_TVBBE1,
7875 modelPar_given_TVBBE2,
7877 modelPar_given_TNBBE,
7879 modelPar_given_EBBE,
7881 modelPar_given_DTEMP,
7883 modelPar_given_VERS,
7885 modelPar_given_VREV,
7890 in.getDeviceOptions().gmin,
7891 staticContributions,
7892 dynamicContributions,
7898 dfdp[in.admsNodeID_c+inst*(10+0)] += staticContributions[in.admsNodeID_c].dx(0);
7899 dqdp[in.admsNodeID_c+inst*(10+0)] += dynamicContributions[in.admsNodeID_c].dx(0);
7900 Findices[in.admsNodeID_c+inst*(10+0)] = in.li_c;
7901 Qindices[in.admsNodeID_c+inst*(10+0)] = in.li_c;
7902 dfdp[in.admsNodeID_b+inst*(10+0)] += staticContributions[in.admsNodeID_b].dx(0);
7903 dqdp[in.admsNodeID_b+inst*(10+0)] += dynamicContributions[in.admsNodeID_b].dx(0);
7904 Findices[in.admsNodeID_b+inst*(10+0)] = in.li_b;
7905 Qindices[in.admsNodeID_b+inst*(10+0)] = in.li_b;
7906 dfdp[in.admsNodeID_e+inst*(10+0)] += staticContributions[in.admsNodeID_e].dx(0);
7907 dqdp[in.admsNodeID_e+inst*(10+0)] += dynamicContributions[in.admsNodeID_e].dx(0);
7908 Findices[in.admsNodeID_e+inst*(10+0)] = in.li_e;
7909 Qindices[in.admsNodeID_e+inst*(10+0)] = in.li_e;
7910 dfdp[in.admsNodeID_dt+inst*(10+0)] += staticContributions[in.admsNodeID_dt].dx(0);
7911 dqdp[in.admsNodeID_dt+inst*(10+0)] += dynamicContributions[in.admsNodeID_dt].dx(0);
7912 Findices[in.admsNodeID_dt+inst*(10+0)] = in.li_dt;
7913 Qindices[in.admsNodeID_dt+inst*(10+0)] = in.li_dt;
7914 dfdp[in.admsNodeID_cx+inst*(10+0)] += staticContributions[in.admsNodeID_cx].dx(0);
7915 dqdp[in.admsNodeID_cx+inst*(10+0)] += dynamicContributions[in.admsNodeID_cx].dx(0);
7916 Findices[in.admsNodeID_cx+inst*(10+0)] = in.li_cx;
7917 Qindices[in.admsNodeID_cx+inst*(10+0)] = in.li_cx;
7918 dfdp[in.admsNodeID_ci+inst*(10+0)] += staticContributions[in.admsNodeID_ci].dx(0);
7919 dqdp[in.admsNodeID_ci+inst*(10+0)] += dynamicContributions[in.admsNodeID_ci].dx(0);
7920 Findices[in.admsNodeID_ci+inst*(10+0)] = in.li_ci;
7921 Qindices[in.admsNodeID_ci+inst*(10+0)] = in.li_ci;
7922 dfdp[in.admsNodeID_bx+inst*(10+0)] += staticContributions[in.admsNodeID_bx].dx(0);
7923 dqdp[in.admsNodeID_bx+inst*(10+0)] += dynamicContributions[in.admsNodeID_bx].dx(0);
7924 Findices[in.admsNodeID_bx+inst*(10+0)] = in.li_bx;
7925 Qindices[in.admsNodeID_bx+inst*(10+0)] = in.li_bx;
7926 dfdp[in.admsNodeID_bi+inst*(10+0)] += staticContributions[in.admsNodeID_bi].dx(0);
7927 dqdp[in.admsNodeID_bi+inst*(10+0)] += dynamicContributions[in.admsNodeID_bi].dx(0);
7928 Findices[in.admsNodeID_bi+inst*(10+0)] = in.li_bi;
7929 Qindices[in.admsNodeID_bi+inst*(10+0)] = in.li_bi;
7930 dfdp[in.admsNodeID_ei+inst*(10+0)] += staticContributions[in.admsNodeID_ei].dx(0);
7931 dqdp[in.admsNodeID_ei+inst*(10+0)] += dynamicContributions[in.admsNodeID_ei].dx(0);
7932 Findices[in.admsNodeID_ei+inst*(10+0)] = in.li_ei;
7933 Qindices[in.admsNodeID_ei+inst*(10+0)] = in.li_ei;
7934 dfdp[in.admsNodeID_bp+inst*(10+0)] += staticContributions[in.admsNodeID_bp].dx(0);
7935 dqdp[in.admsNodeID_bp+inst*(10+0)] += dynamicContributions[in.admsNodeID_bp].dx(0);
7936 Findices[in.admsNodeID_bp+inst*(10+0)] = in.li_bp;
7937 Qindices[in.admsNodeID_bp+inst*(10+0)] = in.li_bp;
7942 #endif // Xyce_ADMS_SENSITIVITIES
const InstanceName & getName() const
double * f_ei_Equ_bi_Node_Ptr
double * q_b_Equ_c_Node_Ptr
double * f_b_Equ_b_Node_Ptr
double * f_ei_Equ_ci_Node_Ptr
double * f_bp_Equ_cx_Node_Ptr
double * q_ei_Equ_dt_Node_Ptr
double * q_bi_Equ_cx_Node_Ptr
double * q_bp_Equ_bx_Node_Ptr
static T adms_vt(const T temp)
bool updateDependentParameters()
std::vector< double > Jdxp_dynamic
int li_state_admsProbeID_V_b_e
void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)
double * f_cx_Equ_bp_Node_Ptr
double * q_cx_Equ_bi_Node_Ptr
double * f_bp_Equ_bi_Node_Ptr
const SolverState & solverState_
double * q_dt_Equ_b_Node_Ptr
double * f_dt_Equ_bi_Node_Ptr
static const int admsNodeID_b
Descriptor & addPar(const char *parName, T default_value, T U::*varPtr)
Adds the parameter description to the parameter map.
double * q_b_Equ_bx_Node_Ptr
double pnjlim_new(double vnew, double vold, double vt, double vcrit, int *icheck)
double * q_bi_Equ_ci_Node_Ptr
double * q_ei_Equ_ei_Node_Ptr
double * dFdxdVpVectorRawPtr
bool updatePrimaryState()
Linear::Vector * nextSolVectorPtr
double * q_cx_Equ_bp_Node_Ptr
bool processParams()
processParams
std::vector< int > devConMap
static const int admsProbeID_V_ci_ei
bool given(const std::string ¶meter_name) const
Linear::Vector * daeQVectorPtr
double * f_c_Equ_dt_Node_Ptr
double * q_ci_Equ_dt_Node_Ptr
Pure virtual class to augment a linear system.
double * q_bp_Equ_dt_Node_Ptr
double * q_bi_Equ_dt_Node_Ptr
double * f_bp_Equ_dt_Node_Ptr
double * q_bx_Equ_bp_Node_Ptr
double * f_b_Equ_c_Node_Ptr
static const int admsNodeID_cx
void addInternalNode(Util::SymbolTable &symbol_table, int index, const InstanceName &instance_name, const std::string &lead_name)
static const int admsProbeID_V_bp_cx
double * q_b_Equ_b_Node_Ptr
double * f_bp_Equ_bx_Node_Ptr
double * f_ci_Equ_bi_Node_Ptr
static const int admsProbeID_V_c_cx
double * f_dt_Equ_bp_Node_Ptr
double * q_dt_Equ_ci_Node_Ptr
double * f_cx_Equ_bi_Node_Ptr
bool updateSecondaryState()
double * f_ci_Equ_cx_Node_Ptr
double * f_e_Equ_ei_Node_Ptr
double * f_bi_Equ_ci_Node_Ptr
static const int admsProbeID_V_bi_ei
double * q_c_Equ_b_Node_Ptr
double * q_dt_Equ_bi_Node_Ptr
double * f_bi_Equ_ei_Node_Ptr
double * q_e_Equ_dt_Node_Ptr
Parameter is subject to being set to minimum junction capacitance.
double * f_dt_Equ_e_Node_Ptr
void jacStampMap_fixOrder(const JacobianStamp &stamp_parent, JacobianStamp &map2_parent, JacobianStamp &stamp, JacobianStamp &map2)
virtual void registerJacLIDs(const JacobianStamp &jacLIDVec)
double * f_e_Equ_b_Node_Ptr
Parameter is subject to being set to minimum lead resistance.
bool updateIntermediateVars()
double * q_bp_Equ_cx_Node_Ptr
std::vector< AdmsFadType > staticContributions
static void loadModelParameters(ParametricData< Model > &model_parameters)
double * f_ei_Equ_e_Node_Ptr
double * f_dt_Equ_cx_Node_Ptr
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
double * f_b_Equ_e_Node_Ptr
Instance(const Configuration &configuration, const InstanceBlock &instance_block, Model &model, const FactoryBlock &factory_block)
double * q_bx_Equ_bi_Node_Ptr
double * f_ei_Equ_bx_Node_Ptr
double * q_dt_Equ_dt_Node_Ptr
double * f_cx_Equ_dt_Node_Ptr
double * f_cx_Equ_ci_Node_Ptr
int li_state_admsProbeID_V_bx_ei
static const int admsNodeID_dt
double * q_bi_Equ_ei_Node_Ptr
double * q_bx_Equ_bx_Node_Ptr
std::vector< Param > params
Parameters from the line.
double * f_ci_Equ_ei_Node_Ptr
static const int admsProbeID_V_dt_GND
double * q_ei_Equ_e_Node_Ptr
std::vector< std::vector< int > > jacMap2
double * f_dt_Equ_b_Node_Ptr
void setParams(const std::vector< Param > ¶ms)
const std::string & getName() const
double * q_cx_Equ_cx_Node_Ptr
double * f_dt_Equ_c_Node_Ptr
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
double * f_bp_Equ_bp_Node_Ptr
int li_state_admsProbeID_V_bx_bp
double * f_dt_Equ_ei_Node_Ptr
double * f_dt_Equ_dt_Node_Ptr
Sacado::Fad::SFad< double, 1 > AdmsSensFadType
void registerJacLIDs(const JacobianStamp &jacLIDVec)
double * q_c_Equ_dt_Node_Ptr
const DeviceOptions & getDeviceOptions() const
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
double * f_bx_Equ_bx_Node_Ptr
Parameter is not to be documented.
static const int admsProbeID_V_b_bx
double * q_e_Equ_ei_Node_Ptr
const DeviceOptions & deviceOptions_
std::vector< std::vector< int > > JacobianStamp
double * f_bi_Equ_cx_Node_Ptr
double * q_b_Equ_e_Node_Ptr
double * q_bp_Equ_bi_Node_Ptr
static const int admsProbeID_V_bx_bp
Linear::Vector * nextStaVectorPtr
static Config< T > & addConfiguration()
Adds the device to the Xyce device configuration.
static const int admsProbeID_V_b_c
Model(const Configuration &configuration, const ModelBlock &model_block, const FactoryBlock &factory_block)
double * f_bp_Equ_ci_Node_Ptr
Linear::Matrix * dFdxMatrixPtr
double * q_dt_Equ_c_Node_Ptr
double * q_bx_Equ_ei_Node_Ptr
double * q_dt_Equ_ei_Node_Ptr
ScalarT limRTH(ScalarT orig, ScalarT old)
double * q_ci_Equ_bi_Node_Ptr
The Device class is an interface for device implementations.
double * q_bp_Equ_bp_Node_Ptr
double * f_cx_Equ_bx_Node_Ptr
double * q_bp_Equ_ci_Node_Ptr
double * q_ei_Equ_bx_Node_Ptr
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
int li_state_admsProbeID_V_bi_cx
double * q_dt_Equ_bp_Node_Ptr
std::vector< double > probeDiffs
static const int admsNodeID_bi
Sacado::Fad::SFad< double, 15 > AdmsFadType
static const int admsProbeID_V_bi_cx
static const int admsNodeID_e
int li_state_admsProbeID_V_dt_GND
double * q_ei_Equ_ci_Node_Ptr
static const int admsNodeID_bx
std::vector< AdmsFadType > probeVars
double * dQdxdVpVectorRawPtr
Class Configuration contains device configuration data.
double * f_ci_Equ_dt_Node_Ptr
double * f_b_Equ_dt_Node_Ptr
bool processInstanceParams()
processInstanceParams
int li_state_admsProbeID_V_bi_ei
const JacobianStamp & jacobianStamp() const
double * f_ei_Equ_dt_Node_Ptr
std::vector< double > Jdxp_static
double * f_cx_Equ_c_Node_Ptr
void jacStampMap(const JacobianStamp &stamp_parent, IdVector &map_parent, JacobianStamp &map2_parent, JacobianStamp &stamp, IdVector &map, JacobianStamp &map2, int from, int to, int original_size)
double * q_cx_Equ_ci_Node_Ptr
static const int admsNodeID_c
const SolverState & getSolverState() const
double * f_ci_Equ_ci_Node_Ptr
double * q_ci_Equ_ci_Node_Ptr
double * q_dt_Equ_e_Node_Ptr
double * f_bx_Equ_bp_Node_Ptr
double * f_bi_Equ_dt_Node_Ptr
std::vector< Instance * > instanceContainer
void registerStateLIDs(const LocalIdVector &staLIDVecRef)
static const int admsProbeID_V_cx_ci
virtual std::ostream & printOutInstances(std::ostream &os) const
double * q_b_Equ_dt_Node_Ptr
double * q_bx_Equ_b_Node_Ptr
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
Linear::Vector * currStaVectorPtr
static const int admsProbeID_V_e_ei
double * nextStaVectorRawPtr
double * q_bi_Equ_bi_Node_Ptr
Linear::Vector * daeFVectorPtr
double * f_e_Equ_e_Node_Ptr
double * f_dt_Equ_ci_Node_Ptr
double * q_ci_Equ_ei_Node_Ptr
double * f_bx_Equ_dt_Node_Ptr
const std::string & getType() const
double * q_bx_Equ_ci_Node_Ptr
double * q_cx_Equ_bx_Node_Ptr
double gmin
minimum allowed conductance.
double * f_c_Equ_cx_Node_Ptr
std::vector< AdmsFadType > dynamicContributions
double * q_cx_Equ_dt_Node_Ptr
double * q_bx_Equ_dt_Node_Ptr
static const int admsNodeID_ci
double * f_ei_Equ_ei_Node_Ptr
double * q_e_Equ_e_Node_Ptr
double * q_ei_Equ_bi_Node_Ptr
double * f_bi_Equ_bx_Node_Ptr
double * q_c_Equ_cx_Node_Ptr
static const int admsProbeID_V_bi_ci
const ExternData & extData
double * f_c_Equ_c_Node_Ptr
ModelBlock represents a .MODEL line from the netlist.
double * q_c_Equ_c_Node_Ptr
double * f_e_Equ_dt_Node_Ptr
double * q_dt_Equ_bx_Node_Ptr
Manages parameter binding for class C.
double * f_bx_Equ_b_Node_Ptr
InstanceBlock represent a device instance line from the netlist.
double * q_e_Equ_b_Node_Ptr
static const int admsProbeID_V_bx_ei
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_bi_Equ_bi_Node_Ptr
Util::Param temp
operating temperature of ckt.
std::vector< Param > params
static const int admsNodeID_bp
bool updateTemperature(const double &temp=-999.0)
double * f_b_Equ_bx_Node_Ptr
double * f_c_Equ_b_Node_Ptr
double * f_cx_Equ_cx_Node_Ptr
Linear::Matrix * dQdxMatrixPtr
double * f_dt_Equ_bx_Node_Ptr
double * f_bx_Equ_ci_Node_Ptr
double * f_bx_Equ_ei_Node_Ptr
double * q_bi_Equ_bx_Node_Ptr
int li_state_admsProbeID_V_bi_ci
double * q_ci_Equ_cx_Node_Ptr
double * q_cx_Equ_c_Node_Ptr
Linear::Vector * flagSolVectorPtr
static const int admsNodeID_ei
static const int admsProbeID_V_b_e
std::vector< int > jacMap
std::vector< std::vector< int > > jacStamp
void setModParams(const std::vector< Param > ¶ms)
double * f_bx_Equ_bi_Node_Ptr
double * q_dt_Equ_cx_Node_Ptr
static const int admsProbeID_V_bx_bi