16 #include "component.h"
47 #define NP(node) real (getV (node))
48 #define BP(pnode,nnode) (NP(pnode) - NP(nnode))
49 #define _load_static_residual2(pnode,nnode,current)\
50 _rhs[pnode] -= current;\
51 _rhs[nnode] += current;
52 #define _load_static_augmented_residual2(pnode,nnode,current)\
53 _rhs[pnode] -= current;\
54 _rhs[nnode] += current;
55 #define _load_static_residual1(node,current)\
56 _rhs[node] -= current;
57 #define _load_static_augmented_residual1(node,current)\
58 _rhs[node] -= current;
59 #define _load_static_jacobian4(pnode,nnode,vpnode,vnnode,conductance)\
60 _jstat[pnode][vpnode] += conductance;\
61 _jstat[nnode][vnnode] += conductance;\
62 _jstat[pnode][vnnode] -= conductance;\
63 _jstat[nnode][vpnode] -= conductance;\
65 _ghs[pnode] += conductance * BP(vpnode,vnnode);\
66 _ghs[nnode] -= conductance * BP(vpnode,vnnode);\
68 _rhs[pnode] += conductance * BP(vpnode,vnnode);\
69 _rhs[nnode] -= conductance * BP(vpnode,vnnode);\
71 #define _load_static_jacobian2p(node,vpnode,vnnode,conductance)\
72 _jstat[node][vpnode] += conductance;\
73 _jstat[node][vnnode] -= conductance;\
75 _ghs[node] += conductance * BP(vpnode,vnnode);\
77 _rhs[node] += conductance * BP(vpnode,vnnode);\
79 #define _load_static_jacobian2s(pnode,nnode,node,conductance)\
80 _jstat[pnode][node] += conductance;\
81 _jstat[nnode][node] -= conductance;\
83 _ghs[pnode] += conductance * NP(node);\
84 _ghs[nnode] -= conductance * NP(node);\
86 _rhs[pnode] += conductance * NP(node);\
87 _rhs[nnode] -= conductance * NP(node);\
89 #define _load_static_jacobian1(node,vnode,conductance)\
90 _jstat[node][vnode] += conductance;\
92 _ghs[node] += conductance * NP(vnode);\
94 _rhs[node] += conductance * NP(vnode);\
96 #define _load_dynamic_residual2(pnode,nnode,charge)\
97 if (doTR) _charges[pnode][nnode] += charge;\
99 _qhs[pnode] -= charge;\
100 _qhs[nnode] += charge;\
102 #define _load_dynamic_residual1(node,charge)\
103 if (doTR) _charges[node][node] += charge;\
105 _qhs[node] -= charge;\
107 #define _load_dynamic_jacobian4(pnode,nnode,vpnode,vnnode,capacitance)\
109 _jdyna[pnode][vpnode] += capacitance;\
110 _jdyna[nnode][vnnode] += capacitance;\
111 _jdyna[pnode][vnnode] -= capacitance;\
112 _jdyna[nnode][vpnode] -= capacitance;\
115 _caps[pnode][nnode][vpnode][vnnode] += capacitance;\
118 _chs[pnode] += capacitance * BP(vpnode,vnnode);\
119 _chs[nnode] -= capacitance * BP(vpnode,vnnode);\
121 #define _load_dynamic_jacobian2s(pnode,nnode,vnode,capacitance)\
123 _jdyna[pnode][vnode] += capacitance;\
124 _jdyna[nnode][vnode] -= capacitance;\
127 _caps[pnode][nnode][vnode][vnode] += capacitance;\
130 _chs[pnode] += capacitance * NP(vnode);\
131 _chs[nnode] -= capacitance * NP(vnode);\
133 #define _load_dynamic_jacobian2p(node,vpnode,vnnode,capacitance)\
135 _jdyna[node][vpnode] += capacitance;\
136 _jdyna[node][vnnode] -= capacitance;\
139 _caps[node][node][vpnode][vnnode] += capacitance;\
142 _chs[node] += capacitance * BP(vpnode,vnnode);\
144 #define _load_dynamic_jacobian1(node,vnode,capacitance)\
146 _jdyna[node][vnode] += capacitance;\
149 _caps[node][node][vnode][vnode] += capacitance;\
152 _chs[node] += capacitance * NP(vnode);\
155 #define _save_whitenoise1(n1,pwr,type)\
156 _white_pwr[n1][n1] += pwr;
157 #define _save_whitenoise2(n1,n2,pwr,type)\
158 _white_pwr[n1][n2] += pwr;
159 #define _save_flickernoise1(n1,pwr,exp,type)\
160 _flicker_pwr[n1][n1] += pwr;\
161 _flicker_exp[n1][n1] += exp;
162 #define _save_flickernoise2(n1,n2,pwr,exp,type)\
163 _flicker_pwr[n1][n2] += pwr;\
164 _flicker_exp[n1][n2] += exp;
165 #define _load_whitenoise2(n1,n2,pwr)\
166 cy (n1,n2) -= pwr/kB/T0; cy (n2,n1) -= pwr/kB/T0;\
167 cy (n1,n1) += pwr/kB/T0; cy (n2,n2) += pwr/kB/T0;
168 #define _load_whitenoise1(n1,pwr)\
169 cy (n1,n1) += pwr/kB/T0;
170 #define _load_flickernoise2(n1,n2,pwr,exp)\
171 cy (n1,n2) -= pwr*pow(_freq,-exp)/kB/T0;\
172 cy (n2,n1) -= pwr*pow(_freq,-exp)/kB/T0;\
173 cy (n1,n1) += pwr*pow(_freq,-exp)/kB/T0;\
174 cy (n2,n2) += pwr*pow(_freq,-exp)/kB/T0;
175 #define _load_flickernoise1(n1,pwr,exp)\
176 cy (n1,n1) += pwr*pow(_freq,-exp)/kB/T0;
179 #define m00_hypot(v00,x,y) v00 = xhypot(x,y);
180 #define m10_hypot(v10,v00,x,y) v10 = (x)/(v00);
181 #define m11_hypot(v11,v00,x,y) v11 = (y)/(v00);
182 #define m00_max(v00,x,y) v00 = ((x)>(y))?(x):(y);
183 #define m10_max(v10,v00,x,y) v10 = ((x)>(y))?1.0:0.0;
184 #define m11_max(v11,v00,x,y) v11 = ((x)>(y))?0.0:1.0;
185 #define m00_min(v00,x,y) v00 = ((x)<(y))?(x):(y);
186 #define m10_min(v10,v00,x,y) v10 = ((x)<(y))?1.0:0.0;
187 #define m11_min(v11,v00,x,y) v11 = ((x)<(y))?0.0:1.0;
188 #define m00_pow(v00,x,y) v00 = pow(x,y);
189 #define m10_pow(v10,v00,x,y) v10 = (x==0.0)?0.0:(v00)*(y)/(x);
190 #define m11_pow(v11,v00,x,y) v11 = (x==0.0)?0.0:(log(x)*(v00));
192 #define m00_div(v00,v10,x,y) double v10=1/(y); double v00=(x)*v10;
193 #define m10_div(v10,v00,vv,x,y)
194 #define m11_div(v11,v00,vv,x,y) double v11 = -v00*vv;
196 #define m00_mult(v00,v10,v11,x,y) double v10=(x); double v11=(y); double v00=v10*v11;
197 #define m00_add(v00,x,y) double v00=(x)+(y);
199 #define m00_cos(v00,x) v00 = cos(x);
200 #define m10_cos(v10,v00,x) v10 = (-sin(x));
201 #define m00_sin(v00,x) v00 = sin(x);
202 #define m10_sin(v10,v00,x) v10 = (cos(x));
203 #define m00_tan(v00,x) v00 = tan(x);
204 #define m10_tan(v10,v00,x) v10 = (1.0/cos(x)/cos(x));
205 #define m00_cosh(v00,x) v00 = cosh(x);
206 #define m10_cosh(v10,v00,x) v10 = (sinh(x));
207 #define m00_sinh(v00,x) v00 = sinh(x);
208 #define m10_sinh(v10,v00,x) v10 = (cosh(x));
209 #define m00_tanh(v00,x) v00 = tanh(x);
210 #define m10_tanh(v10,v00,x) v10 = (1.0/cosh(x)/cosh(x));
211 #define m00_acos(v00,x) v00 = acos(x);
212 #define m10_acos(v10,v00,x) v10 = (-1.0/sqrt(1-x*x));
213 #define m00_asin(v00,x) v00 = asin(x);
214 #define m10_asin(v10,v00,x) v10 = (+1.0/sqrt(1-x*x));
215 #define m00_atan(v00,x) v00 = atan(x);
216 #define m10_atan(v10,v00,x) v10 = (+1.0/(1+x*x));
217 #define m00_atanh(v00,x) v00 = atanh(x);
218 #define m10_atanh(v10,v00,x) v10 = (+1.0/(1-x*x));
219 #define m00_logE(v00,x) v00 = log(x);
220 #define m10_logE(v10,v00,x) v10 = (1.0/x);
221 #define m00_log10(v00,x) v00 = log10(x);
222 #define m10_log10(v10,v00,x) v10 = (1.0/x/M_LN10);
223 #define m00_sqrt(v00,x) v00 = sqrt(x);
224 #define m10_sqrt(v10,v00,x) v10 = (0.5/v00);
225 #define m00_fabs(v00,x) v00 = fabs(x);
226 #define m10_fabs(v10,v00,x) v10 = (((x)>=0)?(+1.0):(-1.0));
228 #define m00_exp(v00,x) v00 = exp(x);
229 #define m10_exp(v10,v00,x) v10 = v00;
231 #define m00_abs(v00) ((v00)<(0)?(-(v00)):(v00))
232 #define m00_floor(v00,x) v00 = floor(x);
233 #define m00_limexp(v00,x) v00 = ((x)<80.0?exp(x):exp(80.0)*(x-79.0));
234 #define m10_limexp(v10,v00,x) v10 = ((x)<80.0?(v00):exp(80.0));
236 #define m20_logE(v00) (-1.0/v00/v00)
237 #define m20_exp(v00) exp(v00)
238 #define m20_limexp(v00) ((v00)<80.0?exp(v00):0.0)
239 #define m20_sqrt(v00) (-0.25/(v00)/sqrt(v00))
240 #define m20_fabs(v00) 0.0
241 #define m20_pow(x,y) ((y)*((y)-1.0)*pow(x,y)/(x)/(x))
242 #define m00_vt(x) (kBoverQ*(x))
243 #define m10_vt(x) (kBoverQ)
246 #define _modelname "HBT_X"
247 #define _instancename getName()
248 #define _circuit_temp (getPropertyDouble("Temp")+273.15)
249 #define _param_given(p) (isPropertyGiven(p)?1:0)
253 #define _vt_nom (kBoverQ*_circuit_temp)
255 using namespace device;
264 void HBT_X::initModel (
void)
290 initializeInstance ();
311 void HBT_X::initVerilog (
void)
314 _white_pwr[
nii][
nii] = 0.0;
315 _white_pwr[
cx][
bii] = 0.0;
316 _white_pwr[
exx][
bii] = 0.0;
317 _white_pwr[
ex][
bii] = 0.0;
318 _white_pwr[
c][
ci] = 0.0;
319 _white_pwr[
e][
ei] = 0.0;
320 _white_pwr[
b][
bi] = 0.0;
321 _white_pwr[
bii][
bi] = 0.0;
322 _white_pwr[
ni][
ni] = 0.0;
323 _white_pwr[
bii][
ei] = 0.0;
324 _flicker_pwr[
niv][
niv] = 0.0;
325 _flicker_exp[
niv][
niv] = 0.0;
332 for (i1 = 0; i1 < 19; i1++) {
333 for (i2 = 0; i2 < 19; i2++) {
334 _charges[i1][i2] = 0.0;
338 for (i1 = 0; i1 < 19; i1++) {
339 for (i2 = 0; i2 < 19; i2++) {
340 for (i3 = 0; i3 < 19; i3++) {
341 for (i4 = 0; i4 < 19; i4++) {
342 _caps[i1][i2][i3][i4] = 0.0;
346 for (i1 = 0; i1 < 19; i1++) {
351 for (i2 = 0; i2 < 19; i2++) {
352 _jstat[i1][i2] = 0.0;
353 _jdyna[i1][i2] = 0.0;
359 void HBT_X::loadVariables (
void)
449 #define _DERIVATEFORDDX
452 void HBT_X::initializeModel (
void)
457 void HBT_X::initializeInstance (
void)
462 void HBT_X::initialStep (
void)
467 void HBT_X::finalStep (
void)
472 void HBT_X::calcVerilog (
void)
477 #if defined(_DERIVATE)
478 double Inivx_Vbii_ei;
479 double Inivx_Tempti_GND;
480 double Inivx_Vbii_ci;
483 #if defined(_DERIVATE)
484 double Iniiix_Vbii_ei;
485 double Iniiix_Tempti_GND;
486 double Iniiix_Vbii_ci;
489 #if defined(_DERIVATE)
490 double Iniix_Vbii_ei;
491 double Iniix_Tempti_GND;
492 double Iniix_Vbii_ci;
494 #if defined(_DYNAMIC)
496 #if defined(_DERIVATE)
498 double qbe_Tempti_GND;
503 #if defined(_DYNAMIC)
505 #if defined(_DERIVATE)
506 double qbtf_Tempti_GND;
511 #if defined(_DYNAMIC)
513 #if defined(_DERIVATE)
515 double xtff_Tempti_GND;
520 #if defined(_DYNAMIC)
522 #if defined(_DERIVATE)
525 double Wh_Tempti_GND;
529 #if defined(_DYNAMIC)
531 #if defined(_DERIVATE)
534 double Ih_Tempti_GND;
538 #if defined(_DYNAMIC)
541 #if defined(_DYNAMIC)
544 #if defined(_DYNAMIC)
547 #if defined(_DYNAMIC)
550 #if defined(_DYNAMIC)
552 #if defined(_DERIVATE)
554 double qb2_Tempti_GND;
558 #if defined(_DYNAMIC)
560 #if defined(_DERIVATE)
562 double qbtra_Tempti_GND;
565 #if defined(_DYNAMIC)
567 #if defined(_DERIVATE)
569 double qbtr_Tempti_GND;
573 #if defined(_DYNAMIC)
575 #if defined(_DERIVATE)
579 #if defined(_DYNAMIC)
581 #if defined(_DERIVATE)
583 double xix_Tempti_GND;
587 #if defined(_DYNAMIC)
589 #if defined(_DERIVATE)
590 double qb2med_Vbii_ei;
591 double qb2med_Tempti_GND;
592 double qb2med_Vbii_ci;
595 #if defined(_DYNAMIC)
599 #if defined(_DERIVATE)
600 double Ipdiss_Vbii_ei;
601 double Ipdiss_Tempti_GND;
602 double Ipdiss_Vbii_ci;
603 double Ipdiss_Vci_ei;
604 double Ipdiss_Vbi_ci;
607 #if defined(_DERIVATE)
609 double Icdx_Tempti_GND;
612 #if defined(_DERIVATE)
613 double Ibdxx_Vexx_ei;
614 double Ibdxx_Tempti_GND;
617 #if defined(_DERIVATE)
619 double Ibdx_Tempti_GND;
622 #if defined(_DERIVATE)
624 double Ib1_Tempti_GND;
628 #if defined(_DERIVATE)
630 double Ib0_Tempti_GND;
634 #if defined(_DERIVATE)
635 double EdBeta_Tempti_GND;
636 double EdBeta_Vbii_ci;
639 #if defined(_DERIVATE)
645 #if defined(_DERIVATE)
647 double Ibx_Tempti_GND;
650 #if defined(_DERIVATE)
652 double Ib2_Tempti_GND;
655 #if defined(_DERIVATE)
657 double Ic1_Tempti_GND;
661 #if defined(_DERIVATE)
663 double Ic1r_Tempti_GND;
667 #if defined(_DERIVATE)
669 double Ic0_Tempti_GND;
673 #if defined(_DERIVATE)
676 double qb_Tempti_GND;
679 #if defined(_DERIVATE)
681 double q2_Tempti_GND;
685 #if defined(_DERIVATE)
690 #if defined(_DERIVATE)
691 double Ic1ra_Vbii_ci;
692 double Ic1ra_Tempti_GND;
695 #if defined(_DERIVATE)
697 double Ic0a_Tempti_GND;
703 #if defined(_DERIVATE)
704 double Tex_Tempti_GND;
707 #if defined(_DERIVATE)
708 double TjK_Tempti_GND;
711 #if defined(_DERIVATE)
712 double Tj_Tempti_GND;
715 #if defined(_DERIVATE)
716 double Texi_Tempti_GND;
719 #if defined(_DERIVATE)
723 #if defined(_DERIVATE)
727 #if defined(_DERIVATE)
731 #if defined(_DERIVATE)
735 #if defined(_DERIVATE)
739 #if defined(_DERIVATE)
743 #if defined(_DERIVATE)
746 #if defined(_DERIVATE)
750 #if defined(_DERIVATE)
754 #if defined(_DERIVATE)
758 #if defined(_DERIVATE)
762 #if defined(_DERIVATE)
766 #if defined(_DERIVATE)
770 #if defined(_DERIVATE)
774 #if defined(_DERIVATE)
778 #if defined(_DERIVATE)
779 Tj_Tempti_GND=Texi_Tempti_GND;
782 #if defined(_DERIVATE)
783 TjK_Tempti_GND=Tj_Tempti_GND;
786 #if defined(_DERIVATE)
787 Tex_Tempti_GND=Tj_Tempti_GND;
790 Area=(((L*W)*1.0e12)*N);
791 FOUR_K=(4*1.3806226e-23);
792 TWO_Q=(2*1.6021918e-19);
793 #if defined(_DERIVATE)
794 Ic0a_Vbii_ei=
HBT_X_d_diode(vbei,Jsf,Vg,nf,Area,Tj,Tnom,vbei_Vbii_ei,0.0,0.0,0.0,0.0,0.0,0.0);
795 Ic0a_Tempti_GND=
HBT_X_d_diode(vbei,Jsf,Vg,nf,Area,Tj,Tnom,0.0,0.0,0.0,0.0,0.0,Tj_Tempti_GND,0.0);
798 #if defined(_DERIVATE)
799 Ic1ra_Vbii_ci=
HBT_X_d_diode(vbci,(XCjc*Jsr),Vgr,nr,Area,Tj,Tnom,vbci_Vbii_ci,0.0,0.0,0.0,0.0,0.0,0.0);
800 Ic1ra_Tempti_GND=
HBT_X_d_diode(vbci,(XCjc*Jsr),Vgr,nr,Area,Tj,Tnom,0.0,0.0,0.0,0.0,0.0,Tj_Tempti_GND,0.0);
802 Ic1ra=
HBT_X_diode(vbci,(XCjc*Jsr),Vgr,nr,Area,Tj,Tnom);
804 (((VAF>0.0)&&(VAR>0.0)))
806 #if defined(_DERIVATE)
807 q1_Vbii_ei=(((
HBT_X_d_charge(vbei,1.0,Vje,mje,1.0,vbei_Vbii_ei,0.0,0.0,0.0,0.0)-
HBT_X_d_charge(0.0,1.0,Vje,mje,1.0,0.0,0.0,0.0,0.0,0.0))/VAR)+((
HBT_X_d_charge(vbci,1.0,Vjc,mjc,1.0,0.0,0.0,0.0,0.0,0.0)-
HBT_X_d_charge(0.0,1.0,Vjc,mjc,1.0,0.0,0.0,0.0,0.0,0.0))/VAF));
808 q1_Vbii_ci=(((
HBT_X_d_charge(vbei,1.0,Vje,mje,1.0,0.0,0.0,0.0,0.0,0.0)-
HBT_X_d_charge(0.0,1.0,Vje,mje,1.0,0.0,0.0,0.0,0.0,0.0))/VAR)+((
HBT_X_d_charge(vbci,1.0,Vjc,mjc,1.0,vbci_Vbii_ci,0.0,0.0,0.0,0.0)-
HBT_X_d_charge(0.0,1.0,Vjc,mjc,1.0,0.0,0.0,0.0,0.0,0.0))/VAF));
810 q1=((1.0+((
HBT_X_charge(vbei,1.0,Vje,mje,1.0)-
HBT_X_charge(0.0,1.0,Vje,mje,1.0))/VAR))+((
HBT_X_charge(vbci,1.0,Vjc,mjc,1.0)-
HBT_X_charge(0.0,1.0,Vjc,mjc,1.0))/VAF));
815 (((VAF>0.0)&&(VAR==0.0)))
817 #if defined(_DERIVATE)
819 q1_Vbii_ci=((
HBT_X_d_charge(vbci,1.0,Vjc,mjc,1.0,vbci_Vbii_ci,0.0,0.0,0.0,0.0)-
HBT_X_d_charge(0.0,1.0,Vjc,mjc,1.0,0.0,0.0,0.0,0.0,0.0))/VAF);
826 (((VAF==0.0)&&(VAR>0.0)))
828 #if defined(_DERIVATE)
829 q1_Vbii_ei=((
HBT_X_d_charge(vbei,1.0,Vje,mje,1.0,vbei_Vbii_ei,0.0,0.0,0.0,0.0)-
HBT_X_d_charge(0.0,1.0,Vje,mje,1.0,0.0,0.0,0.0,0.0,0.0))/VAR);
836 #if defined(_DERIVATE)
845 (((IKF>0.0)&&(IKR>0.0)))
847 #if defined(_DERIVATE)
848 q2_Vbii_ei=(Ic0a_Vbii_ei/(Area*IKF));
849 q2_Tempti_GND=((Ic0a_Tempti_GND/(Area*IKF))+(Ic1ra_Tempti_GND/(Area*IKR)));
850 q2_Vbii_ci=(Ic1ra_Vbii_ci/(Area*IKR));
852 q2=((Ic0a/(Area*IKF))+(Ic1ra/(Area*IKR)));
857 (((IKF>0.0)&&(IKR==0.0)))
859 #if defined(_DERIVATE)
860 q2_Vbii_ei=(Ic0a_Vbii_ei/(Area*IKF));
861 q2_Tempti_GND=(Ic0a_Tempti_GND/(Area*IKF));
864 q2=(Ic0a/(Area*IKF));
869 (((IKF==0.0)&&(IKR>0.0)))
871 #if defined(_DERIVATE)
873 q2_Tempti_GND=(Ic1ra_Tempti_GND/(Area*IKR));
874 q2_Vbii_ci=(Ic1ra_Vbii_ci/(Area*IKR));
876 q2=(Ic1ra/(Area*IKR));
880 #if defined(_DERIVATE)
890 double m00_sqrt(d00_sqrt0,((q1*q1)+(4.0*q2)))
891 #if defined(_DERIVATE)
892 double m10_sqrt(d10_sqrt0,d00_sqrt0,((q1*q1)+(4.0*q2)))
894 #if defined(_DERIVATE)
895 qb_Vbii_ei=((q1_Vbii_ei+(((q1_Vbii_ei*q1)+(q1*q1_Vbii_ei))+(4.0*q2_Vbii_ei))*d10_sqrt0)/2.0);
896 qb_Vbii_ci=((q1_Vbii_ci+(((q1_Vbii_ci*q1)+(q1*q1_Vbii_ci))+(4.0*q2_Vbii_ci))*d10_sqrt0)/2.0);
897 qb_Tempti_GND=((4.0*q2_Tempti_GND)*d10_sqrt0/2.0);
899 qb=((q1+d00_sqrt0)/2.0);
901 #if defined(_DERIVATE)
902 Ic0_Vbii_ei=((Ic0a_Vbii_ei*qb-Ic0a*qb_Vbii_ei)/qb/qb);
903 Ic0_Tempti_GND=((Ic0a_Tempti_GND*qb-Ic0a*qb_Tempti_GND)/qb/qb);
904 Ic0_Vbii_ci=(-Ic0a*qb_Vbii_ci/qb/qb);
907 #if defined(_DERIVATE)
908 Ic1r_Vbii_ci=((Ic1ra_Vbii_ci*qb-Ic1ra*qb_Vbii_ci)/qb/qb);
909 Ic1r_Tempti_GND=((Ic1ra_Tempti_GND*qb-Ic1ra*qb_Tempti_GND)/qb/qb);
910 Ic1r_Vbii_ei=(-Ic1ra*qb_Vbii_ei/qb/qb);
913 #if defined(_DERIVATE)
914 Ic1_Vbii_ei=(Ic0_Vbii_ei-Ic1r_Vbii_ei);
915 Ic1_Tempti_GND=(Ic0_Tempti_GND-Ic1r_Tempti_GND);
916 Ic1_Vbii_ci=(Ic0_Vbii_ci-Ic1r_Vbii_ci);
919 #if defined(_DERIVATE)
920 Ib2_Vbii_ci=(
HBT_X_d_diode(vbci,(XCjc*Jsr),Vgr,nr,Area,Tj,Tnom,vbci_Vbii_ci,0.0,0.0,0.0,0.0,0.0,0.0)/Br);
921 Ib2_Tempti_GND=(
HBT_X_d_diode(vbci,(XCjc*Jsr),Vgr,nr,Area,Tj,Tnom,0.0,0.0,0.0,0.0,0.0,Tj_Tempti_GND,0.0)/Br);
923 Ib2=(
HBT_X_diode(vbci,(XCjc*Jsr),Vgr,nr,Area,Tj,Tnom)/Br);
924 #if defined(_DERIVATE)
925 Ibx_Vbi_ci=(
HBT_X_d_diode(vbcx,((1.0-XCjc)*Jsr),Vgr,nr,Area,Tj,Tnom,vbcx_Vbi_ci,0.0,0.0,0.0,0.0,0.0,0.0)/Br);
926 Ibx_Tempti_GND=(
HBT_X_d_diode(vbcx,((1.0-XCjc)*Jsr),Vgr,nr,Area,Tj,Tnom,0.0,0.0,0.0,0.0,0.0,Tj_Tempti_GND,0.0)/Br);
928 Ibx=(
HBT_X_diode(vbcx,((1.0-XCjc)*Jsr),Vgr,nr,Area,Tj,Tnom)/Br);
931 double m00_pow(d00_pow0,(1.0-epsi),(1/Mc))
932 Vbclin=(BVceo*d00_pow0);
934 #if defined(_DERIVATE)
935 mm_Vbii_ci=
HBT_X_d_MM(vbci,BVceo,Mc,Vbclin,Bf,kc,vbci_Vbii_ci,0.0,0.0,0.0,0.0,0.0);
937 mm=
HBT_X_MM(vbci,BVceo,Mc,Vbclin,Bf,kc);
945 (((Bf-(kBeta*Tex))>1
e-6))
947 #if defined(_DERIVATE)
948 EdBeta_Tempti_GND=((-1*(-(kBeta*Tex_Tempti_GND))/(Bf-(kBeta*Tex))/(Bf-(kBeta*Tex)))/((kc*(mm-1))+1));
949 EdBeta_Vbii_ci=(((-(kc*mm_Vbii_ci))*((kc*(mm-1))+1)-((1/(Bf-(kBeta*Tex)))-(kc*(mm-1)))*(kc*mm_Vbii_ci))/((kc*(mm-1))+1)/((kc*(mm-1))+1));
951 EdBeta=(((1/(Bf-(kBeta*Tex)))-(kc*(mm-1)))/((kc*(mm-1))+1));
955 #if defined(_DERIVATE)
956 EdBeta_Tempti_GND=0.0;
957 EdBeta_Vbii_ci=(((-(kc*mm_Vbii_ci))*((kc*(mm-1))+1)-(1e6-(kc*(mm-1)))*(kc*mm_Vbii_ci))/((kc*(mm-1))+1)/((kc*(mm-1))+1));
959 EdBeta=((1e6-(kc*(mm-1)))/((kc*(mm-1))+1));
964 #if defined(_DERIVATE)
965 EdBeta_Tempti_GND=0.0;
966 EdBeta_Vbii_ci=(((-(kc*mm_Vbii_ci))*((kc*(mm-1))+1)-((1/Bf)-(kc*(mm-1)))*(kc*mm_Vbii_ci))/((kc*(mm-1))+1)/((kc*(mm-1))+1));
968 EdBeta=(((1/Bf)-(kc*(mm-1)))/((kc*(mm-1))+1));
977 (((Bf-(kBeta*Tex))>1
e-6))
979 #if defined(_DERIVATE)
980 EdBeta_Tempti_GND=(-1*(-(kBeta*Tex_Tempti_GND))/(Bf-(kBeta*Tex))/(Bf-(kBeta*Tex)));
983 EdBeta=(1/(Bf-(kBeta*Tex)));
987 #if defined(_DERIVATE)
988 EdBeta_Tempti_GND=0.0;
996 #if defined(_DERIVATE)
997 EdBeta_Tempti_GND=0.0;
1003 #if defined(_DERIVATE)
1004 Ib0_Vbii_ei=Ic0a_Vbii_ei*EdBeta;
1005 Ib0_Tempti_GND=((Ic0a_Tempti_GND*EdBeta)+(Ic0a*EdBeta_Tempti_GND));
1006 Ib0_Vbii_ci=(Ic0a*EdBeta_Vbii_ci);
1012 #if defined(_DERIVATE)
1013 Ib1_Vbii_ei=(Ib0_Vbii_ei-
HBT_X_d_diode(((-BVebo)-vbei),Jsf,0.0,1.0,Area,0.0,0.0,(-vbei_Vbii_ei),0.0,0.0,0.0,0.0,0.0,0.0));
1014 Ib1_Tempti_GND=(Ib0_Tempti_GND-
HBT_X_d_diode(((-BVebo)-vbei),Jsf,0.0,1.0,Area,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0));
1015 Ib1_Vbii_ci=(Ib0_Vbii_ci-
HBT_X_d_diode(((-BVebo)-vbei),Jsf,0.0,1.0,Area,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0));
1017 Ib1=(Ib0-
HBT_X_diode(((-BVebo)-vbei),Jsf,0.0,1.0,Area,0.0,0.0));
1021 #if defined(_DERIVATE)
1022 Ib1_Vbii_ei=Ib0_Vbii_ei;
1023 Ib1_Tempti_GND=Ib0_Tempti_GND;
1024 Ib1_Vbii_ci=Ib0_Vbii_ci;
1029 (((Jse>0.0)&&(ne>0)))
1031 #if defined(_DERIVATE)
1032 Ibdx_Vex_ei=
HBT_X_d_diode(vxe,Jse,Vgb,ne,Area,Tj,Tnom,vxe_Vex_ei,0.0,0.0,0.0,0.0,0.0,0.0);
1033 Ibdx_Tempti_GND=
HBT_X_d_diode(vxe,Jse,Vgb,ne,Area,Tj,Tnom,0.0,0.0,0.0,0.0,0.0,Tj_Tempti_GND,0.0);
1039 #if defined(_DERIVATE)
1040 Ibdx_Vex_ei=vxe_Vex_ei*1
e-12;
1041 Ibdx_Tempti_GND=0.0;
1046 (((Jsee>0.0)&&(nee>0)))
1048 #if defined(_DERIVATE)
1049 Ibdxx_Vexx_ei=
HBT_X_d_diode(vxxe,Jsee,Vgbb,nee,Area,Tj,Tnom,vxxe_Vexx_ei,0.0,0.0,0.0,0.0,0.0,0.0);
1050 Ibdxx_Tempti_GND=
HBT_X_d_diode(vxxe,Jsee,Vgbb,nee,Area,Tj,Tnom,0.0,0.0,0.0,0.0,0.0,Tj_Tempti_GND,0.0);
1052 Ibdxx=
HBT_X_diode(vxxe,Jsee,Vgbb,nee,Area,Tj,Tnom);
1056 #if defined(_DERIVATE)
1057 Ibdxx_Vexx_ei=vxxe_Vexx_ei*1
e-12;
1058 Ibdxx_Tempti_GND=0.0;
1063 (((Jsc>0.0)&&(nc>0)))
1065 #if defined(_DERIVATE)
1066 Icdx_Vcx_ci=
HBT_X_d_diode(vxc,Jsc,Vgc,nc,Area,Tj,Tnom,vxc_Vcx_ci,0.0,0.0,0.0,0.0,0.0,0.0);
1067 Icdx_Tempti_GND=
HBT_X_d_diode(vxc,Jsc,Vgc,nc,Area,Tj,Tnom,0.0,0.0,0.0,0.0,0.0,Tj_Tempti_GND,0.0);
1073 #if defined(_DERIVATE)
1074 Icdx_Vcx_ci=vxc_Vcx_ci*1
e-12;
1075 Icdx_Tempti_GND=0.0;
1079 #if defined(_DERIVATE)
1080 Ipdiss_Vbii_ei=(Ic1_Vbii_ei*vcei+((Ib1_Vbii_ei*vbei)+(Ib1*vbei_Vbii_ei)));
1081 Ipdiss_Tempti_GND=(((Ic1_Tempti_GND*vcei+Ib1_Tempti_GND*vbei)+Ib2_Tempti_GND*vbci)+Ibx_Tempti_GND*vbcx);
1082 Ipdiss_Vbii_ci=((Ic1_Vbii_ci*vcei+Ib1_Vbii_ci*vbei)+((Ib2_Vbii_ci*vbci)+(Ib2*vbci_Vbii_ci)));
1083 Ipdiss_Vci_ei=(Ic1*vcei_Vci_ei);
1084 Ipdiss_Vbi_ci=((Ibx_Vbi_ci*vbcx)+(Ibx*vbcx_Vbi_ci));
1086 Ipdiss=((((Ic1*vcei)+(Ib1*vbei))+(Ib2*vbci))+(Ibx*vbcx));
1090 #if defined(_DERIVATE)
1092 Ipdiss_Tempti_GND=0.0;
1099 #if defined(_DYNAMIC)
1104 (((XCjc<1.0)&&(XCjc>0.0)))
1108 (((J0<=0.0)||(Ic0<0.0)))
1110 #if defined(_DYNAMIC)
1111 #if defined(_DERIVATE)
1113 qb2med_Tempti_GND=0.0;
1114 qb2med_Vbii_ci=((XCjc*
HBT_X_d_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area,vbci_Vbii_ci,0.0,0.0,0.0,0.0))+(((XCjc*Area)*Cmin)*vbci_Vbii_ci));
1116 qb2med=((XCjc*
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area))+(((XCjc*Area)*Cmin)*vbci));
1121 #if defined(_DYNAMIC)
1122 #if defined(_DERIVATE)
1123 xix_Vbii_ei=(Ic0_Vbii_ei/I00);
1124 xix_Tempti_GND=(Ic0_Tempti_GND/I00);
1125 xix_Vbii_ci=(Ic0_Vbii_ci/I00);
1129 #if defined(_DYNAMIC)
1132 #if defined(_DERIVATE)
1133 double m10_tanh(d10_tanh0,d00_tanh0,xix)
1135 #if defined(_DERIVATE)
1136 qb2med_Vbii_ei=(((XCjc*(-xix_Vbii_ei*d10_tanh0))*(
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((((1.0-XJ0)*Area)*Cmin)*vbci)))+((XCjc*(1.0-d00_tanh0))*
HBT_X_d_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area,0.0,0.0,0.0,0.0,0.0)));
1137 qb2med_Tempti_GND=(((XCjc*(-xix_Tempti_GND*d10_tanh0))*(
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((((1.0-XJ0)*Area)*Cmin)*vbci)))+((XCjc*(1.0-d00_tanh0))*
HBT_X_d_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area,0.0,0.0,0.0,0.0,0.0)));
1138 qb2med_Vbii_ci=((((XCjc*(-xix_Vbii_ci*d10_tanh0))*(
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((((1.0-XJ0)*Area)*Cmin)*vbci)))+((XCjc*(1.0-d00_tanh0))*(
HBT_X_d_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area,vbci_Vbii_ci,0.0,0.0,0.0,0.0)+((((1.0-XJ0)*Area)*Cmin)*vbci_Vbii_ci))))+((((XJ0*XCjc)*Area)*Cmin)*vbci_Vbii_ci));
1140 qb2med=(((XCjc*(1.0-d00_tanh0))*(
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((((1.0-XJ0)*Area)*Cmin)*vbci)))+((((XJ0*XCjc)*Area)*Cmin)*vbci));
1150 (((J0<0.0)||(Ic0<0.0)))
1152 #if defined(_DYNAMIC)
1153 #if defined(_DERIVATE)
1155 qb2med_Tempti_GND=0.0;
1156 qb2med_Vbii_ci=(
HBT_X_d_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area,vbci_Vbii_ci,0.0,0.0,0.0,0.0)+((Area*Cmin)*vbci_Vbii_ci));
1158 qb2med=(
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((Area*Cmin)*vbci));
1163 #if defined(_DYNAMIC)
1164 #if defined(_DERIVATE)
1165 xix_Vbii_ei=(Ic0_Vbii_ei/I00);
1166 xix_Tempti_GND=(Ic0_Tempti_GND/I00);
1167 xix_Vbii_ci=(Ic0_Vbii_ci/I00);
1171 #if defined(_DYNAMIC)
1174 #if defined(_DERIVATE)
1175 double m10_tanh(d10_tanh0,d00_tanh0,xix)
1177 #if defined(_DERIVATE)
1178 qb2med_Vbii_ei=(((-xix_Vbii_ei*d10_tanh0)*(
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((((1.0-XJ0)*Area)*Cmin)*vbci)))+((1.0-d00_tanh0)*
HBT_X_d_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area,0.0,0.0,0.0,0.0,0.0)));
1179 qb2med_Tempti_GND=(((-xix_Tempti_GND*d10_tanh0)*(
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((((1.0-XJ0)*Area)*Cmin)*vbci)))+((1.0-d00_tanh0)*
HBT_X_d_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area,0.0,0.0,0.0,0.0,0.0)));
1180 qb2med_Vbii_ci=((((-xix_Vbii_ci*d10_tanh0)*(
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((((1.0-XJ0)*Area)*Cmin)*vbci)))+((1.0-d00_tanh0)*(
HBT_X_d_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area,vbci_Vbii_ci,0.0,0.0,0.0,0.0)+((((1.0-XJ0)*Area)*Cmin)*vbci_Vbii_ci))))+(((XJ0*Area)*Cmin)*vbci_Vbii_ci));
1182 qb2med=(((1.0-d00_tanh0)*(
HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((((1.0-XJ0)*Area)*Cmin)*vbci)))+(((XJ0*Area)*Cmin)*vbci));
1191 (((XCjc<1.0)&&(XCjc>0.0)))
1193 #if defined(_DYNAMIC)
1194 #if defined(_DERIVATE)
1195 qb1_Vbi_ci=(((1.0-XCjc)*
HBT_X_d_charge(vbcx,(Cjc-Cmin),Vjc,mjc,Area,vbcx_Vbi_ci,0.0,0.0,0.0,0.0))+((((1.0-XCjc)*Area)*Cmin)*vbcx_Vbi_ci));
1197 qb1=(((1.0-XCjc)*
HBT_X_charge(vbcx,(Cjc-Cmin),Vjc,mjc,Area))+((((1.0-XCjc)*Area)*Cmin)*vbcx));
1202 #if defined(_DYNAMIC)
1203 #if defined(_DERIVATE)
1210 #if defined(_DYNAMIC)
1211 #if defined(_DERIVATE)
1212 qbtr_Vbii_ci=(Tr*Ic1r_Vbii_ci);
1213 qbtr_Tempti_GND=(Tr*Ic1r_Tempti_GND);
1214 qbtr_Vbii_ei=(Tr*Ic1r_Vbii_ei);
1218 #if defined(_DYNAMIC)
1219 #if defined(_DERIVATE)
1220 qbtra_Vbi_ci=(Trx*Ibx_Vbi_ci);
1221 qbtra_Tempti_GND=(Trx*Ibx_Tempti_GND);
1225 #if defined(_DYNAMIC)
1226 #if defined(_DERIVATE)
1227 qb2_Vbii_ei=(qb2med_Vbii_ei+qbtr_Vbii_ei);
1228 qb2_Tempti_GND=(qb2med_Tempti_GND+qbtr_Tempti_GND);
1229 qb2_Vbii_ci=(qb2med_Vbii_ci+qbtr_Vbii_ci);
1235 (((Jk>0.0)&&(Rci0>0.0)))
1241 #if defined(_DYNAMIC)
1242 Vlim=((Jk*Rci0)/(1.0-(Rci0/RJk)));
1244 #if defined(_DYNAMIC)
1245 InvVpt=((1.0-(Rci0/RJk))/(Jk*RJk));
1250 #if defined(_DYNAMIC)
1251 Vlim=((Jk*Rci0)/1.016);
1253 #if defined(_DYNAMIC)
1262 (((((Thcs>0.0)&&(Ahc>0.0))&&(Jk>0.0))&&(Ic0>0.0)))
1264 #if defined(_DYNAMIC)
1267 #if defined(_DYNAMIC)
1272 (((Rci0<RJk)||(RJk<=0.0)))
1274 #if defined(_DYNAMIC)
1275 #if defined(_DERIVATE)
1276 Ih_Vci_ei=(-(
HBT_X_d_ICK(vcei,RCIO,Vlim,InvVpt,Vces,vcei_Vci_ei,0.0,0.0,0.0,0.0)/Ic0));
1277 Ih_Vbii_ei=(-((
HBT_X_d_ICK(vcei,RCIO,Vlim,InvVpt,Vces,0.0,0.0,0.0,0.0,0.0)*Ic0-
HBT_X_ICK(vcei,RCIO,Vlim,InvVpt,Vces)*Ic0_Vbii_ei)/Ic0/Ic0));
1278 Ih_Tempti_GND=(-((
HBT_X_d_ICK(vcei,RCIO,Vlim,InvVpt,Vces,0.0,0.0,0.0,0.0,0.0)*Ic0-
HBT_X_ICK(vcei,RCIO,Vlim,InvVpt,Vces)*Ic0_Tempti_GND)/Ic0/Ic0));
1279 Ih_Vbii_ci=(-((
HBT_X_d_ICK(vcei,RCIO,Vlim,InvVpt,Vces,0.0,0.0,0.0,0.0,0.0)*Ic0-
HBT_X_ICK(vcei,RCIO,Vlim,InvVpt,Vces)*Ic0_Vbii_ci)/Ic0/Ic0));
1281 Ih=(1.0-(
HBT_X_ICK(vcei,RCIO,Vlim,InvVpt,Vces)/Ic0));
1286 #if defined(_DYNAMIC)
1287 #if defined(_DERIVATE)
1288 Ih_Vci_ei=(-(
HBT_X_d_Vceff(vcei,Vces,vcei_Vci_ei,0.0)/(RCIO*Ic0)));
1289 Ih_Vbii_ei=(-((
HBT_X_d_Vceff(vcei,Vces,0.0,0.0)*(RCIO*Ic0)-
HBT_X_Vceff(vcei,Vces)*(RCIO*Ic0_Vbii_ei))/(RCIO*Ic0)/(RCIO*Ic0)));
1290 Ih_Tempti_GND=(-((
HBT_X_d_Vceff(vcei,Vces,0.0,0.0)*(RCIO*Ic0)-
HBT_X_Vceff(vcei,Vces)*(RCIO*Ic0_Tempti_GND))/(RCIO*Ic0)/(RCIO*Ic0)));
1291 Ih_Vbii_ci=(-((
HBT_X_d_Vceff(vcei,Vces,0.0,0.0)*(RCIO*Ic0)-
HBT_X_Vceff(vcei,Vces)*(RCIO*Ic0_Vbii_ci))/(RCIO*Ic0)/(RCIO*Ic0)));
1297 #if defined(_DYNAMIC)
1299 double m00_sqrt(d00_sqrt0,((Ih*Ih)+AHC))
1300 double
m00_sqrt(d00_sqrt1,(1.0+AHC))
1301 #if defined(_DERIVATE)
1302 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Ih*Ih)+AHC))
1304 #if defined(_DERIVATE)
1305 Wh_Vci_ei=((Ih_Vci_ei+((Ih_Vci_ei*Ih)+(Ih*Ih_Vci_ei))*d10_sqrt0)/(1.0+d00_sqrt1));
1306 Wh_Vbii_ei=((Ih_Vbii_ei+((Ih_Vbii_ei*Ih)+(Ih*Ih_Vbii_ei))*d10_sqrt0)/(1.0+d00_sqrt1));
1307 Wh_Tempti_GND=((Ih_Tempti_GND+((Ih_Tempti_GND*Ih)+(Ih*Ih_Tempti_GND))*d10_sqrt0)/(1.0+d00_sqrt1));
1308 Wh_Vbii_ci=((Ih_Vbii_ci+((Ih_Vbii_ci*Ih)+(Ih*Ih_Vbii_ci))*d10_sqrt0)/(1.0+d00_sqrt1));
1310 Wh=((Ih+d00_sqrt0)/(1.0+d00_sqrt1));
1313 #if defined(_DYNAMIC)
1314 #if defined(_DERIVATE)
1315 xtff_Vbii_ei=(((Thcs*Ic0_Vbii_ei)*(Wh*Wh))+((Thcs*Ic0)*((Wh_Vbii_ei*Wh)+(Wh*Wh_Vbii_ei))));
1316 xtff_Tempti_GND=(((Thcs*Ic0_Tempti_GND)*(Wh*Wh))+((Thcs*Ic0)*((Wh_Tempti_GND*Wh)+(Wh*Wh_Tempti_GND))));
1317 xtff_Vbii_ci=(((Thcs*Ic0_Vbii_ci)*(Wh*Wh))+((Thcs*Ic0)*((Wh_Vbii_ci*Wh)+(Wh*Wh_Vbii_ci))));
1318 xtff_Vci_ei=((Thcs*Ic0)*((Wh_Vci_ei*Wh)+(Wh*Wh_Vci_ei)));
1320 xtff=((Thcs*Ic0)*(Wh*Wh));
1325 #if defined(_DYNAMIC)
1326 #if defined(_DERIVATE)
1328 xtff_Tempti_GND=0.0;
1336 #if defined(_DYNAMIC)
1337 #if defined(_DERIVATE)
1338 qbtf_Tempti_GND=(((Tft*Tex_Tempti_GND)*Ic0)+((Tf+(Tft*Tex))*Ic0_Tempti_GND));
1339 qbtf_Vbii_ei=((Tf+(Tft*Tex))*Ic0_Vbii_ei);
1340 qbtf_Vbii_ci=((Tf+(Tft*Tex))*Ic0_Vbii_ci);
1342 qbtf=((Tf+(Tft*Tex))*Ic0);
1344 #if defined(_DYNAMIC)
1345 #if defined(_DERIVATE)
1346 qbe_Vbii_ei=((xtff_Vbii_ei+qbtf_Vbii_ei)+
HBT_X_d_charge(vbei,Cje,Vje,mje,Area,vbei_Vbii_ei,0.0,0.0,0.0,0.0));
1347 qbe_Tempti_GND=((xtff_Tempti_GND+qbtf_Tempti_GND)+
HBT_X_d_charge(vbei,Cje,Vje,mje,Area,0.0,0.0,0.0,0.0,0.0));
1348 qbe_Vbii_ci=((xtff_Vbii_ci+qbtf_Vbii_ci)+
HBT_X_d_charge(vbei,Cje,Vje,mje,Area,0.0,0.0,0.0,0.0,0.0));
1349 qbe_Vci_ei=(xtff_Vci_ei+
HBT_X_d_charge(vbei,Cje,Vje,mje,Area,0.0,0.0,0.0,0.0,0.0));
1354 #if defined(_DERIVATE)
1358 #if defined(_DYNAMIC)
1360 #if defined(_DERIVATE)
1366 #if defined(_DERIVATE)
1370 #if defined(_DYNAMIC)
1372 #if defined(_DERIVATE)
1379 #if defined(_DERIVATE)
1384 #if defined(_DYNAMIC)
1386 #if defined(_DERIVATE)
1394 #if defined(_DERIVATE)
1400 #if defined(_DERIVATE)
1405 #if defined(_DERIVATE)
1410 #if defined(_DERIVATE)
1416 #if defined(_DERIVATE)
1421 #if defined(_DERIVATE)
1425 #if defined(_DERIVATE)
1429 #if defined(_DERIVATE)
1434 #if defined(_DERIVATE)
1439 #if defined(_DERIVATE)
1444 #if defined(_DERIVATE)
1449 (((Jse>0.0)&&(ne>0)))
1452 #if defined(_DERIVATE)
1460 #if defined(_DERIVATE)
1465 (((Jsee>0.0)&&(nee>0)))
1468 #if defined(_DERIVATE)
1476 #if defined(_DERIVATE)
1481 (((Jsc>0.0)&&(nc>0)))
1484 #if defined(_DERIVATE)
1492 #if defined(_DERIVATE)
1496 #if defined(_DYNAMIC)
1498 #if defined(_DERIVATE)
1502 #if defined(_DYNAMIC)
1504 #if defined(_DERIVATE)
1508 #if defined(_DYNAMIC)
1510 #if defined(_DERIVATE)
1515 #if defined(_DERIVATE)
1526 #if defined(_DERIVATE)
1529 #if defined(_DYNAMIC)
1531 #if defined(_DERIVATE)
1539 #if defined(_DERIVATE)
1546 #if defined(_DERIVATE)
1548 Iniix_Tempti_GND=0.0;
1552 #if defined(_DERIVATE)
1554 Iniiix_Tempti_GND=0.0;
1562 #if defined(_DERIVATE)
1564 Inivx_Tempti_GND=0.0;
1574 #if defined(_DERIVATE)
1575 Iniix_Vbii_ei=Ib0_Vbii_ei;
1576 Iniix_Tempti_GND=Ib0_Tempti_GND;
1577 Iniix_Vbii_ci=Ib0_Vbii_ci;
1584 double m00_pow(d00_pow0,Ib0,(Ab*0.5))
1585 #if defined(_DERIVATE)
1586 double m10_pow(d10_pow0,d00_pow0,Ib0,(Ab*0.5))
1588 #if defined(_DERIVATE)
1589 Iniix_Vbii_ei=(d10_pow0*Ib0_Vbii_ei);
1590 Iniix_Tempti_GND=(d10_pow0*Ib0_Tempti_GND);
1591 Iniix_Vbii_ci=(d10_pow0*Ib0_Vbii_ci);
1599 #if defined(_DERIVATE)
1600 Iniiix_Vbii_ei=Ib0_Vbii_ei;
1601 Iniiix_Tempti_GND=Ib0_Tempti_GND;
1602 Iniiix_Vbii_ci=Ib0_Vbii_ci;
1609 double m00_pow(d00_pow0,Ib0,(Afb*0.5))
1610 #if defined(_DERIVATE)
1611 double m10_pow(d10_pow0,d00_pow0,Ib0,(Afb*0.5))
1613 #if defined(_DERIVATE)
1614 Iniiix_Vbii_ei=(d10_pow0*Ib0_Vbii_ei);
1615 Iniiix_Tempti_GND=(d10_pow0*Ib0_Tempti_GND);
1616 Iniiix_Vbii_ci=(d10_pow0*Ib0_Vbii_ci);
1624 #if defined(_DERIVATE)
1625 Inivx_Vbii_ei=(Ib0_Vbii_ei+Ic1_Vbii_ei);
1626 Inivx_Tempti_GND=(Ib0_Tempti_GND+Ic1_Tempti_GND);
1627 Inivx_Vbii_ci=(Ib0_Vbii_ci+Ic1_Vbii_ci);
1634 double m00_pow(d00_pow0,(Ib0+Ic1),(Afe*0.5))
1635 #if defined(_DERIVATE)
1636 double m10_pow(d10_pow0,d00_pow0,(Ib0+Ic1),(Afe*0.5))
1638 #if defined(_DERIVATE)
1639 Inivx_Vbii_ei=(d10_pow0*(Ib0_Vbii_ei+Ic1_Vbii_ei));
1640 Inivx_Tempti_GND=(d10_pow0*(Ib0_Tempti_GND+Ic1_Tempti_GND));
1641 Inivx_Vbii_ci=(d10_pow0*(Ib0_Vbii_ci+Ic1_Vbii_ci));
1648 #if defined(_DERIVATE)
1651 #if defined(_DYNAMIC)
1653 #if defined(_DERIVATE)
1659 #if defined(_DERIVATE)
1663 #if defined(_DERIVATE)
1669 #if defined(_DERIVATE)
1674 #if defined(_DERIVATE)
1678 #if defined(_DERIVATE)
1684 #if defined(_DERIVATE)
1689 #if defined(_DERIVATE)
1694 #if defined(_DERIVATE)
1699 #if defined(_DERIVATE)
1703 #if defined(_DERIVATE)
1709 #if defined(_DERIVATE)
1729 for (
int i1 = 0; i1 < 19; i1++) {
1730 setI (i1, _rhs[i1]);
1731 for (
int i2 = 0; i2 < 19; i2++) {
1732 setY (i1, i2, _jstat[i1][i2]);
1766 matrix HBT_X::calcMatrixY (nr_double_t frequency)
1772 for (
int i1 = 0; i1 < 19; i1++) {
1773 for (
int i2 = 0; i2 < 19; i2++) {
1774 y (i1,i2) =
rect (_jstat[i1][i2], _jdyna[i1][i2] * 2 *
M_PI * _freq);
1808 int i1, i2, i3, i4, state;
1811 for (i1 = 0; i1 < 19; i1++) {
1812 for (i2 = 0; i2 < 19; i2++) {
1813 state = 2 * (i2 + 19 * i1);
1815 if (_charges[i1][i2] != 0.0)
1820 for (i1 = 0; i1 < 19; i1++) {
1821 state = 2 * (i1 + 19 * i1);
1822 if (_charges[i1][i1] != 0.0)
1827 for (i1 = 0; i1 < 19; i1++) {
1828 for (i2 = 0; i2 < 19; i2++) {
1830 for (i3 = 0; i3 < 19; i3++) {
1831 for (i4 = 0; i4 < 19; i4++) {
1833 if (_caps[i1][i2][i3][i4] != 0.0)
1838 for (i1 = 0; i1 < 19; i1++) {
1839 for (i2 = 0; i2 < 19; i2++) {
1841 for (i3 = 0; i3 < 19; i3++) {
1842 if (_caps[i1][i2][i3][i3] != 0.0)
1847 for (i1 = 0; i1 < 19; i1++) {
1848 for (i3 = 0; i3 < 19; i3++) {
1849 for (i4 = 0; i4 < 19; i4++) {
1851 if (_caps[i1][i1][i3][i4] != 0.0)
1856 for (i1 = 0; i1 < 19; i1++) {
1857 for (i3 = 0; i3 < 19; i3++) {
1858 if (_caps[i1][i1][i3][i3] != 0.0)
1864 matrix HBT_X::calcMatrixCy (nr_double_t frequency)
1916 for (
int i1 = 0; i1 < 19; i1++) {
1917 setQ (i1, _qhs[i1]);
1918 setCV (i1, _chs[i1]);
1919 setGV (i1, _ghs[i1]);
1920 for (
int i2 = 0; i2 < 19; i2++) {
1921 setQV (i1, i2, _jdyna[i1][i2]);