49 #ifndef Xyce_N_DEV_ADMSHBT_X_h
50 #define Xyce_N_DEV_ADMSHBT_X_h
73 class InstanceSensitivity;
75 #ifdef Xyce_ADMS_SENSITIVITIES
88 InstanceSensitivity() :
91 virtual ~InstanceSensitivity() {};
93 virtual void operator()(
94 const ParameterBase &entity,
95 const std::string ¶m,
96 std::vector<double> & dfdp,
97 std::vector<double> & dqdp,
98 std::vector<double> & dbdp,
99 std::vector<int> & Findices,
100 std::vector<int> & Qindices,
101 std::vector<int> & Bindices
105 static InstanceSensitivity instSens;
117 class ModelSensitivity :
public baseSensitivity
121 baseSensitivity() {};
123 virtual ~ModelSensitivity() {};
125 virtual void operator()(
126 const ParameterBase &entity,
127 const std::string ¶m,
128 std::vector<double> & dfdp,
129 std::vector<double> & dqdp,
130 std::vector<double> & dbdp,
131 std::vector<int> & Findices,
132 std::vector<int> & Qindices,
133 std::vector<int> & Bindices
137 static ModelSensitivity modSens;
138 #endif // Xyce_ADMS_SENSITIVITIES
148 template<
typename Tin>
157 template<
typename Tin>
166 template<
typename Tin>
178 #ifdef Xyce_ADMS_SENSITIVITIES
183 void evaluateModelEquations(
184 std::vector <double> & probeVars,
186 const int admsProbeID_V_t_ti,
187 const int admsProbeID_V_b_c,
188 const int admsProbeID_V_c_GND,
189 const int admsProbeID_V_b_GND,
190 const int admsProbeID_V_cx_bii,
191 const int admsProbeID_V_exx_bii,
192 const int admsProbeID_V_ex_bii,
193 const int admsProbeID_V_bii_bi,
194 const int admsProbeID_I_c_ci,
195 const int admsProbeID_I_e_ei,
196 const int admsProbeID_I_b_bi,
197 const int admsProbeID_V_ti_GND,
198 const int admsProbeID_V_ci_ei,
199 const int admsProbeID_V_exx_ei,
200 const int admsProbeID_V_cx_ci,
201 const int admsProbeID_V_ex_ei,
202 const int admsProbeID_V_bii_ei,
203 const int admsProbeID_V_bii_ci,
204 const int admsProbeID_V_bi_ci,
206 const int admsNodeID_c,
207 const int admsNodeID_b,
208 const int admsNodeID_e,
209 const int admsNodeID_t,
210 const int admsNodeID_ei,
211 const int admsNodeID_bi,
212 const int admsNodeID_bii,
213 const int admsNodeID_ci,
214 const int admsNodeID_ti,
215 const int admsNodeID_ex,
216 const int admsNodeID_exx,
217 const int admsNodeID_cx,
218 const int admsBRA_ID_b_bi,
219 const int admsBRA_ID_e_ei,
220 const int admsBRA_ID_c_ci,
223 AdmsSensFadType & instancePar_Temp,
224 bool instancePar_given_Temp,
225 AdmsSensFadType & instancePar_L,
226 bool instancePar_given_L,
227 AdmsSensFadType & instancePar_W,
228 bool instancePar_given_W,
231 bool instancePar_given_N,
234 AdmsSensFadType & modelPar_Temp,
235 bool modelPar_given_Temp,
236 AdmsSensFadType & modelPar_Rth,
237 bool modelPar_given_Rth,
238 AdmsSensFadType & modelPar_Cth,
239 bool modelPar_given_Cth,
240 AdmsSensFadType & modelPar_L,
241 bool modelPar_given_L,
242 AdmsSensFadType & modelPar_W,
243 bool modelPar_given_W,
244 AdmsSensFadType & modelPar_Jsf,
245 bool modelPar_given_Jsf,
246 AdmsSensFadType & modelPar_nf,
247 bool modelPar_given_nf,
248 AdmsSensFadType & modelPar_Vg,
249 bool modelPar_given_Vg,
250 AdmsSensFadType & modelPar_Jse,
251 bool modelPar_given_Jse,
252 AdmsSensFadType & modelPar_ne,
253 bool modelPar_given_ne,
254 AdmsSensFadType & modelPar_Rbxx,
255 bool modelPar_given_Rbxx,
256 AdmsSensFadType & modelPar_Vgb,
257 bool modelPar_given_Vgb,
258 AdmsSensFadType & modelPar_Jsee,
259 bool modelPar_given_Jsee,
260 AdmsSensFadType & modelPar_nee,
261 bool modelPar_given_nee,
262 AdmsSensFadType & modelPar_Rbbxx,
263 bool modelPar_given_Rbbxx,
264 AdmsSensFadType & modelPar_Vgbb,
265 bool modelPar_given_Vgbb,
266 AdmsSensFadType & modelPar_Jsr,
267 bool modelPar_given_Jsr,
268 AdmsSensFadType & modelPar_nr,
269 bool modelPar_given_nr,
270 AdmsSensFadType & modelPar_Vgr,
271 bool modelPar_given_Vgr,
272 AdmsSensFadType & modelPar_XCjc,
273 bool modelPar_given_XCjc,
274 AdmsSensFadType & modelPar_Jsc,
275 bool modelPar_given_Jsc,
276 AdmsSensFadType & modelPar_nc,
277 bool modelPar_given_nc,
278 AdmsSensFadType & modelPar_Rcxx,
279 bool modelPar_given_Rcxx,
280 AdmsSensFadType & modelPar_Vgc,
281 bool modelPar_given_Vgc,
282 AdmsSensFadType & modelPar_Bf,
283 bool modelPar_given_Bf,
284 AdmsSensFadType & modelPar_kBeta,
285 bool modelPar_given_kBeta,
286 AdmsSensFadType & modelPar_Br,
287 bool modelPar_given_Br,
288 AdmsSensFadType & modelPar_VAF,
289 bool modelPar_given_VAF,
290 AdmsSensFadType & modelPar_VAR,
291 bool modelPar_given_VAR,
292 AdmsSensFadType & modelPar_IKF,
293 bool modelPar_given_IKF,
294 AdmsSensFadType & modelPar_IKR,
295 bool modelPar_given_IKR,
296 AdmsSensFadType & modelPar_Mc,
297 bool modelPar_given_Mc,
298 AdmsSensFadType & modelPar_BVceo,
299 bool modelPar_given_BVceo,
300 AdmsSensFadType & modelPar_kc,
301 bool modelPar_given_kc,
302 AdmsSensFadType & modelPar_BVebo,
303 bool modelPar_given_BVebo,
304 AdmsSensFadType & modelPar_Tr,
305 bool modelPar_given_Tr,
306 AdmsSensFadType & modelPar_Trx,
307 bool modelPar_given_Trx,
308 AdmsSensFadType & modelPar_Tf,
309 bool modelPar_given_Tf,
310 AdmsSensFadType & modelPar_Tft,
311 bool modelPar_given_Tft,
312 AdmsSensFadType & modelPar_Thcs,
313 bool modelPar_given_Thcs,
314 AdmsSensFadType & modelPar_Ahc,
315 bool modelPar_given_Ahc,
316 AdmsSensFadType & modelPar_Cje,
317 bool modelPar_given_Cje,
318 AdmsSensFadType & modelPar_mje,
319 bool modelPar_given_mje,
320 AdmsSensFadType & modelPar_Vje,
321 bool modelPar_given_Vje,
322 AdmsSensFadType & modelPar_Cjc,
323 bool modelPar_given_Cjc,
324 AdmsSensFadType & modelPar_mjc,
325 bool modelPar_given_mjc,
326 AdmsSensFadType & modelPar_Vjc,
327 bool modelPar_given_Vjc,
328 AdmsSensFadType & modelPar_kjc,
329 bool modelPar_given_kjc,
330 AdmsSensFadType & modelPar_Cmin,
331 bool modelPar_given_Cmin,
332 AdmsSensFadType & modelPar_J0,
333 bool modelPar_given_J0,
334 AdmsSensFadType & modelPar_XJ0,
335 bool modelPar_given_XJ0,
336 AdmsSensFadType & modelPar_Rci0,
337 bool modelPar_given_Rci0,
338 AdmsSensFadType & modelPar_Jk,
339 bool modelPar_given_Jk,
340 AdmsSensFadType & modelPar_RJk,
341 bool modelPar_given_RJk,
342 AdmsSensFadType & modelPar_Vces,
343 bool modelPar_given_Vces,
344 AdmsSensFadType & modelPar_Rc,
345 bool modelPar_given_Rc,
346 AdmsSensFadType & modelPar_Re,
347 bool modelPar_given_Re,
348 AdmsSensFadType & modelPar_Rb,
349 bool modelPar_given_Rb,
350 AdmsSensFadType & modelPar_Rb2,
351 bool modelPar_given_Rb2,
352 AdmsSensFadType & modelPar_Lc,
353 bool modelPar_given_Lc,
354 AdmsSensFadType & modelPar_Le,
355 bool modelPar_given_Le,
356 AdmsSensFadType & modelPar_Lb,
357 bool modelPar_given_Lb,
358 AdmsSensFadType & modelPar_Cq,
359 bool modelPar_given_Cq,
360 AdmsSensFadType & modelPar_Cpb,
361 bool modelPar_given_Cpb,
362 AdmsSensFadType & modelPar_Cpc,
363 bool modelPar_given_Cpc,
364 AdmsSensFadType & modelPar_Tnom,
365 bool modelPar_given_Tnom,
368 bool modelPar_given_Mode,
370 bool modelPar_given_Noise,
372 bool modelPar_given_Debug,
373 int modelPar_DebugPlus,
374 bool modelPar_given_DebugPlus,
376 bool modelPar_given_N,
379 double admsTemperature,
double adms_vt_nom,
double gmin, std::vector <AdmsSensFadType> & staticContributions, std::vector <AdmsSensFadType> & dynamicContributions,
const Instance & theInstance);
381 void evaluateInitialInstance(
384 AdmsSensFadType & instancePar_Temp,
385 bool instancePar_given_Temp,
386 AdmsSensFadType & instancePar_L,
387 bool instancePar_given_L,
388 AdmsSensFadType & instancePar_W,
389 bool instancePar_given_W,
392 bool instancePar_given_N,
395 AdmsSensFadType & modelPar_Temp,
396 bool modelPar_given_Temp,
397 AdmsSensFadType & modelPar_Rth,
398 bool modelPar_given_Rth,
399 AdmsSensFadType & modelPar_Cth,
400 bool modelPar_given_Cth,
401 AdmsSensFadType & modelPar_L,
402 bool modelPar_given_L,
403 AdmsSensFadType & modelPar_W,
404 bool modelPar_given_W,
405 AdmsSensFadType & modelPar_Jsf,
406 bool modelPar_given_Jsf,
407 AdmsSensFadType & modelPar_nf,
408 bool modelPar_given_nf,
409 AdmsSensFadType & modelPar_Vg,
410 bool modelPar_given_Vg,
411 AdmsSensFadType & modelPar_Jse,
412 bool modelPar_given_Jse,
413 AdmsSensFadType & modelPar_ne,
414 bool modelPar_given_ne,
415 AdmsSensFadType & modelPar_Rbxx,
416 bool modelPar_given_Rbxx,
417 AdmsSensFadType & modelPar_Vgb,
418 bool modelPar_given_Vgb,
419 AdmsSensFadType & modelPar_Jsee,
420 bool modelPar_given_Jsee,
421 AdmsSensFadType & modelPar_nee,
422 bool modelPar_given_nee,
423 AdmsSensFadType & modelPar_Rbbxx,
424 bool modelPar_given_Rbbxx,
425 AdmsSensFadType & modelPar_Vgbb,
426 bool modelPar_given_Vgbb,
427 AdmsSensFadType & modelPar_Jsr,
428 bool modelPar_given_Jsr,
429 AdmsSensFadType & modelPar_nr,
430 bool modelPar_given_nr,
431 AdmsSensFadType & modelPar_Vgr,
432 bool modelPar_given_Vgr,
433 AdmsSensFadType & modelPar_XCjc,
434 bool modelPar_given_XCjc,
435 AdmsSensFadType & modelPar_Jsc,
436 bool modelPar_given_Jsc,
437 AdmsSensFadType & modelPar_nc,
438 bool modelPar_given_nc,
439 AdmsSensFadType & modelPar_Rcxx,
440 bool modelPar_given_Rcxx,
441 AdmsSensFadType & modelPar_Vgc,
442 bool modelPar_given_Vgc,
443 AdmsSensFadType & modelPar_Bf,
444 bool modelPar_given_Bf,
445 AdmsSensFadType & modelPar_kBeta,
446 bool modelPar_given_kBeta,
447 AdmsSensFadType & modelPar_Br,
448 bool modelPar_given_Br,
449 AdmsSensFadType & modelPar_VAF,
450 bool modelPar_given_VAF,
451 AdmsSensFadType & modelPar_VAR,
452 bool modelPar_given_VAR,
453 AdmsSensFadType & modelPar_IKF,
454 bool modelPar_given_IKF,
455 AdmsSensFadType & modelPar_IKR,
456 bool modelPar_given_IKR,
457 AdmsSensFadType & modelPar_Mc,
458 bool modelPar_given_Mc,
459 AdmsSensFadType & modelPar_BVceo,
460 bool modelPar_given_BVceo,
461 AdmsSensFadType & modelPar_kc,
462 bool modelPar_given_kc,
463 AdmsSensFadType & modelPar_BVebo,
464 bool modelPar_given_BVebo,
465 AdmsSensFadType & modelPar_Tr,
466 bool modelPar_given_Tr,
467 AdmsSensFadType & modelPar_Trx,
468 bool modelPar_given_Trx,
469 AdmsSensFadType & modelPar_Tf,
470 bool modelPar_given_Tf,
471 AdmsSensFadType & modelPar_Tft,
472 bool modelPar_given_Tft,
473 AdmsSensFadType & modelPar_Thcs,
474 bool modelPar_given_Thcs,
475 AdmsSensFadType & modelPar_Ahc,
476 bool modelPar_given_Ahc,
477 AdmsSensFadType & modelPar_Cje,
478 bool modelPar_given_Cje,
479 AdmsSensFadType & modelPar_mje,
480 bool modelPar_given_mje,
481 AdmsSensFadType & modelPar_Vje,
482 bool modelPar_given_Vje,
483 AdmsSensFadType & modelPar_Cjc,
484 bool modelPar_given_Cjc,
485 AdmsSensFadType & modelPar_mjc,
486 bool modelPar_given_mjc,
487 AdmsSensFadType & modelPar_Vjc,
488 bool modelPar_given_Vjc,
489 AdmsSensFadType & modelPar_kjc,
490 bool modelPar_given_kjc,
491 AdmsSensFadType & modelPar_Cmin,
492 bool modelPar_given_Cmin,
493 AdmsSensFadType & modelPar_J0,
494 bool modelPar_given_J0,
495 AdmsSensFadType & modelPar_XJ0,
496 bool modelPar_given_XJ0,
497 AdmsSensFadType & modelPar_Rci0,
498 bool modelPar_given_Rci0,
499 AdmsSensFadType & modelPar_Jk,
500 bool modelPar_given_Jk,
501 AdmsSensFadType & modelPar_RJk,
502 bool modelPar_given_RJk,
503 AdmsSensFadType & modelPar_Vces,
504 bool modelPar_given_Vces,
505 AdmsSensFadType & modelPar_Rc,
506 bool modelPar_given_Rc,
507 AdmsSensFadType & modelPar_Re,
508 bool modelPar_given_Re,
509 AdmsSensFadType & modelPar_Rb,
510 bool modelPar_given_Rb,
511 AdmsSensFadType & modelPar_Rb2,
512 bool modelPar_given_Rb2,
513 AdmsSensFadType & modelPar_Lc,
514 bool modelPar_given_Lc,
515 AdmsSensFadType & modelPar_Le,
516 bool modelPar_given_Le,
517 AdmsSensFadType & modelPar_Lb,
518 bool modelPar_given_Lb,
519 AdmsSensFadType & modelPar_Cq,
520 bool modelPar_given_Cq,
521 AdmsSensFadType & modelPar_Cpb,
522 bool modelPar_given_Cpb,
523 AdmsSensFadType & modelPar_Cpc,
524 bool modelPar_given_Cpc,
525 AdmsSensFadType & modelPar_Tnom,
526 bool modelPar_given_Tnom,
529 bool modelPar_given_Mode,
531 bool modelPar_given_Noise,
533 bool modelPar_given_Debug,
534 int modelPar_DebugPlus,
535 bool modelPar_given_DebugPlus,
537 bool modelPar_given_N,
539 double admsTemperature);
541 void evaluateInitialModel(
544 AdmsSensFadType & modelPar_Temp,
545 bool modelPar_given_Temp,
546 AdmsSensFadType & modelPar_Rth,
547 bool modelPar_given_Rth,
548 AdmsSensFadType & modelPar_Cth,
549 bool modelPar_given_Cth,
550 AdmsSensFadType & modelPar_L,
551 bool modelPar_given_L,
552 AdmsSensFadType & modelPar_W,
553 bool modelPar_given_W,
554 AdmsSensFadType & modelPar_Jsf,
555 bool modelPar_given_Jsf,
556 AdmsSensFadType & modelPar_nf,
557 bool modelPar_given_nf,
558 AdmsSensFadType & modelPar_Vg,
559 bool modelPar_given_Vg,
560 AdmsSensFadType & modelPar_Jse,
561 bool modelPar_given_Jse,
562 AdmsSensFadType & modelPar_ne,
563 bool modelPar_given_ne,
564 AdmsSensFadType & modelPar_Rbxx,
565 bool modelPar_given_Rbxx,
566 AdmsSensFadType & modelPar_Vgb,
567 bool modelPar_given_Vgb,
568 AdmsSensFadType & modelPar_Jsee,
569 bool modelPar_given_Jsee,
570 AdmsSensFadType & modelPar_nee,
571 bool modelPar_given_nee,
572 AdmsSensFadType & modelPar_Rbbxx,
573 bool modelPar_given_Rbbxx,
574 AdmsSensFadType & modelPar_Vgbb,
575 bool modelPar_given_Vgbb,
576 AdmsSensFadType & modelPar_Jsr,
577 bool modelPar_given_Jsr,
578 AdmsSensFadType & modelPar_nr,
579 bool modelPar_given_nr,
580 AdmsSensFadType & modelPar_Vgr,
581 bool modelPar_given_Vgr,
582 AdmsSensFadType & modelPar_XCjc,
583 bool modelPar_given_XCjc,
584 AdmsSensFadType & modelPar_Jsc,
585 bool modelPar_given_Jsc,
586 AdmsSensFadType & modelPar_nc,
587 bool modelPar_given_nc,
588 AdmsSensFadType & modelPar_Rcxx,
589 bool modelPar_given_Rcxx,
590 AdmsSensFadType & modelPar_Vgc,
591 bool modelPar_given_Vgc,
592 AdmsSensFadType & modelPar_Bf,
593 bool modelPar_given_Bf,
594 AdmsSensFadType & modelPar_kBeta,
595 bool modelPar_given_kBeta,
596 AdmsSensFadType & modelPar_Br,
597 bool modelPar_given_Br,
598 AdmsSensFadType & modelPar_VAF,
599 bool modelPar_given_VAF,
600 AdmsSensFadType & modelPar_VAR,
601 bool modelPar_given_VAR,
602 AdmsSensFadType & modelPar_IKF,
603 bool modelPar_given_IKF,
604 AdmsSensFadType & modelPar_IKR,
605 bool modelPar_given_IKR,
606 AdmsSensFadType & modelPar_Mc,
607 bool modelPar_given_Mc,
608 AdmsSensFadType & modelPar_BVceo,
609 bool modelPar_given_BVceo,
610 AdmsSensFadType & modelPar_kc,
611 bool modelPar_given_kc,
612 AdmsSensFadType & modelPar_BVebo,
613 bool modelPar_given_BVebo,
614 AdmsSensFadType & modelPar_Tr,
615 bool modelPar_given_Tr,
616 AdmsSensFadType & modelPar_Trx,
617 bool modelPar_given_Trx,
618 AdmsSensFadType & modelPar_Tf,
619 bool modelPar_given_Tf,
620 AdmsSensFadType & modelPar_Tft,
621 bool modelPar_given_Tft,
622 AdmsSensFadType & modelPar_Thcs,
623 bool modelPar_given_Thcs,
624 AdmsSensFadType & modelPar_Ahc,
625 bool modelPar_given_Ahc,
626 AdmsSensFadType & modelPar_Cje,
627 bool modelPar_given_Cje,
628 AdmsSensFadType & modelPar_mje,
629 bool modelPar_given_mje,
630 AdmsSensFadType & modelPar_Vje,
631 bool modelPar_given_Vje,
632 AdmsSensFadType & modelPar_Cjc,
633 bool modelPar_given_Cjc,
634 AdmsSensFadType & modelPar_mjc,
635 bool modelPar_given_mjc,
636 AdmsSensFadType & modelPar_Vjc,
637 bool modelPar_given_Vjc,
638 AdmsSensFadType & modelPar_kjc,
639 bool modelPar_given_kjc,
640 AdmsSensFadType & modelPar_Cmin,
641 bool modelPar_given_Cmin,
642 AdmsSensFadType & modelPar_J0,
643 bool modelPar_given_J0,
644 AdmsSensFadType & modelPar_XJ0,
645 bool modelPar_given_XJ0,
646 AdmsSensFadType & modelPar_Rci0,
647 bool modelPar_given_Rci0,
648 AdmsSensFadType & modelPar_Jk,
649 bool modelPar_given_Jk,
650 AdmsSensFadType & modelPar_RJk,
651 bool modelPar_given_RJk,
652 AdmsSensFadType & modelPar_Vces,
653 bool modelPar_given_Vces,
654 AdmsSensFadType & modelPar_Rc,
655 bool modelPar_given_Rc,
656 AdmsSensFadType & modelPar_Re,
657 bool modelPar_given_Re,
658 AdmsSensFadType & modelPar_Rb,
659 bool modelPar_given_Rb,
660 AdmsSensFadType & modelPar_Rb2,
661 bool modelPar_given_Rb2,
662 AdmsSensFadType & modelPar_Lc,
663 bool modelPar_given_Lc,
664 AdmsSensFadType & modelPar_Le,
665 bool modelPar_given_Le,
666 AdmsSensFadType & modelPar_Lb,
667 bool modelPar_given_Lb,
668 AdmsSensFadType & modelPar_Cq,
669 bool modelPar_given_Cq,
670 AdmsSensFadType & modelPar_Cpb,
671 bool modelPar_given_Cpb,
672 AdmsSensFadType & modelPar_Cpc,
673 bool modelPar_given_Cpc,
674 AdmsSensFadType & modelPar_Tnom,
675 bool modelPar_given_Tnom,
678 bool modelPar_given_Mode,
680 bool modelPar_given_Noise,
682 bool modelPar_given_Debug,
683 int modelPar_DebugPlus,
684 bool modelPar_given_DebugPlus,
686 bool modelPar_given_N,
688 double admsTemperature);
690 #endif // Xyce_ADMS_SENSITIVITIES
696 template <
typename T>
702 return (exp(80.0)*(x-79.0));
710 template <
typename T>
713 return (floor(x.val()));
716 template <
typename T>
719 return (ceil(x.val()));
725 static const char *
name() {
return "FBH HBT_X v2.1";}
754 #ifdef Xyce_ADMS_SENSITIVITIES
755 friend class InstanceSensitivity;
756 friend class ModelSensitivity;
757 #endif // Xyce_ADMS_SENSITIVITIES
1047 namespace AnalogFunctions
1060 maxarg = log(maxexp);
1067 exp_soft = (((x+1.0)-maxarg)*maxexp);
1075 template<
typename RetScalarT,
typename Arg1ScalarT,
typename Arg2ScalarT> RetScalarT
Vt(Arg1ScalarT U, Arg2ScalarT Ud)
1088 exparg=((U-VF)/Vch);
1089 Vt = (U-(Vch*log((1.0+exp(exparg)))));
1093 exparg=((VF-U)/Vch);
1094 Vt = (VF-(Vch*log((1.0+exp(exparg)))));
1103 template<
typename RetScalarT,
typename Arg1ScalarT,
typename Arg2ScalarT,
typename Arg3ScalarT,
typename Arg4ScalarT,
typename Arg5ScalarT,
typename Arg6ScalarT,
typename Arg7ScalarT>
1104 RetScalarT
diode(Arg1ScalarT U, Arg2ScalarT Is, Arg3ScalarT Ug, Arg4ScalarT N, Arg5ScalarT AREA, Arg6ScalarT TJ, Arg7ScalarT TNOM)
1117 Arg6ScalarT TJM_arg1;
1121 VTH0 = adms_vt<RetScalarT>((20.0+273.15));
1122 VTHNOM = adms_vt<Arg7ScalarT>((TNOM+273.15));
1123 KDURCHQ = 0.861708692e-4;
1124 lnIs = log((Is*AREA));
1125 maxi = log(static_cast<double>(1e6));
1126 if (((maxi<(Ug/VTHNOM))&&(U<0.0)))
1128 Tmax = (((Ug*VTHNOM)/((Ug-(maxi*VTHNOM))*KDURCHQ))-273.15);
1129 TJM = Vt<Arg6ScalarT>(TJ,Tmax);
1135 TJM_arg1=(TJM+273.15);
1139 exparg1=((((U/(N*VTHJ))+(Ug/VTHNOM))-(Ug/VTHJ))+lnIs);
1140 exparg2=(((Ug/VTHNOM)-(Ug/VTHJ))+lnIs);
1145 exparg1=((U/(N*VTH0))+lnIs);
1146 diode = (
exp_soft(exparg1)-(Is*AREA));
1154 template<
typename ScalarT> ScalarT
MM(ScalarT VBCI, ScalarT VCBO, ScalarT
MC, ScalarT VCBLIN, ScalarT BF, ScalarT KC)
1162 if ((((KC>0.0)&&(MC>0.0))&&(VCBO>0.0)))
1165 FBD = (VCBLIN/VCBO);
1172 if ((VBCI>(-VCBLIN)))
1176 MM = (1.0/(1.0-(vcbi/(-VCBO))));
1180 MM = (1.0/(1.0-pow((vcbi/(-VCBO)),MC)));
1185 if ((VBCI<=(-VCBLIN)))
1189 MM = ((1.0/(1.0-FBD))-((((1.0/VCBO)*1.0)/pow((1.0-FBD),2.0))*(vcbi+(FBD*VCBO))));
1193 MM = ((1.0/(1.0-pow(FBD,MC)))-((((MC/VCBO)*pow(FBD,(MC-1.0)))/pow((1.0-pow(FBD,MC)),2.0))*(vcbi+(FBD*VCBO))));
1209 template<
typename RetScalarT,
typename Arg2ScalarT,
typename Arg3ScalarT,
typename Arg4ScalarT,
typename Arg5ScalarT> RetScalarT
charge(RetScalarT U, Arg2ScalarT C0, Arg3ScalarT Ud, Arg4ScalarT m, Arg5ScalarT Area)
1218 Vj = Vt<RetScalarT>(U,Ud);
1219 Vjo = Vt<RetScalarT>(0.0,Ud);
1223 charge = ((Area*C0)*((Ud*(log((1.0-(Vjo/Ud)))-log((1.0-(Vj/Ud)))))+((1.0/(1.0-(VF/Ud)))*((U-Vj)+Vjo))));
1227 charge = ((Area*C0)*((((Ud/(1.0-m))*(pow((1.0-(Vjo/Ud)),(1.0-m))-pow((1.0-(Vj/Ud)),(1.0-m))))+(pow((1.0-(VF/Ud)),(-m))*((U-Vj)+Vjo)))-(Ud*(1.0/(1.0-m)))));
1235 template<
typename ScalarT> ScalarT
Vceff(ScalarT U, ScalarT VCES)
1245 Vceff = (Vth0+(Vth0*log((1.0+exp((((U-VCES)/Vth0)-1.0))))));
1249 Vceff = ((U-VCES)+(Vth0*log((1.0+exp((1.0-((U-VCES)/Vth0)))))));
1257 template<
typename ScalarT> ScalarT
ICK(ScalarT U, ScalarT RCI0, ScalarT VLIM, ScalarT InvVPT, ScalarT VCES)
1266 x = ((VC-VLIM)*InvVPT);
1267 ICK = (((VC/RCI0)*(1.0/sqrt((1.0+((VC/VLIM)*(VC/VLIM))))))*(1.0+((x+sqrt(((x*x)+0.001)))/2.0)));
1289 #ifdef Xyce_ADMS_SENSITIVITIES
1290 friend class InstanceSensitivity;
1291 friend class ModelSensitivity;
1292 #endif // Xyce_ADMS_SENSITIVITIES
1413 #endif //Xyce_N_DEV_ADMSHBT_X_h
double * q_ci_Equ_bi_Node_Ptr
std::vector< AdmsFadType > probeVars
double * q_ex_Equ_bii_Node_Ptr
double * f_cx_Equ_bii_Node_Ptr
double * q_ti_Equ_ei_Node_Ptr
static const int admsNodeID_bii
double * q_bi_Equ_bii_Node_Ptr
double * q_t_Equ_ti_Node_Ptr
void registerLIDs(const LocalIdVector &intLIDVecRef, const LocalIdVector &extLIDVecRef)
static const int admsNodeID_ei
bool updatePrimaryState()
static const int admsNodeID_ex
double * f_bi_Equ_bi_Node_Ptr
double * f_c_Equ_b_Node_Ptr
double * q_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr
bool updateSecondaryState()
std::vector< double > Jdxp_static
double * q_cx_Equ_bii_Node_Ptr
double * f_ci_Equ_BRA_c_ci_Var_Ptr
static bool isLinearDevice()
double * q_cx_Equ_ti_Node_Ptr
double * q_exx_Equ_ei_Node_Ptr
static bool modelRequired()
double * f_BRA_b_bi_Equ_b_Node_Ptr
double * f_bi_Equ_BRA_b_bi_Var_Ptr
double * f_cx_Equ_ci_Node_Ptr
static const int admsNodeID_ci
static const int admsProbeID_I_c_ci
double * q_bii_Equ_bii_Node_Ptr
Pure virtual class to augment a linear system.
double * q_c_Equ_c_Node_Ptr
double * q_cx_Equ_cx_Node_Ptr
std::vector< AdmsFadType > dynamicContributions
double * f_cx_Equ_ti_Node_Ptr
double * f_t_Equ_ti_Node_Ptr
static const int admsProbeID_V_bii_bi
double * q_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr
double * f_ei_Equ_exx_Node_Ptr
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
Model & operator=(const Model &)
double * f_bii_Equ_exx_Node_Ptr
static const int admsProbeID_V_ci_ei
double * f_c_Equ_c_Node_Ptr
double * q_ti_Equ_ti_Node_Ptr
static const int admsProbeID_V_bii_ei
double * f_b_Equ_BRA_b_bi_Var_Ptr
double * f_ti_Equ_bi_Node_Ptr
void addInstance(Instance *instance)
RetScalarT Vt(Arg1ScalarT U, Arg2ScalarT Ud)
double * f_b_Equ_b_Node_Ptr
static std::vector< std::vector< int > > jacStamp
double ADMSceil(const T &x)
static const int admsProbeID_V_b_GND
double * q_exx_Equ_bii_Node_Ptr
std::vector< AdmsFadType > staticContributions
static const int admsProbeID_V_ex_ei
double * f_e_Equ_BRA_e_ei_Var_Ptr
double * q_ei_Equ_ei_Node_Ptr
double * f_b_Equ_c_Node_Ptr
bool updateIntermediateVars()
RetScalarT charge(RetScalarT U, Arg2ScalarT C0, Arg3ScalarT Ud, Arg4ScalarT m, Arg5ScalarT Area)
double * f_ei_Equ_ei_Node_Ptr
RetScalarT diode(Arg1ScalarT U, Arg2ScalarT Is, Arg3ScalarT Ug, Arg4ScalarT N, Arg5ScalarT AREA, Arg6ScalarT TJ, Arg7ScalarT TNOM)
static const int admsProbeID_V_t_ti
double * q_ci_Equ_bii_Node_Ptr
bool updateTemperature(const double &temp=-999.0)
double * q_ci_Equ_ti_Node_Ptr
double * f_BRA_e_ei_Equ_e_Node_Ptr
double * f_exx_Equ_bii_Node_Ptr
double * f_ex_Equ_ei_Node_Ptr
double * q_bi_Equ_ti_Node_Ptr
double * f_exx_Equ_ei_Node_Ptr
double * f_bii_Equ_ti_Node_Ptr
double * q_cx_Equ_ci_Node_Ptr
double * q_ei_Equ_ci_Node_Ptr
void registerJacLIDs(const JacobianStamp &jacLIDVec)
static const int admsProbeID_V_bii_ci
static const int admsNodeID_bi
double * q_ci_Equ_cx_Node_Ptr
ScalarT exp_soft(ScalarT x)
Sacado::Fad::SFad< double, 1 > AdmsSensFadType
double * q_bii_Equ_cx_Node_Ptr
double * f_ti_Equ_t_Node_Ptr
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
static const char * name()
double * q_ex_Equ_ei_Node_Ptr
static const int admsProbeID_V_cx_ci
static const int admsProbeID_I_e_ei
static const int admsProbeID_V_exx_ei
static const int admsProbeID_V_cx_bii
double * q_e_Equ_BRA_e_ei_Var_Ptr
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
double * q_bii_Equ_exx_Node_Ptr
double * q_bi_Equ_BRA_b_bi_Var_Ptr
double * f_ci_Equ_ci_Node_Ptr
double * f_bii_Equ_ex_Node_Ptr
double * q_c_Equ_b_Node_Ptr
double * q_ti_Equ_t_Node_Ptr
double * f_ei_Equ_ex_Node_Ptr
double * f_BRA_b_bi_Equ_BRA_b_bi_Var_Ptr
double * q_bi_Equ_ci_Node_Ptr
double * q_ci_Equ_ei_Node_Ptr
double * f_ci_Equ_ei_Node_Ptr
double * f_ex_Equ_ex_Node_Ptr
double * f_bi_Equ_ti_Node_Ptr
std::vector< std::vector< int > > JacobianStamp
double * f_ci_Equ_ti_Node_Ptr
double * q_BRA_e_ei_Equ_ei_Node_Ptr
static std::vector< std::vector< int > > jacMap2
static const int admsNodeID_e
static const int admsProbeID_V_c_GND
std::vector< Instance * > instanceContainer
bool processParams()
processParams
double * q_bi_Equ_bi_Node_Ptr
bool processInstanceParams()
processInstanceParams
static const int admsBRA_ID_c_ci
static const int admsNodeID_c
double * q_ei_Equ_ex_Node_Ptr
virtual std::ostream & printOutInstances(std::ostream &os) const
static const int admsNodeID_t
ScalarT Vceff(ScalarT U, ScalarT VCES)
Sacado::Fad::SFad< double, 19 > AdmsFadType
static const char * deviceTypeName()
double * q_BRA_e_ei_Equ_e_Node_Ptr
double * f_ti_Equ_ci_Node_Ptr
static const int admsNodeID_b
double * q_ti_Equ_ci_Node_Ptr
double * q_exx_Equ_ti_Node_Ptr
The Device class is an interface for device implementations.
double * f_BRA_c_ci_Equ_c_Node_Ptr
double * q_exx_Equ_exx_Node_Ptr
double * f_BRA_e_ei_Equ_ei_Node_Ptr
ScalarT MM(ScalarT VBCI, ScalarT VCBO, ScalarT MC, ScalarT VCBLIN, ScalarT BF, ScalarT KC)
ScalarT ICK(ScalarT U, ScalarT RCI0, ScalarT VLIM, ScalarT InvVPT, ScalarT VCES)
int li_state_admsProbeID_V_bii_ei
double * f_ex_Equ_bii_Node_Ptr
double * f_ti_Equ_bii_Node_Ptr
static const int admsProbeID_I_b_bi
double * f_BRA_c_ci_Equ_ci_Node_Ptr
static const int admsProbeID_V_b_c
double * q_ex_Equ_ti_Node_Ptr
double * f_t_Equ_t_Node_Ptr
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
static const int admsBRA_ID_b_bi
Class Configuration contains device configuration data.
static const int admsNodeID_cx
double * q_bii_Equ_bi_Node_Ptr
double * q_bii_Equ_ti_Node_Ptr
double * f_bii_Equ_bii_Node_Ptr
int li_state_admsProbeID_V_bii_ci
double * f_ei_Equ_BRA_e_ei_Var_Ptr
double * q_bii_Equ_ci_Node_Ptr
static Tin adms_ternary_op(const bool cond, const Tin &ifTrue, const Tin &ifFalse)
double * f_ci_Equ_bi_Node_Ptr
double * f_c_Equ_BRA_c_ci_Var_Ptr
double * q_b_Equ_c_Node_Ptr
double * f_bii_Equ_cx_Node_Ptr
static const int admsNodeID_exx
const JacobianStamp & jacobianStamp() const
double * f_exx_Equ_ti_Node_Ptr
double * q_b_Equ_b_Node_Ptr
double * q_b_Equ_BRA_b_bi_Var_Ptr
double * q_ti_Equ_bi_Node_Ptr
static const int admsProbeID_V_bi_ci
double * q_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
Model(const Configuration &configuration, const ModelBlock &model_block, const FactoryBlock &factory_block)
static const int admsProbeID_V_ex_bii
double * f_cx_Equ_cx_Node_Ptr
double * f_ei_Equ_bii_Node_Ptr
double * q_ei_Equ_ti_Node_Ptr
double * f_ti_Equ_ti_Node_Ptr
double * q_BRA_b_bi_Equ_bi_Node_Ptr
static const int admsNodeID_ti
double * f_ex_Equ_ti_Node_Ptr
static const int admsProbeID_V_exx_bii
double * f_BRA_b_bi_Equ_bi_Node_Ptr
double * f_bii_Equ_bi_Node_Ptr
double * q_BRA_b_bi_Equ_b_Node_Ptr
std::vector< double > Jdxp_dynamic
static void loadModelParameters(ParametricData< Model > &model_parameters)
double * q_t_Equ_t_Node_Ptr
double * q_ei_Equ_exx_Node_Ptr
static const int admsBRA_ID_e_ei
double * q_BRA_c_ci_Equ_c_Node_Ptr
double ADMSfloor(const T &x)
std::vector< double > probeDiffs
double * f_ei_Equ_ci_Node_Ptr
double * q_ei_Equ_BRA_e_ei_Var_Ptr
static T adms_vt(const T temp)
double * q_bii_Equ_ex_Node_Ptr
double * f_ti_Equ_ei_Node_Ptr
Instance & operator=(const Instance &)
Base sensitivity functor.
double * f_bi_Equ_bii_Node_Ptr
std::vector< Instance * > InstanceVector
double * f_exx_Equ_exx_Node_Ptr
ModelBlock represents a .MODEL line from the netlist.
double * f_ci_Equ_cx_Node_Ptr
The DeviceTraits template describes the configuration of a device.
static std::vector< int > jacMap
Manages parameter binding for class C.
double * q_ci_Equ_BRA_c_ci_Var_Ptr
double * q_BRA_c_ci_Equ_ci_Node_Ptr
double * f_ci_Equ_bii_Node_Ptr
static const int admsProbeID_V_ti_GND
InstanceBlock represent a device instance line from the netlist.
Instance(const Configuration &configuration, const InstanceBlock &instance_block, Model &model, const FactoryBlock &factory_block)
int li_state_admsProbeID_V_bi_ci
double * f_bii_Equ_ei_Node_Ptr
double * f_BRA_e_ei_Equ_BRA_e_ei_Var_Ptr
double * f_BRA_c_ci_Equ_BRA_c_ci_Var_Ptr
double * q_c_Equ_BRA_c_ci_Var_Ptr
double * q_ei_Equ_bii_Node_Ptr
double * f_bi_Equ_ci_Node_Ptr
void registerStateLIDs(const LocalIdVector &staLIDVecRef)
double * q_bii_Equ_ei_Node_Ptr
double * q_ci_Equ_ci_Node_Ptr
double * q_ex_Equ_ex_Node_Ptr
double * f_bii_Equ_ci_Node_Ptr
double * q_ti_Equ_bii_Node_Ptr
double * f_ei_Equ_ti_Node_Ptr