LCOV - code coverage report
Current view: top level - src/components/verilog - HBT_X.core.cpp (source / functions) Hit Total Coverage
Test: qucs-core-0.0.19 Code Coverage Lines: 0 713 0.0 %
Date: 2015-01-05 16:01:02 Functions: 0 28 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 850 0.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * HBT_X.core.cpp - device implementations for HBT_X module
       3                 :            :  *
       4                 :            :  * This is free software; you can redistribute it and/or modify
       5                 :            :  * it under the terms of the GNU General Public License as published by
       6                 :            :  * the Free Software Foundation; either version 2, or (at your option)
       7                 :            :  * any later version.
       8                 :            :  *
       9                 :            :  */
      10                 :            : 
      11                 :            : #if HAVE_CONFIG_H
      12                 :            : #include <config.h>
      13                 :            : #endif
      14                 :            : 
      15                 :            : #include "HBT_X.analogfunction.h"
      16                 :            : #include "component.h"
      17                 :            : #include "device.h"
      18                 :            : #include "HBT_X.core.h"
      19                 :            : 
      20                 :            : #ifndef CIR_HBT_X
      21                 :            : #define CIR_HBT_X -1
      22                 :            : #endif
      23                 :            : 
      24                 :            : // external nodes
      25                 :            : #define c 0
      26                 :            : #define b 1
      27                 :            : #define e 2
      28                 :            : #define t 3
      29                 :            : // internal nodes
      30                 :            : #define ei 4
      31                 :            : #define bi 5
      32                 :            : #define bii 6
      33                 :            : #define ci 7
      34                 :            : #define ex 8
      35                 :            : #define exx 9
      36                 :            : #define cx 10
      37                 :            : #define ni 11
      38                 :            : #define nii 12
      39                 :            : #define niix 13
      40                 :            : #define niii 14
      41                 :            : #define niiix 15
      42                 :            : #define niv 16
      43                 :            : #define nivx 17
      44                 :            : #define ti 18
      45                 :            : 
      46                 :            : // useful macro definitions
      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;\
      64                 :            :         if (doHB) {\
      65                 :            :         _ghs[pnode] += conductance * BP(vpnode,vnnode);\
      66                 :            :         _ghs[nnode] -= conductance * BP(vpnode,vnnode);\
      67                 :            :         } else {\
      68                 :            :         _rhs[pnode] += conductance * BP(vpnode,vnnode);\
      69                 :            :         _rhs[nnode] -= conductance * BP(vpnode,vnnode);\
      70                 :            :         }
      71                 :            : #define _load_static_jacobian2p(node,vpnode,vnnode,conductance)\
      72                 :            :         _jstat[node][vpnode] += conductance;\
      73                 :            :         _jstat[node][vnnode] -= conductance;\
      74                 :            :         if (doHB) {\
      75                 :            :         _ghs[node] += conductance * BP(vpnode,vnnode);\
      76                 :            :         } else {\
      77                 :            :         _rhs[node] += conductance * BP(vpnode,vnnode);\
      78                 :            :         }
      79                 :            : #define _load_static_jacobian2s(pnode,nnode,node,conductance)\
      80                 :            :         _jstat[pnode][node] += conductance;\
      81                 :            :         _jstat[nnode][node] -= conductance;\
      82                 :            :         if (doHB) {\
      83                 :            :         _ghs[pnode] += conductance * NP(node);\
      84                 :            :         _ghs[nnode] -= conductance * NP(node);\
      85                 :            :         } else {\
      86                 :            :         _rhs[pnode] += conductance * NP(node);\
      87                 :            :         _rhs[nnode] -= conductance * NP(node);\
      88                 :            :         }
      89                 :            : #define _load_static_jacobian1(node,vnode,conductance)\
      90                 :            :         _jstat[node][vnode] += conductance;\
      91                 :            :         if (doHB) {\
      92                 :            :         _ghs[node] += conductance * NP(vnode);\
      93                 :            :         } else {\
      94                 :            :         _rhs[node] += conductance * NP(vnode);\
      95                 :            :         }
      96                 :            : #define _load_dynamic_residual2(pnode,nnode,charge)\
      97                 :            :         if (doTR) _charges[pnode][nnode] += charge;\
      98                 :            :         if (doHB) {\
      99                 :            :         _qhs[pnode] -= charge;\
     100                 :            :         _qhs[nnode] += charge;\
     101                 :            :         }
     102                 :            : #define _load_dynamic_residual1(node,charge)\
     103                 :            :         if (doTR) _charges[node][node] += charge;\
     104                 :            :         if (doHB) {\
     105                 :            :         _qhs[node] -= charge;\
     106                 :            :         }
     107                 :            : #define _load_dynamic_jacobian4(pnode,nnode,vpnode,vnnode,capacitance)\
     108                 :            :         if (doAC) {\
     109                 :            :         _jdyna[pnode][vpnode] += capacitance;\
     110                 :            :         _jdyna[nnode][vnnode] += capacitance;\
     111                 :            :         _jdyna[pnode][vnnode] -= capacitance;\
     112                 :            :         _jdyna[nnode][vpnode] -= capacitance;\
     113                 :            :         }\
     114                 :            :         if (doTR) {\
     115                 :            :         _caps[pnode][nnode][vpnode][vnnode] += capacitance;\
     116                 :            :         }\
     117                 :            :         if (doHB) {\
     118                 :            :         _chs[pnode] += capacitance * BP(vpnode,vnnode);\
     119                 :            :         _chs[nnode] -= capacitance * BP(vpnode,vnnode);\
     120                 :            :         }
     121                 :            : #define _load_dynamic_jacobian2s(pnode,nnode,vnode,capacitance)\
     122                 :            :         if (doAC) {\
     123                 :            :         _jdyna[pnode][vnode] += capacitance;\
     124                 :            :         _jdyna[nnode][vnode] -= capacitance;\
     125                 :            :         }\
     126                 :            :         if (doTR) {\
     127                 :            :         _caps[pnode][nnode][vnode][vnode] += capacitance;\
     128                 :            :         }\
     129                 :            :         if (doHB) {\
     130                 :            :         _chs[pnode] += capacitance * NP(vnode);\
     131                 :            :         _chs[nnode] -= capacitance * NP(vnode);\
     132                 :            :         }
     133                 :            : #define _load_dynamic_jacobian2p(node,vpnode,vnnode,capacitance)\
     134                 :            :         if (doAC) {\
     135                 :            :         _jdyna[node][vpnode] += capacitance;\
     136                 :            :         _jdyna[node][vnnode] -= capacitance;\
     137                 :            :         }\
     138                 :            :         if (doTR) {\
     139                 :            :         _caps[node][node][vpnode][vnnode] += capacitance;\
     140                 :            :         }\
     141                 :            :         if (doHB) {\
     142                 :            :         _chs[node] += capacitance * BP(vpnode,vnnode);\
     143                 :            :         }
     144                 :            : #define _load_dynamic_jacobian1(node,vnode,capacitance)\
     145                 :            :         if (doAC) {\
     146                 :            :         _jdyna[node][vnode] += capacitance;\
     147                 :            :         }\
     148                 :            :         if (doTR) {\
     149                 :            :         _caps[node][node][vnode][vnode] += capacitance;\
     150                 :            :         }\
     151                 :            :         if (doHB) {\
     152                 :            :         _chs[node] += capacitance * NP(vnode);\
     153                 :            :         }
     154                 :            : 
     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;
     177                 :            : 
     178                 :            : // derivative helper macros
     179                 :            : // transcendental LRM p. 59
     180                 :            : #define m00_cos(v00,x)          v00 = cos(x);
     181                 :            : #define m10_cos(v10,v00,x)      v10 = (-sin(x));
     182                 :            : #define m00_sin(v00,x)          v00 = sin(x);
     183                 :            : #define m10_sin(v10,v00,x)      v10 = (cos(x));
     184                 :            : #define m00_tan(v00,x)          v00 = tan(x);
     185                 :            : #define m10_tan(v10,v00,x)      v10 = (1.0/cos(x)/cos(x));
     186                 :            : #define m00_cosh(v00,x)         v00 = cosh(x);
     187                 :            : #define m10_cosh(v10,v00,x)     v10 = (sinh(x));
     188                 :            : #define m00_sinh(v00,x)         v00 = sinh(x);
     189                 :            : #define m10_sinh(v10,v00,x)     v10 = (cosh(x));
     190                 :            : #define m00_tanh(v00,x)         v00 = tanh(x);
     191                 :            : #define m10_tanh(v10,v00,x)     v10 = (1.0/cosh(x)/cosh(x));
     192                 :            : #define m00_acos(v00,x)         v00 = acos(x);
     193                 :            : #define m10_acos(v10,v00,x)     v10 = (-1.0/sqrt(1-x*x));
     194                 :            : #define m00_asin(v00,x)         v00 = asin(x);
     195                 :            : #define m10_asin(v10,v00,x)     v10 = (+1.0/sqrt(1-x*x));
     196                 :            : #define m00_atan(v00,x)         v00 = atan(x);
     197                 :            : #define m10_atan(v10,v00,x)     v10 = (+1.0/(1+x*x));
     198                 :            : #define m00_hypot(v00,x,y)      v00 = sqrt((x)*(x)+(y)*(y));
     199                 :            : #define m10_hypot(v10,v00,x,y)  v10 = (x)/(v00);
     200                 :            : #define m11_hypot(v11,v00,x,y)  v11 = (y)/(v00);
     201                 :            : #define m00_atan2(v00,x,y)      v00 = atan2(x,y);
     202                 :            : // TODO atan2 derivatives ?
     203                 :            : #define m00_acosh(v00,x)        v00 = acosh(x);
     204                 :            : #define m10_acosh(v10,v00,x)    v10 = (1.0/(sqrt(x-1)*sqrt(x+1)));
     205                 :            : #define m00_asinh(v00,x)        v00 = asinh(x);
     206                 :            : #define m10_asinh(v10,v00,x)    v10 = (1.0/(sqrt(x*x+1)));
     207                 :            : #define m00_atanh(v00,x)        v00 = atanh(x);
     208                 :            : #define m10_atanh(v10,v00,x)    v10 = (1.0/(1-x*x));
     209                 :            : 
     210                 :            : 
     211                 :            : // standard functions LRM p.58
     212                 :            : #define m00_logE(v00,x)         v00 = log(x);
     213                 :            : #define m10_logE(v10,v00,x)     v10 = (1.0/x);
     214                 :            : #define m00_log10(v00,x)        v00 = log10(x);
     215                 :            : #define m10_log10(v10,v00,x)    v10 = (1.0/x/M_LN10);
     216                 :            : #define m00_exp(v00,x)          v00 = exp(x);
     217                 :            : #define m10_exp(v10,v00,x)      v10 = v00;
     218                 :            : #define m00_sqrt(v00,x)         v00 = sqrt(x);
     219                 :            : #define m10_sqrt(v10,v00,x)     v10 = (0.5/v00);
     220                 :            : #define m00_min(v00,x,y)        v00 = ((x)<(y))?(x):(y);
     221                 :            : #define m10_min(v10,v00,x,y)    v10 = ((x)<(y))?1.0:0.0;
     222                 :            : #define m11_min(v11,v00,x,y)    v11 = ((x)<(y))?0.0:1.0;
     223                 :            : #define m00_max(v00,x,y)        v00 = ((x)>(y))?(x):(y);
     224                 :            : #define m10_max(v10,v00,x,y)    v10 = ((x)>(y))?1.0:0.0;
     225                 :            : #define m11_max(v11,v00,x,y)    v11 = ((x)>(y))?0.0:1.0;
     226                 :            : #define m00_pow(v00,x,y)        v00 = pow(x,y);
     227                 :            : #define m10_pow(v10,v00,x,y)    v10 = (x==0.0)?0.0:(v00)*(y)/(x);
     228                 :            : #define m11_pow(v11,v00,x,y)    v11 = (x==0.0)?0.0:(log(x)*(v00));
     229                 :            : #define m00_abs(v00,x)          v00 = ((x)<(0)?(-(x)):(x));
     230                 :            : #define m10_abs(v10,v00,x)      v10 = (((x)>=0)?(+1.0):(-1.0));
     231                 :            : #define m00_floor(v00,x)        v00 = floor(x);
     232                 :            : #define m10_floor(v10,v00,x)    v10 = 1.0;
     233                 :            : 
     234                 :            : #define m00_ceil(v00,x)         v00 = ceil(x);
     235                 :            : // TODO ceil derivative, needed?
     236                 :            : 
     237                 :            : // analog operator, LRM p.61
     238                 :            : #define m00_limexp(v00,x)       v00 = ((x)<80.0?exp(x):exp(80.0)*(x-79.0));
     239                 :            : #define m10_limexp(v10,v00,x)   v10 = ((x)<80.0?(v00):exp(80.0));
     240                 :            : 
     241                 :            : // analog kernel parameter system functions, LRM p.215
     242                 :            : #define m00_vt(x)               (kBoverQ*(x))
     243                 :            : #define m10_vt(x)               (kBoverQ)
     244                 :            : 
     245                 :            : // extra functions (?)
     246                 :            : #define m00_div(v00,v10,x,y)    double v10=1/(y); double v00=(x)*v10;
     247                 :            : #define m10_div(v10,v00,vv,x,y)
     248                 :            : #define m11_div(v11,v00,vv,x,y) double v11 = -v00*vv;
     249                 :            : #define m00_mult(v00,v10,v11,x,y) double v10=(x); double v11=(y); double v00=v10*v11;
     250                 :            : #define m00_add(v00,x,y)        double v00=(x)+(y);
     251                 :            : 
     252                 :            : // second derivatives
     253                 :            : #define m20_logE(v00)           (-1.0/v00/v00)
     254                 :            : #define m20_exp(v00)            exp(v00)
     255                 :            : #define m20_limexp(v00)         ((v00)<80.0?exp(v00):0.0)
     256                 :            : #define m20_sqrt(v00)           (-0.25/(v00)/sqrt(v00))
     257                 :            : #define m20_abs(v00)           0.0
     258                 :            : #define m20_pow(x,y)            ((y)*((y)-1.0)*pow(x,y)/(x)/(x))
     259                 :            : 
     260                 :            : 
     261                 :            : // simulator specific definitions
     262                 :            : #define _modelname              "HBT_X"
     263                 :            : #define _instancename           getName()
     264                 :            : #define _circuit_temp           (getPropertyDouble("Temp")+273.15)
     265                 :            : #define _param_given(p)         (isPropertyGiven(p)?1:0)
     266                 :            : 
     267                 :            : 
     268                 :            : // $vt and $vt() functions
     269                 :            : #define _vt_nom                 (kBoverQ*_circuit_temp)
     270                 :            : 
     271                 :            : using namespace qucs::device;
     272                 :            : using qucs::matrix;
     273                 :            : 
     274                 :            : /* Device constructor. */
     275                 :          0 : HBT_X::HBT_X() : circuit (19)
     276                 :            : {
     277                 :          0 :   type = CIR_HBT_X;
     278                 :          0 : }
     279                 :            : 
     280                 :            : /* Initialization of model. */
     281                 :          0 : void HBT_X::initModel (void)
     282                 :            : {
     283                 :            :   // create internal nodes
     284                 :          0 :   setInternalNode (ei, "ei");
     285                 :          0 :   setInternalNode (bi, "bi");
     286                 :          0 :   setInternalNode (bii, "bii");
     287                 :          0 :   setInternalNode (ci, "ci");
     288                 :          0 :   setInternalNode (ex, "ex");
     289                 :          0 :   setInternalNode (exx, "exx");
     290                 :          0 :   setInternalNode (cx, "cx");
     291                 :          0 :   setInternalNode (ni, "ni");
     292                 :          0 :   setInternalNode (nii, "nii");
     293                 :          0 :   setInternalNode (niix, "niix");
     294                 :          0 :   setInternalNode (niii, "niii");
     295                 :          0 :   setInternalNode (niiix, "niiix");
     296                 :          0 :   setInternalNode (niv, "niv");
     297                 :          0 :   setInternalNode (nivx, "nivx");
     298                 :          0 :   setInternalNode (ti, "ti");
     299                 :            : 
     300                 :            :   // get device model parameters
     301                 :          0 :   loadVariables ();
     302                 :            :   // evaluate global model equations
     303                 :          0 :   initializeModel ();
     304                 :            :   // evaluate initial step equations
     305                 :          0 :   initialStep ();
     306                 :            :   // evaluate global instance equations
     307                 :          0 :   initializeInstance ();
     308                 :          0 : }
     309                 :            : 
     310                 :            : /* Initialization of DC analysis. */
     311                 :          0 : void HBT_X::initDC (void)
     312                 :            : {
     313                 :          0 :   allocMatrixMNA ();
     314                 :          0 :   initModel ();
     315                 :          0 :   pol = 1;
     316                 :          0 :   restartDC ();
     317                 :          0 :   doAC = 1;
     318                 :          0 :   doTR = 0;
     319                 :          0 :   doHB = 0;
     320                 :          0 : }
     321                 :            : 
     322                 :            : /* Run when DC is restarted (fallback algorithms). */
     323                 :          0 : void HBT_X::restartDC (void)
     324                 :            : {
     325                 :          0 : }
     326                 :            : 
     327                 :            : /* Initialize Verilog-AMS code. */
     328                 :          0 : void HBT_X::initVerilog (void)
     329                 :            : {
     330                 :            :   // initialization of noise variables
     331                 :          0 :   _white_pwr[nii][nii] = 0.0;
     332                 :          0 :   _white_pwr[cx][bii] = 0.0;
     333                 :          0 :   _white_pwr[exx][bii] = 0.0;
     334                 :          0 :   _white_pwr[ex][bii] = 0.0;
     335                 :          0 :   _white_pwr[c][ci] = 0.0;
     336                 :          0 :   _white_pwr[e][ei] = 0.0;
     337                 :          0 :   _white_pwr[b][bi] = 0.0;
     338                 :          0 :   _white_pwr[bii][bi] = 0.0;
     339                 :          0 :   _white_pwr[ni][ni] = 0.0;
     340                 :          0 :   _white_pwr[bii][ei] = 0.0;
     341                 :          0 :   _flicker_pwr[niv][niv] = 0.0;
     342                 :          0 :   _flicker_exp[niv][niv] = 0.0;
     343                 :          0 :   _flicker_pwr[niii][niii] = 0.0;
     344                 :          0 :   _flicker_exp[niii][niii] = 0.0;
     345                 :            : 
     346                 :            :   int i1, i2, i3, i4;
     347                 :            : 
     348                 :            :   // zero charges
     349         [ #  # ]:          0 :   for (i1 = 0; i1 < 19; i1++) {
     350         [ #  # ]:          0 :   for (i2 = 0; i2 < 19; i2++) {
     351                 :          0 :     _charges[i1][i2] = 0.0;
     352                 :            :   } }
     353                 :            : 
     354                 :            :   // zero capacitances
     355         [ #  # ]:          0 :   for (i1 = 0; i1 < 19; i1++) {
     356         [ #  # ]:          0 :   for (i2 = 0; i2 < 19; i2++) {
     357         [ #  # ]:          0 :   for (i3 = 0; i3 < 19; i3++) {
     358         [ #  # ]:          0 :   for (i4 = 0; i4 < 19; i4++) {
     359                 :          0 :     _caps[i1][i2][i3][i4] = 0.0;
     360                 :            :   } } } }
     361                 :            : 
     362                 :            :   // zero right hand side, static and dynamic jacobian
     363         [ #  # ]:          0 :   for (i1 = 0; i1 < 19; i1++) {
     364                 :          0 :     _rhs[i1] = 0.0;
     365                 :          0 :     _qhs[i1] = 0.0;
     366                 :          0 :     _chs[i1] = 0.0;
     367                 :          0 :     _ghs[i1] = 0.0;
     368         [ #  # ]:          0 :     for (i2 = 0; i2 < 19; i2++) {
     369                 :          0 :       _jstat[i1][i2] = 0.0;
     370                 :          0 :       _jdyna[i1][i2] = 0.0;
     371                 :            :     }
     372                 :            :   }
     373                 :          0 : }
     374                 :            : 
     375                 :            : /* Load device model input parameters. */
     376                 :          0 : void HBT_X::loadVariables (void)
     377                 :            : {
     378                 :          0 :   Mode = getPropertyInteger ("Mode");
     379                 :          0 :   Noise = getPropertyInteger ("Noise");
     380                 :          0 :   Debug = getPropertyInteger ("Debug");
     381                 :          0 :   DebugPlus = getPropertyInteger ("DebugPlus");
     382                 :          0 :   Temp = getPropertyDouble ("Temp");
     383                 :          0 :   Rth = getPropertyDouble ("Rth");
     384                 :          0 :   Cth = getPropertyDouble ("Cth");
     385                 :          0 :   N = getPropertyInteger ("N");
     386                 :          0 :   L = getPropertyDouble ("L");
     387                 :          0 :   W = getPropertyDouble ("W");
     388                 :          0 :   Jsf = getPropertyDouble ("Jsf");
     389                 :          0 :   nf = getPropertyDouble ("nf");
     390                 :          0 :   Vg = getPropertyDouble ("Vg");
     391                 :          0 :   Jse = getPropertyDouble ("Jse");
     392                 :          0 :   ne = getPropertyDouble ("ne");
     393                 :          0 :   Rbxx = getPropertyDouble ("Rbxx");
     394                 :          0 :   Vgb = getPropertyDouble ("Vgb");
     395                 :          0 :   Jsee = getPropertyDouble ("Jsee");
     396                 :          0 :   nee = getPropertyDouble ("nee");
     397                 :          0 :   Rbbxx = getPropertyDouble ("Rbbxx");
     398                 :          0 :   Vgbb = getPropertyDouble ("Vgbb");
     399                 :          0 :   Jsr = getPropertyDouble ("Jsr");
     400                 :          0 :   nr = getPropertyDouble ("nr");
     401                 :          0 :   Vgr = getPropertyDouble ("Vgr");
     402                 :          0 :   XCjc = getPropertyDouble ("XCjc");
     403                 :          0 :   Jsc = getPropertyDouble ("Jsc");
     404                 :          0 :   nc = getPropertyDouble ("nc");
     405                 :          0 :   Rcxx = getPropertyDouble ("Rcxx");
     406                 :          0 :   Vgc = getPropertyDouble ("Vgc");
     407                 :          0 :   Bf = getPropertyDouble ("Bf");
     408                 :          0 :   kBeta = getPropertyDouble ("kBeta");
     409                 :          0 :   Br = getPropertyDouble ("Br");
     410                 :          0 :   VAF = getPropertyDouble ("VAF");
     411                 :          0 :   VAR = getPropertyDouble ("VAR");
     412                 :          0 :   IKF = getPropertyDouble ("IKF");
     413                 :          0 :   IKR = getPropertyDouble ("IKR");
     414                 :          0 :   Mc = getPropertyDouble ("Mc");
     415                 :          0 :   BVceo = getPropertyDouble ("BVceo");
     416                 :          0 :   kc = getPropertyDouble ("kc");
     417                 :          0 :   BVebo = getPropertyDouble ("BVebo");
     418                 :          0 :   Tr = getPropertyDouble ("Tr");
     419                 :          0 :   Trx = getPropertyDouble ("Trx");
     420                 :          0 :   Tf = getPropertyDouble ("Tf");
     421                 :          0 :   Tft = getPropertyDouble ("Tft");
     422                 :          0 :   Thcs = getPropertyDouble ("Thcs");
     423                 :          0 :   Ahc = getPropertyDouble ("Ahc");
     424                 :          0 :   Cje = getPropertyDouble ("Cje");
     425                 :          0 :   mje = getPropertyDouble ("mje");
     426                 :          0 :   Vje = getPropertyDouble ("Vje");
     427                 :          0 :   Cjc = getPropertyDouble ("Cjc");
     428                 :          0 :   mjc = getPropertyDouble ("mjc");
     429                 :          0 :   Vjc = getPropertyDouble ("Vjc");
     430                 :          0 :   kjc = getPropertyDouble ("kjc");
     431                 :          0 :   Cmin = getPropertyDouble ("Cmin");
     432                 :          0 :   J0 = getPropertyDouble ("J0");
     433                 :          0 :   XJ0 = getPropertyDouble ("XJ0");
     434                 :          0 :   Rci0 = getPropertyDouble ("Rci0");
     435                 :          0 :   Jk = getPropertyDouble ("Jk");
     436                 :          0 :   RJk = getPropertyDouble ("RJk");
     437                 :          0 :   Vces = getPropertyDouble ("Vces");
     438                 :          0 :   Rc = getPropertyDouble ("Rc");
     439                 :          0 :   Re = getPropertyDouble ("Re");
     440                 :          0 :   Rb = getPropertyDouble ("Rb");
     441                 :          0 :   Rb2 = getPropertyDouble ("Rb2");
     442                 :          0 :   Lc = getPropertyDouble ("Lc");
     443                 :          0 :   Le = getPropertyDouble ("Le");
     444                 :          0 :   Lb = getPropertyDouble ("Lb");
     445                 :          0 :   Cq = getPropertyDouble ("Cq");
     446                 :          0 :   Cpb = getPropertyDouble ("Cpb");
     447                 :          0 :   Cpc = getPropertyDouble ("Cpc");
     448                 :          0 :   Kfb = getPropertyDouble ("Kfb");
     449                 :          0 :   Afb = getPropertyDouble ("Afb");
     450                 :          0 :   Ffeb = getPropertyDouble ("Ffeb");
     451                 :          0 :   Kb = getPropertyDouble ("Kb");
     452                 :          0 :   Ab = getPropertyDouble ("Ab");
     453                 :          0 :   Fb = getPropertyDouble ("Fb");
     454                 :          0 :   Kfe = getPropertyDouble ("Kfe");
     455                 :          0 :   Afe = getPropertyDouble ("Afe");
     456                 :          0 :   Ffee = getPropertyDouble ("Ffee");
     457                 :          0 :   Tnom = getPropertyDouble ("Tnom");
     458                 :          0 : }
     459                 :            : 
     460                 :            : /* #define's for translated code */
     461                 :            : #undef  _DDT
     462                 :            : #define _DDT(q) q
     463                 :            : #define _DYNAMIC
     464                 :            : #define _DERIVATE
     465                 :            : #define _DDX
     466                 :            : #define _DERIVATEFORDDX
     467                 :            : 
     468                 :            : /* Evaluate Verilog-AMS equations in model initialization. */
     469                 :          0 : void HBT_X::initializeModel (void)
     470                 :            : {
     471                 :          0 : }
     472                 :            : 
     473                 :            : /* Evaluate Verilog-AMS equations in instance initialization. */
     474                 :          0 : void HBT_X::initializeInstance (void)
     475                 :            : {
     476                 :          0 : }
     477                 :            : 
     478                 :            : /* Evaluate Verilog-AMS equations in initial step. */
     479                 :          0 : void HBT_X::initialStep (void)
     480                 :            : {
     481                 :          0 : }
     482                 :            : 
     483                 :            : /* Evaluate Verilog-AMS equations in final step. */
     484                 :          0 : void HBT_X::finalStep (void)
     485                 :            : {
     486                 :          0 : }
     487                 :            : 
     488                 :            : /* Evaluate Verilog-AMS equations in analog block. */
     489                 :          0 : void HBT_X::calcVerilog (void)
     490                 :            : {
     491                 :            : 
     492                 :            : /* ----------------- evaluate verilog analog equations -------------------- */
     493                 :            : double Inivx;
     494                 :            : #if defined(_DERIVATE)
     495                 :            : double Inivx_Vbii_ei;
     496                 :            : double Inivx_Tempti_GND;
     497                 :            : double Inivx_Vbii_ci;
     498                 :            : #endif
     499                 :            : double Iniiix;
     500                 :            : #if defined(_DERIVATE)
     501                 :            : double Iniiix_Vbii_ei;
     502                 :            : double Iniiix_Tempti_GND;
     503                 :            : double Iniiix_Vbii_ci;
     504                 :            : #endif
     505                 :            : double Iniix;
     506                 :            : #if defined(_DERIVATE)
     507                 :            : double Iniix_Vbii_ei;
     508                 :            : double Iniix_Tempti_GND;
     509                 :            : double Iniix_Vbii_ci;
     510                 :            : #endif
     511                 :            : #if defined(_DYNAMIC)
     512                 :            : double qbe;
     513                 :            : #if defined(_DERIVATE)
     514                 :            : double qbe_Vbii_ei;
     515                 :            : double qbe_Tempti_GND;
     516                 :            : double qbe_Vbii_ci;
     517                 :            : double qbe_Vci_ei;
     518                 :            : #endif
     519                 :            : #endif
     520                 :            : #if defined(_DYNAMIC)
     521                 :            : double qbtf;
     522                 :            : #if defined(_DERIVATE)
     523                 :            : double qbtf_Tempti_GND;
     524                 :            : double qbtf_Vbii_ei;
     525                 :            : double qbtf_Vbii_ci;
     526                 :            : #endif
     527                 :            : #endif
     528                 :            : #if defined(_DYNAMIC)
     529                 :            : double xtff;
     530                 :            : #if defined(_DERIVATE)
     531                 :            : double xtff_Vbii_ei;
     532                 :            : double xtff_Tempti_GND;
     533                 :            : double xtff_Vbii_ci;
     534                 :            : double xtff_Vci_ei;
     535                 :            : #endif
     536                 :            : #endif
     537                 :            : #if defined(_DYNAMIC)
     538                 :            : double Wh;
     539                 :            : #if defined(_DERIVATE)
     540                 :            : double Wh_Vci_ei;
     541                 :            : double Wh_Vbii_ei;
     542                 :            : double Wh_Tempti_GND;
     543                 :            : double Wh_Vbii_ci;
     544                 :            : #endif
     545                 :            : #endif
     546                 :            : #if defined(_DYNAMIC)
     547                 :            : double Ih;
     548                 :            : #if defined(_DERIVATE)
     549                 :            : double Ih_Vci_ei;
     550                 :            : double Ih_Vbii_ei;
     551                 :            : double Ih_Tempti_GND;
     552                 :            : double Ih_Vbii_ci;
     553                 :            : #endif
     554                 :            : #endif
     555                 :            : #if defined(_DYNAMIC)
     556                 :            : double AHC;
     557                 :            : #endif
     558                 :            : #if defined(_DYNAMIC)
     559                 :            : double RCIO;
     560                 :            : #endif
     561                 :            : #if defined(_DYNAMIC)
     562                 :            : double InvVpt;
     563                 :            : #endif
     564                 :            : #if defined(_DYNAMIC)
     565                 :            : double Vlim;
     566                 :            : #endif
     567                 :            : #if defined(_DYNAMIC)
     568                 :            : double qb2;
     569                 :            : #if defined(_DERIVATE)
     570                 :            : double qb2_Vbii_ei;
     571                 :            : double qb2_Tempti_GND;
     572                 :            : double qb2_Vbii_ci;
     573                 :            : #endif
     574                 :            : #endif
     575                 :            : #if defined(_DYNAMIC)
     576                 :            : double qbtra;
     577                 :            : #if defined(_DERIVATE)
     578                 :            : double qbtra_Vbi_ci;
     579                 :            : double qbtra_Tempti_GND;
     580                 :            : #endif
     581                 :            : #endif
     582                 :            : #if defined(_DYNAMIC)
     583                 :            : double qbtr;
     584                 :            : #if defined(_DERIVATE)
     585                 :            : double qbtr_Vbii_ci;
     586                 :            : double qbtr_Tempti_GND;
     587                 :            : double qbtr_Vbii_ei;
     588                 :            : #endif
     589                 :            : #endif
     590                 :            : #if defined(_DYNAMIC)
     591                 :            : double qb1;
     592                 :            : #if defined(_DERIVATE)
     593                 :            : double qb1_Vbi_ci;
     594                 :            : #endif
     595                 :            : #endif
     596                 :            : #if defined(_DYNAMIC)
     597                 :            : double xix;
     598                 :            : #if defined(_DERIVATE)
     599                 :            : double xix_Vbii_ei;
     600                 :            : double xix_Tempti_GND;
     601                 :            : double xix_Vbii_ci;
     602                 :            : #endif
     603                 :            : #endif
     604                 :            : #if defined(_DYNAMIC)
     605                 :            : double qb2med;
     606                 :            : #if defined(_DERIVATE)
     607                 :            : double qb2med_Vbii_ei;
     608                 :            : double qb2med_Tempti_GND;
     609                 :            : double qb2med_Vbii_ci;
     610                 :            : #endif
     611                 :            : #endif
     612                 :            : #if defined(_DYNAMIC)
     613                 :            : double I00;
     614                 :            : #endif
     615                 :            : double Ipdiss;
     616                 :            : #if defined(_DERIVATE)
     617                 :            : double Ipdiss_Vbii_ei;
     618                 :            : double Ipdiss_Tempti_GND;
     619                 :            : double Ipdiss_Vbii_ci;
     620                 :            : double Ipdiss_Vci_ei;
     621                 :            : double Ipdiss_Vbi_ci;
     622                 :            : #endif
     623                 :            : double Icdx;
     624                 :            : #if defined(_DERIVATE)
     625                 :            : double Icdx_Vcx_ci;
     626                 :            : double Icdx_Tempti_GND;
     627                 :            : #endif
     628                 :            : double Ibdxx;
     629                 :            : #if defined(_DERIVATE)
     630                 :            : double Ibdxx_Vexx_ei;
     631                 :            : double Ibdxx_Tempti_GND;
     632                 :            : #endif
     633                 :            : double Ibdx;
     634                 :            : #if defined(_DERIVATE)
     635                 :            : double Ibdx_Vex_ei;
     636                 :            : double Ibdx_Tempti_GND;
     637                 :            : #endif
     638                 :            : double Ib1;
     639                 :            : #if defined(_DERIVATE)
     640                 :            : double Ib1_Vbii_ei;
     641                 :            : double Ib1_Tempti_GND;
     642                 :            : double Ib1_Vbii_ci;
     643                 :            : #endif
     644                 :            : double Ib0;
     645                 :            : #if defined(_DERIVATE)
     646                 :            : double Ib0_Vbii_ei;
     647                 :            : double Ib0_Tempti_GND;
     648                 :            : double Ib0_Vbii_ci;
     649                 :            : #endif
     650                 :            : double EdBeta;
     651                 :            : #if defined(_DERIVATE)
     652                 :            : double EdBeta_Tempti_GND;
     653                 :            : double EdBeta_Vbii_ci;
     654                 :            : #endif
     655                 :            : double mm;
     656                 :            : #if defined(_DERIVATE)
     657                 :            : double mm_Vbii_ci;
     658                 :            : #endif
     659                 :            : double Vbclin;
     660                 :            : double epsi;
     661                 :            : double Ibx;
     662                 :            : #if defined(_DERIVATE)
     663                 :            : double Ibx_Vbi_ci;
     664                 :            : double Ibx_Tempti_GND;
     665                 :            : #endif
     666                 :            : double Ib2;
     667                 :            : #if defined(_DERIVATE)
     668                 :            : double Ib2_Vbii_ci;
     669                 :            : double Ib2_Tempti_GND;
     670                 :            : #endif
     671                 :            : double Ic1;
     672                 :            : #if defined(_DERIVATE)
     673                 :            : double Ic1_Vbii_ei;
     674                 :            : double Ic1_Tempti_GND;
     675                 :            : double Ic1_Vbii_ci;
     676                 :            : #endif
     677                 :            : double Ic1r;
     678                 :            : #if defined(_DERIVATE)
     679                 :            : double Ic1r_Vbii_ci;
     680                 :            : double Ic1r_Tempti_GND;
     681                 :            : double Ic1r_Vbii_ei;
     682                 :            : #endif
     683                 :            : double Ic0;
     684                 :            : #if defined(_DERIVATE)
     685                 :            : double Ic0_Vbii_ei;
     686                 :            : double Ic0_Tempti_GND;
     687                 :            : double Ic0_Vbii_ci;
     688                 :            : #endif
     689                 :            : double qb;
     690                 :            : #if defined(_DERIVATE)
     691                 :            : double qb_Vbii_ei;
     692                 :            : double qb_Vbii_ci;
     693                 :            : double qb_Tempti_GND;
     694                 :            : #endif
     695                 :            : double q2;
     696                 :            : #if defined(_DERIVATE)
     697                 :            : double q2_Vbii_ei;
     698                 :            : double q2_Tempti_GND;
     699                 :            : double q2_Vbii_ci;
     700                 :            : #endif
     701                 :            : double q1;
     702                 :            : #if defined(_DERIVATE)
     703                 :            : double q1_Vbii_ei;
     704                 :            : double q1_Vbii_ci;
     705                 :            : #endif
     706                 :            : double Ic1ra;
     707                 :            : #if defined(_DERIVATE)
     708                 :            : double Ic1ra_Vbii_ci;
     709                 :            : double Ic1ra_Tempti_GND;
     710                 :            : #endif
     711                 :            : double Ic0a;
     712                 :            : #if defined(_DERIVATE)
     713                 :            : double Ic0a_Vbii_ei;
     714                 :            : double Ic0a_Tempti_GND;
     715                 :            : #endif
     716                 :            : double TWO_Q;
     717                 :            : double FOUR_K;
     718                 :            : double Area;
     719                 :            : double Tex;
     720                 :            : #if defined(_DERIVATE)
     721                 :            : double Tex_Tempti_GND;
     722                 :            : #endif
     723                 :            : double TjK;
     724                 :            : #if defined(_DERIVATE)
     725                 :            : double TjK_Tempti_GND;
     726                 :            : #endif
     727                 :            : double Tj;
     728                 :            : #if defined(_DERIVATE)
     729                 :            : double Tj_Tempti_GND;
     730                 :            : #endif
     731                 :            : double Texi;
     732                 :            : #if defined(_DERIVATE)
     733                 :            : double Texi_Tempti_GND;
     734                 :            : #endif
     735                 :            : double vcei;
     736                 :            : #if defined(_DERIVATE)
     737                 :            : double vcei_Vci_ei;
     738                 :            : #endif
     739                 :            : double vxxe;
     740                 :            : #if defined(_DERIVATE)
     741                 :            : double vxxe_Vexx_ei;
     742                 :            : #endif
     743                 :            : double vxc;
     744                 :            : #if defined(_DERIVATE)
     745                 :            : double vxc_Vcx_ci;
     746                 :            : #endif
     747                 :            : double vxe;
     748                 :            : #if defined(_DERIVATE)
     749                 :            : double vxe_Vex_ei;
     750                 :            : #endif
     751                 :            : double vbei;
     752                 :            : #if defined(_DERIVATE)
     753                 :            : double vbei_Vbii_ei;
     754                 :            : #endif
     755                 :            : double vbci;
     756                 :            : #if defined(_DERIVATE)
     757                 :            : double vbci_Vbii_ci;
     758                 :            : #endif
     759                 :            : double vbcx;
     760                 :            : #if defined(_DERIVATE)
     761                 :            : double vbcx_Vbi_ci;
     762                 :            : #endif
     763                 :            : #if defined(_DERIVATE)
     764                 :          0 : vbcx_Vbi_ci=1.0;
     765                 :            : #endif
     766         [ #  # ]:          0 : vbcx=BP(bi,ci);
     767                 :            : #if defined(_DERIVATE)
     768                 :          0 : vbci_Vbii_ci=1.0;
     769                 :            : #endif
     770         [ #  # ]:          0 : vbci=BP(bii,ci);
     771                 :            : #if defined(_DERIVATE)
     772                 :          0 : vbei_Vbii_ei=1.0;
     773                 :            : #endif
     774         [ #  # ]:          0 : vbei=BP(bii,ei);
     775                 :            : #if defined(_DERIVATE)
     776                 :          0 : vxe_Vex_ei=1.0;
     777                 :            : #endif
     778         [ #  # ]:          0 : vxe=BP(ex,ei);
     779                 :            : #if defined(_DERIVATE)
     780                 :          0 : vxc_Vcx_ci=1.0;
     781                 :            : #endif
     782         [ #  # ]:          0 : vxc=BP(cx,ci);
     783                 :            : #if defined(_DERIVATE)
     784                 :          0 : vxxe_Vexx_ei=1.0;
     785                 :            : #endif
     786         [ #  # ]:          0 : vxxe=BP(exx,ei);
     787                 :            : #if defined(_DERIVATE)
     788                 :          0 : vcei_Vci_ei=1.0;
     789                 :            : #endif
     790         [ #  # ]:          0 : vcei=BP(ci,ei);
     791                 :            : #if defined(_DERIVATE)
     792                 :          0 : Texi_Tempti_GND=1.0;
     793                 :            : #endif
     794                 :          0 : Texi=NP(ti);
     795                 :            : #if defined(_DERIVATE)
     796                 :          0 : Tj_Tempti_GND=Texi_Tempti_GND;
     797                 :            : #endif
     798                 :          0 : Tj=(Texi+Temp);
     799                 :            : #if defined(_DERIVATE)
     800                 :          0 : TjK_Tempti_GND=Tj_Tempti_GND;
     801                 :            : #endif
     802                 :          0 : TjK=(Tj+273.15);
     803                 :            : #if defined(_DERIVATE)
     804                 :          0 : Tex_Tempti_GND=Tj_Tempti_GND;
     805                 :            : #endif
     806                 :          0 : Tex=(Tj-Tnom);
     807                 :          0 : Area=(((L*W)*1.0e12)*N);
     808                 :          0 : FOUR_K=(4*1.3806226e-23);
     809                 :          0 : TWO_Q=(2*1.6021918e-19);
     810                 :            : #if defined(_DERIVATE)
     811                 :          0 : 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);
     812                 :          0 : 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);
     813                 :            : #endif
     814                 :          0 : Ic0a=HBT_X_diode(vbei,Jsf,Vg,nf,Area,Tj,Tnom);
     815                 :            : #if defined(_DERIVATE)
     816                 :          0 : 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);
     817                 :          0 : 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);
     818                 :            : #endif
     819                 :          0 : Ic1ra=HBT_X_diode(vbci,(XCjc*Jsr),Vgr,nr,Area,Tj,Tnom);
     820 [ #  # ][ #  # ]:          0 : if
     821                 :            : ((VAF>0.0)&&(VAR>0.0))
     822                 :            : {
     823                 :            : #if defined(_DERIVATE)
     824                 :          0 : 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));
     825                 :          0 : 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));
     826                 :            : #endif
     827                 :          0 : 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));
     828                 :            : }
     829                 :            : else
     830                 :            : {
     831 [ #  # ][ #  # ]:          0 : if
     832                 :            : ((VAF>0.0)&&(VAR==0.0))
     833                 :            : {
     834                 :            : #if defined(_DERIVATE)
     835                 :          0 : q1_Vbii_ei=0.0;
     836                 :          0 : 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);
     837                 :            : #endif
     838                 :          0 : q1=(1.0+((HBT_X_charge(vbci,1.0,Vjc,mjc,1.0)-HBT_X_charge(0.0,1.0,Vjc,mjc,1.0))/VAF));
     839                 :            : }
     840                 :            : else
     841                 :            : {
     842 [ #  # ][ #  # ]:          0 : if
     843                 :            : ((VAF==0.0)&&(VAR>0.0))
     844                 :            : {
     845                 :            : #if defined(_DERIVATE)
     846                 :          0 : 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);
     847                 :          0 : q1_Vbii_ci=0.0;
     848                 :            : #endif
     849                 :          0 : 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));
     850                 :            : }
     851                 :            : else
     852                 :            : {
     853                 :            : #if defined(_DERIVATE)
     854                 :          0 : q1_Vbii_ei=0.0;
     855                 :          0 : q1_Vbii_ci=0.0;
     856                 :            : #endif
     857                 :          0 : q1=1.0;
     858                 :            : }
     859                 :            : }
     860                 :            : }
     861 [ #  # ][ #  # ]:          0 : if
     862                 :            : ((IKF>0.0)&&(IKR>0.0))
     863                 :            : {
     864                 :            : #if defined(_DERIVATE)
     865                 :          0 : q2_Vbii_ei=(Ic0a_Vbii_ei/(Area*IKF));
     866                 :          0 : q2_Tempti_GND=((Ic0a_Tempti_GND/(Area*IKF))+(Ic1ra_Tempti_GND/(Area*IKR)));
     867                 :          0 : q2_Vbii_ci=(Ic1ra_Vbii_ci/(Area*IKR));
     868                 :            : #endif
     869                 :          0 : q2=((Ic0a/(Area*IKF))+(Ic1ra/(Area*IKR)));
     870                 :            : }
     871                 :            : else
     872                 :            : {
     873 [ #  # ][ #  # ]:          0 : if
     874                 :            : ((IKF>0.0)&&(IKR==0.0))
     875                 :            : {
     876                 :            : #if defined(_DERIVATE)
     877                 :          0 : q2_Vbii_ei=(Ic0a_Vbii_ei/(Area*IKF));
     878                 :          0 : q2_Tempti_GND=(Ic0a_Tempti_GND/(Area*IKF));
     879                 :          0 : q2_Vbii_ci=0.0;
     880                 :            : #endif
     881                 :          0 : q2=(Ic0a/(Area*IKF));
     882                 :            : }
     883                 :            : else
     884                 :            : {
     885 [ #  # ][ #  # ]:          0 : if
     886                 :            : ((IKF==0.0)&&(IKR>0.0))
     887                 :            : {
     888                 :            : #if defined(_DERIVATE)
     889                 :          0 : q2_Vbii_ei=0.0;
     890                 :          0 : q2_Tempti_GND=(Ic1ra_Tempti_GND/(Area*IKR));
     891                 :          0 : q2_Vbii_ci=(Ic1ra_Vbii_ci/(Area*IKR));
     892                 :            : #endif
     893                 :          0 : q2=(Ic1ra/(Area*IKR));
     894                 :            : }
     895                 :            : else
     896                 :            : {
     897                 :            : #if defined(_DERIVATE)
     898                 :          0 : q2_Vbii_ei=0.0;
     899                 :          0 : q2_Tempti_GND=0.0;
     900                 :          0 : q2_Vbii_ci=0.0;
     901                 :            : #endif
     902                 :          0 : q2=0.0;
     903                 :            : }
     904                 :            : }
     905                 :            : }
     906                 :            : {
     907                 :          0 : double m00_sqrt(d00_sqrt0,((q1*q1)+(4.0*q2)))
     908                 :            : #if defined(_DERIVATE)
     909                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,((q1*q1)+(4.0*q2)))
     910                 :            : #endif
     911                 :            : #if defined(_DERIVATE)
     912                 :          0 : qb_Vbii_ei=((q1_Vbii_ei+(((q1_Vbii_ei*q1)+(q1*q1_Vbii_ei))+(4.0*q2_Vbii_ei))*d10_sqrt0)/2.0);
     913                 :          0 : qb_Vbii_ci=((q1_Vbii_ci+(((q1_Vbii_ci*q1)+(q1*q1_Vbii_ci))+(4.0*q2_Vbii_ci))*d10_sqrt0)/2.0);
     914                 :          0 : qb_Tempti_GND=((4.0*q2_Tempti_GND)*d10_sqrt0/2.0);
     915                 :            : #endif
     916                 :          0 : qb=((q1+d00_sqrt0)/2.0);
     917                 :            : }
     918                 :            : #if defined(_DERIVATE)
     919                 :          0 : Ic0_Vbii_ei=((Ic0a_Vbii_ei*qb-Ic0a*qb_Vbii_ei)/qb/qb);
     920                 :          0 : Ic0_Tempti_GND=((Ic0a_Tempti_GND*qb-Ic0a*qb_Tempti_GND)/qb/qb);
     921                 :          0 : Ic0_Vbii_ci=(-Ic0a*qb_Vbii_ci/qb/qb);
     922                 :            : #endif
     923                 :          0 : Ic0=(Ic0a/qb);
     924                 :            : #if defined(_DERIVATE)
     925                 :          0 : Ic1r_Vbii_ci=((Ic1ra_Vbii_ci*qb-Ic1ra*qb_Vbii_ci)/qb/qb);
     926                 :          0 : Ic1r_Tempti_GND=((Ic1ra_Tempti_GND*qb-Ic1ra*qb_Tempti_GND)/qb/qb);
     927                 :          0 : Ic1r_Vbii_ei=(-Ic1ra*qb_Vbii_ei/qb/qb);
     928                 :            : #endif
     929                 :          0 : Ic1r=(Ic1ra/qb);
     930                 :            : #if defined(_DERIVATE)
     931                 :          0 : Ic1_Vbii_ei=(Ic0_Vbii_ei-Ic1r_Vbii_ei);
     932                 :          0 : Ic1_Tempti_GND=(Ic0_Tempti_GND-Ic1r_Tempti_GND);
     933                 :          0 : Ic1_Vbii_ci=(Ic0_Vbii_ci-Ic1r_Vbii_ci);
     934                 :            : #endif
     935                 :          0 : Ic1=(Ic0-Ic1r);
     936                 :            : #if defined(_DERIVATE)
     937                 :          0 : 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);
     938                 :          0 : 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);
     939                 :            : #endif
     940                 :          0 : Ib2=(HBT_X_diode(vbci,(XCjc*Jsr),Vgr,nr,Area,Tj,Tnom)/Br);
     941                 :            : #if defined(_DERIVATE)
     942                 :          0 : 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);
     943                 :          0 : 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);
     944                 :            : #endif
     945                 :          0 : Ibx=(HBT_X_diode(vbcx,((1.0-XCjc)*Jsr),Vgr,nr,Area,Tj,Tnom)/Br);
     946                 :          0 : epsi=1.0e-6;
     947                 :            : {
     948                 :          0 : double m00_pow(d00_pow0,(1.0-epsi),(1/Mc))
     949                 :          0 : Vbclin=(BVceo*d00_pow0);
     950                 :            : }
     951                 :            : #if defined(_DERIVATE)
     952                 :          0 : 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);
     953                 :            : #endif
     954                 :          0 : mm=HBT_X_MM(vbci,BVceo,Mc,Vbclin,Bf,kc);
     955         [ #  # ]:          0 : if
     956                 :            : (mm>1.0)
     957                 :            : {
     958         [ #  # ]:          0 : if
     959                 :            : (kBeta>0.0)
     960                 :            : {
     961         [ #  # ]:          0 : if
     962                 :            : ((Bf-(kBeta*Tex))>1e-6)
     963                 :            : {
     964                 :            : #if defined(_DERIVATE)
     965                 :          0 : EdBeta_Tempti_GND=((-1*(-(kBeta*Tex_Tempti_GND))/(Bf-(kBeta*Tex))/(Bf-(kBeta*Tex)))/((kc*(mm-1))+1));
     966                 :          0 : 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));
     967                 :            : #endif
     968                 :          0 : EdBeta=(((1/(Bf-(kBeta*Tex)))-(kc*(mm-1)))/((kc*(mm-1))+1));
     969                 :            : }
     970                 :            : else
     971                 :            : {
     972                 :            : #if defined(_DERIVATE)
     973                 :          0 : EdBeta_Tempti_GND=0.0;
     974                 :          0 : 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));
     975                 :            : #endif
     976                 :          0 : EdBeta=((1e6-(kc*(mm-1)))/((kc*(mm-1))+1));
     977                 :            : }
     978                 :            : }
     979                 :            : else
     980                 :            : {
     981                 :            : #if defined(_DERIVATE)
     982                 :          0 : EdBeta_Tempti_GND=0.0;
     983                 :          0 : 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));
     984                 :            : #endif
     985                 :          0 : EdBeta=(((1/Bf)-(kc*(mm-1)))/((kc*(mm-1))+1));
     986                 :            : }
     987                 :            : }
     988                 :            : else
     989                 :            : {
     990         [ #  # ]:          0 : if
     991                 :            : (kBeta>0.0)
     992                 :            : {
     993         [ #  # ]:          0 : if
     994                 :            : ((Bf-(kBeta*Tex))>1e-6)
     995                 :            : {
     996                 :            : #if defined(_DERIVATE)
     997                 :          0 : EdBeta_Tempti_GND=(-1*(-(kBeta*Tex_Tempti_GND))/(Bf-(kBeta*Tex))/(Bf-(kBeta*Tex)));
     998                 :          0 : EdBeta_Vbii_ci=0.0;
     999                 :            : #endif
    1000                 :          0 : EdBeta=(1/(Bf-(kBeta*Tex)));
    1001                 :            : }
    1002                 :            : else
    1003                 :            : {
    1004                 :            : #if defined(_DERIVATE)
    1005                 :          0 : EdBeta_Tempti_GND=0.0;
    1006                 :          0 : EdBeta_Vbii_ci=0.0;
    1007                 :            : #endif
    1008                 :          0 : EdBeta=1e6;
    1009                 :            : }
    1010                 :            : }
    1011                 :            : else
    1012                 :            : {
    1013                 :            : #if defined(_DERIVATE)
    1014                 :          0 : EdBeta_Tempti_GND=0.0;
    1015                 :          0 : EdBeta_Vbii_ci=0.0;
    1016                 :            : #endif
    1017                 :          0 : EdBeta=(1/Bf);
    1018                 :            : }
    1019                 :            : }
    1020                 :            : #if defined(_DERIVATE)
    1021                 :          0 : Ib0_Vbii_ei=Ic0a_Vbii_ei*EdBeta;
    1022                 :          0 : Ib0_Tempti_GND=((Ic0a_Tempti_GND*EdBeta)+(Ic0a*EdBeta_Tempti_GND));
    1023                 :          0 : Ib0_Vbii_ci=(Ic0a*EdBeta_Vbii_ci);
    1024                 :            : #endif
    1025                 :          0 : Ib0=(Ic0a*EdBeta);
    1026         [ #  # ]:          0 : if
    1027                 :            : (BVebo>0)
    1028                 :            : {
    1029                 :            : #if defined(_DERIVATE)
    1030                 :          0 : 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));
    1031                 :          0 : 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));
    1032                 :          0 : 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));
    1033                 :            : #endif
    1034                 :          0 : Ib1=(Ib0-HBT_X_diode(((-BVebo)-vbei),Jsf,0.0,1.0,Area,0.0,0.0));
    1035                 :            : }
    1036                 :            : else
    1037                 :            : {
    1038                 :            : #if defined(_DERIVATE)
    1039                 :          0 : Ib1_Vbii_ei=Ib0_Vbii_ei;
    1040                 :          0 : Ib1_Tempti_GND=Ib0_Tempti_GND;
    1041                 :          0 : Ib1_Vbii_ci=Ib0_Vbii_ci;
    1042                 :            : #endif
    1043                 :          0 : Ib1=Ib0;
    1044                 :            : }
    1045 [ #  # ][ #  # ]:          0 : if
    1046                 :            : ((Jse>0.0)&&(ne>0))
    1047                 :            : {
    1048                 :            : #if defined(_DERIVATE)
    1049                 :          0 : 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);
    1050                 :          0 : 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);
    1051                 :            : #endif
    1052                 :          0 : Ibdx=HBT_X_diode(vxe,Jse,Vgb,ne,Area,Tj,Tnom);
    1053                 :            : }
    1054                 :            : else
    1055                 :            : {
    1056                 :            : #if defined(_DERIVATE)
    1057                 :          0 : Ibdx_Vex_ei=vxe_Vex_ei*1e-12;
    1058                 :          0 : Ibdx_Tempti_GND=0.0;
    1059                 :            : #endif
    1060                 :          0 : Ibdx=(vxe*1e-12);
    1061                 :            : }
    1062 [ #  # ][ #  # ]:          0 : if
    1063                 :            : ((Jsee>0.0)&&(nee>0))
    1064                 :            : {
    1065                 :            : #if defined(_DERIVATE)
    1066                 :          0 : 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);
    1067                 :          0 : 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);
    1068                 :            : #endif
    1069                 :          0 : Ibdxx=HBT_X_diode(vxxe,Jsee,Vgbb,nee,Area,Tj,Tnom);
    1070                 :            : }
    1071                 :            : else
    1072                 :            : {
    1073                 :            : #if defined(_DERIVATE)
    1074                 :          0 : Ibdxx_Vexx_ei=vxxe_Vexx_ei*1e-12;
    1075                 :          0 : Ibdxx_Tempti_GND=0.0;
    1076                 :            : #endif
    1077                 :          0 : Ibdxx=(vxxe*1e-12);
    1078                 :            : }
    1079 [ #  # ][ #  # ]:          0 : if
    1080                 :            : ((Jsc>0.0)&&(nc>0))
    1081                 :            : {
    1082                 :            : #if defined(_DERIVATE)
    1083                 :          0 : 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);
    1084                 :          0 : 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);
    1085                 :            : #endif
    1086                 :          0 : Icdx=HBT_X_diode(vxc,Jsc,Vgc,nc,Area,Tj,Tnom);
    1087                 :            : }
    1088                 :            : else
    1089                 :            : {
    1090                 :            : #if defined(_DERIVATE)
    1091                 :          0 : Icdx_Vcx_ci=vxc_Vcx_ci*1e-12;
    1092                 :          0 : Icdx_Tempti_GND=0.0;
    1093                 :            : #endif
    1094                 :          0 : Icdx=(vxc*1e-12);
    1095                 :            : }
    1096                 :            : #if defined(_DERIVATE)
    1097                 :          0 : Ipdiss_Vbii_ei=(Ic1_Vbii_ei*vcei+((Ib1_Vbii_ei*vbei)+(Ib1*vbei_Vbii_ei)));
    1098                 :          0 : Ipdiss_Tempti_GND=(((Ic1_Tempti_GND*vcei+Ib1_Tempti_GND*vbei)+Ib2_Tempti_GND*vbci)+Ibx_Tempti_GND*vbcx);
    1099                 :          0 : Ipdiss_Vbii_ci=((Ic1_Vbii_ci*vcei+Ib1_Vbii_ci*vbei)+((Ib2_Vbii_ci*vbci)+(Ib2*vbci_Vbii_ci)));
    1100                 :          0 : Ipdiss_Vci_ei=(Ic1*vcei_Vci_ei);
    1101                 :          0 : Ipdiss_Vbi_ci=((Ibx_Vbi_ci*vbcx)+(Ibx*vbcx_Vbi_ci));
    1102                 :            : #endif
    1103                 :          0 : Ipdiss=((((Ic1*vcei)+(Ib1*vbei))+(Ib2*vbci))+(Ibx*vbcx));
    1104         [ #  # ]:          0 : if
    1105                 :            : (Ipdiss<0.0)
    1106                 :            : {
    1107                 :            : #if defined(_DERIVATE)
    1108                 :          0 : Ipdiss_Vbii_ei=0.0;
    1109                 :          0 : Ipdiss_Tempti_GND=0.0;
    1110                 :          0 : Ipdiss_Vbii_ci=0.0;
    1111                 :          0 : Ipdiss_Vci_ei=0.0;
    1112                 :          0 : Ipdiss_Vbi_ci=0.0;
    1113                 :            : #endif
    1114                 :          0 : Ipdiss=0;
    1115                 :            : }
    1116                 :            : #if defined(_DYNAMIC)
    1117                 :          0 : I00=(J0*Area);
    1118                 :            : #endif
    1119                 :            : #ifdef _DYNAMIC
    1120 [ #  # ][ #  # ]:          0 : if
    1121                 :            : ((XCjc<1.0)&&(XCjc>0.0))
    1122                 :            : {
    1123                 :            : #ifdef _DYNAMIC
    1124 [ #  # ][ #  # ]:          0 : if
    1125                 :            : ((J0<=0.0)||(Ic0<0.0))
    1126                 :            : {
    1127                 :            : #if defined(_DYNAMIC)
    1128                 :            : #if defined(_DERIVATE)
    1129                 :          0 : qb2med_Vbii_ei=0.0;
    1130                 :          0 : qb2med_Tempti_GND=0.0;
    1131                 :          0 : 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));
    1132                 :            : #endif
    1133                 :          0 : qb2med=((XCjc*HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area))+(((XCjc*Area)*Cmin)*vbci));
    1134                 :            : #endif
    1135                 :            : }
    1136                 :            : else
    1137                 :            : {
    1138                 :            : #if defined(_DYNAMIC)
    1139                 :            : #if defined(_DERIVATE)
    1140                 :          0 : xix_Vbii_ei=(Ic0_Vbii_ei/I00);
    1141                 :          0 : xix_Tempti_GND=(Ic0_Tempti_GND/I00);
    1142                 :          0 : xix_Vbii_ci=(Ic0_Vbii_ci/I00);
    1143                 :            : #endif
    1144                 :          0 : xix=(Ic0/I00);
    1145                 :            : #endif
    1146                 :            : #if defined(_DYNAMIC)
    1147                 :            : {
    1148                 :          0 : double m00_tanh(d00_tanh0,xix)
    1149                 :            : #if defined(_DERIVATE)
    1150                 :          0 : double m10_tanh(d10_tanh0,d00_tanh0,xix)
    1151                 :            : #endif
    1152                 :            : #if defined(_DERIVATE)
    1153                 :          0 : 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)));
    1154                 :          0 : 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)));
    1155                 :          0 : 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));
    1156                 :            : #endif
    1157                 :          0 : 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));
    1158                 :            : }
    1159                 :            : #endif
    1160                 :          0 : }
    1161                 :            : #endif /* if (...) */
    1162                 :            : }
    1163                 :            : else
    1164                 :            : {
    1165                 :            : #ifdef _DYNAMIC
    1166 [ #  # ][ #  # ]:          0 : if
    1167                 :            : ((J0<0.0)||(Ic0<0.0))
    1168                 :            : {
    1169                 :            : #if defined(_DYNAMIC)
    1170                 :            : #if defined(_DERIVATE)
    1171                 :          0 : qb2med_Vbii_ei=0.0;
    1172                 :          0 : qb2med_Tempti_GND=0.0;
    1173                 :          0 : 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));
    1174                 :            : #endif
    1175                 :          0 : qb2med=(HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((Area*Cmin)*vbci));
    1176                 :            : #endif
    1177                 :            : }
    1178                 :            : else
    1179                 :            : {
    1180                 :            : #if defined(_DYNAMIC)
    1181                 :            : #if defined(_DERIVATE)
    1182                 :          0 : xix_Vbii_ei=(Ic0_Vbii_ei/I00);
    1183                 :          0 : xix_Tempti_GND=(Ic0_Tempti_GND/I00);
    1184                 :          0 : xix_Vbii_ci=(Ic0_Vbii_ci/I00);
    1185                 :            : #endif
    1186                 :          0 : xix=(Ic0/I00);
    1187                 :            : #endif
    1188                 :            : #if defined(_DYNAMIC)
    1189                 :            : {
    1190                 :          0 : double m00_tanh(d00_tanh0,xix)
    1191                 :            : #if defined(_DERIVATE)
    1192                 :          0 : double m10_tanh(d10_tanh0,d00_tanh0,xix)
    1193                 :            : #endif
    1194                 :            : #if defined(_DERIVATE)
    1195                 :          0 : 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)));
    1196                 :          0 : 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)));
    1197                 :          0 : 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));
    1198                 :            : #endif
    1199                 :          0 : qb2med=(((1.0-d00_tanh0)*(HBT_X_charge(vbci,(Cjc-Cmin),Vjc,mjc,Area)+((((1.0-XJ0)*Area)*Cmin)*vbci)))+(((XJ0*Area)*Cmin)*vbci));
    1200                 :            : }
    1201                 :            : #endif
    1202                 :            : }
    1203                 :            : #endif /* if (...) */
    1204                 :            : }
    1205                 :            : #endif /* if (...) */
    1206                 :            : #ifdef _DYNAMIC
    1207 [ #  # ][ #  # ]:          0 : if
    1208                 :            : ((XCjc<1.0)&&(XCjc>0.0))
    1209                 :            : {
    1210                 :            : #if defined(_DYNAMIC)
    1211                 :            : #if defined(_DERIVATE)
    1212                 :          0 : 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));
    1213                 :            : #endif
    1214                 :          0 : qb1=(((1.0-XCjc)*HBT_X_charge(vbcx,(Cjc-Cmin),Vjc,mjc,Area))+((((1.0-XCjc)*Area)*Cmin)*vbcx));
    1215                 :            : #endif
    1216                 :            : }
    1217                 :            : else
    1218                 :            : {
    1219                 :            : #if defined(_DYNAMIC)
    1220                 :            : #if defined(_DERIVATE)
    1221                 :          0 : qb1_Vbi_ci=0.0;
    1222                 :            : #endif
    1223                 :          0 : qb1=0.0;
    1224                 :            : #endif
    1225                 :            : }
    1226                 :            : #endif /* if (...) */
    1227                 :            : #if defined(_DYNAMIC)
    1228                 :            : #if defined(_DERIVATE)
    1229                 :          0 : qbtr_Vbii_ci=(Tr*Ic1r_Vbii_ci);
    1230                 :          0 : qbtr_Tempti_GND=(Tr*Ic1r_Tempti_GND);
    1231                 :          0 : qbtr_Vbii_ei=(Tr*Ic1r_Vbii_ei);
    1232                 :            : #endif
    1233                 :          0 : qbtr=(Tr*Ic1r);
    1234                 :            : #endif
    1235                 :            : #if defined(_DYNAMIC)
    1236                 :            : #if defined(_DERIVATE)
    1237                 :          0 : qbtra_Vbi_ci=(Trx*Ibx_Vbi_ci);
    1238                 :          0 : qbtra_Tempti_GND=(Trx*Ibx_Tempti_GND);
    1239                 :            : #endif
    1240                 :          0 : qbtra=(Trx*Ibx);
    1241                 :            : #endif
    1242                 :            : #if defined(_DYNAMIC)
    1243                 :            : #if defined(_DERIVATE)
    1244                 :          0 : qb2_Vbii_ei=(qb2med_Vbii_ei+qbtr_Vbii_ei);
    1245                 :          0 : qb2_Tempti_GND=(qb2med_Tempti_GND+qbtr_Tempti_GND);
    1246                 :          0 : qb2_Vbii_ci=(qb2med_Vbii_ci+qbtr_Vbii_ci);
    1247                 :            : #endif
    1248                 :          0 : qb2=(qb2med+qbtr);
    1249                 :            : #endif
    1250                 :            : #ifdef _DYNAMIC
    1251 [ #  # ][ #  # ]:          0 : if
    1252                 :            : ((Jk>0.0)&&(Rci0>0.0))
    1253                 :            : {
    1254                 :            : #ifdef _DYNAMIC
    1255         [ #  # ]:          0 : if
    1256                 :            : (RJk>0.0)
    1257                 :            : {
    1258                 :            : #if defined(_DYNAMIC)
    1259                 :          0 : Vlim=((Jk*Rci0)/(1.0-(Rci0/RJk)));
    1260                 :            : #endif
    1261                 :            : #if defined(_DYNAMIC)
    1262                 :          0 : InvVpt=((1.0-(Rci0/RJk))/(Jk*RJk));
    1263                 :            : #endif
    1264                 :            : }
    1265                 :            : else
    1266                 :            : {
    1267                 :            : #if defined(_DYNAMIC)
    1268                 :          0 : Vlim=((Jk*Rci0)/1.016);
    1269                 :            : #endif
    1270                 :            : #if defined(_DYNAMIC)
    1271                 :          0 : InvVpt=0.0;
    1272                 :            : #endif
    1273                 :            : }
    1274                 :            : #endif /* if (...) */
    1275                 :            : }
    1276                 :            : #endif /* if (...) */
    1277                 :            : #ifdef _DYNAMIC
    1278 [ #  # ][ #  # ]:          0 : if
         [ #  # ][ #  # ]
    1279                 :            : ((((Thcs>0.0)&&(Ahc>0.0))&&(Jk>0.0))&&(Ic0>0.0))
    1280                 :            : {
    1281                 :            : #if defined(_DYNAMIC)
    1282                 :          0 : RCIO=(Rci0/Area);
    1283                 :            : #endif
    1284                 :            : #if defined(_DYNAMIC)
    1285                 :          0 : AHC=(Area*Ahc);
    1286                 :            : #endif
    1287                 :            : #ifdef _DYNAMIC
    1288 [ #  # ][ #  # ]:          0 : if
    1289                 :            : ((Rci0<RJk)||(RJk<=0.0))
    1290                 :            : {
    1291                 :            : #if defined(_DYNAMIC)
    1292                 :            : #if defined(_DERIVATE)
    1293                 :          0 : Ih_Vci_ei=(-(HBT_X_d_ICK(vcei,RCIO,Vlim,InvVpt,Vces,vcei_Vci_ei,0.0,0.0,0.0,0.0)/Ic0));
    1294                 :          0 : 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));
    1295                 :          0 : 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));
    1296                 :          0 : 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));
    1297                 :            : #endif
    1298                 :          0 : Ih=(1.0-(HBT_X_ICK(vcei,RCIO,Vlim,InvVpt,Vces)/Ic0));
    1299                 :            : #endif
    1300                 :            : }
    1301                 :            : else
    1302                 :            : {
    1303                 :            : #if defined(_DYNAMIC)
    1304                 :            : #if defined(_DERIVATE)
    1305                 :          0 : Ih_Vci_ei=(-(HBT_X_d_Vceff(vcei,Vces,vcei_Vci_ei,0.0)/(RCIO*Ic0)));
    1306                 :          0 : 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)));
    1307                 :          0 : 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)));
    1308                 :          0 : 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)));
    1309                 :            : #endif
    1310                 :          0 : Ih=(1.0-(HBT_X_Vceff(vcei,Vces)/(RCIO*Ic0)));
    1311                 :            : #endif
    1312                 :            : }
    1313                 :            : #endif /* if (...) */
    1314                 :            : #if defined(_DYNAMIC)
    1315                 :            : {
    1316                 :          0 : double m00_sqrt(d00_sqrt0,((Ih*Ih)+AHC))
    1317                 :          0 : double m00_sqrt(d00_sqrt1,(1.0+AHC))
    1318                 :            : #if defined(_DERIVATE)
    1319                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,((Ih*Ih)+AHC))
    1320                 :            : #endif
    1321                 :            : #if defined(_DERIVATE)
    1322                 :          0 : Wh_Vci_ei=((Ih_Vci_ei+((Ih_Vci_ei*Ih)+(Ih*Ih_Vci_ei))*d10_sqrt0)/(1.0+d00_sqrt1));
    1323                 :          0 : Wh_Vbii_ei=((Ih_Vbii_ei+((Ih_Vbii_ei*Ih)+(Ih*Ih_Vbii_ei))*d10_sqrt0)/(1.0+d00_sqrt1));
    1324                 :          0 : Wh_Tempti_GND=((Ih_Tempti_GND+((Ih_Tempti_GND*Ih)+(Ih*Ih_Tempti_GND))*d10_sqrt0)/(1.0+d00_sqrt1));
    1325                 :          0 : Wh_Vbii_ci=((Ih_Vbii_ci+((Ih_Vbii_ci*Ih)+(Ih*Ih_Vbii_ci))*d10_sqrt0)/(1.0+d00_sqrt1));
    1326                 :            : #endif
    1327                 :          0 : Wh=((Ih+d00_sqrt0)/(1.0+d00_sqrt1));
    1328                 :            : }
    1329                 :            : #endif
    1330                 :            : #if defined(_DYNAMIC)
    1331                 :            : #if defined(_DERIVATE)
    1332                 :          0 : xtff_Vbii_ei=(((Thcs*Ic0_Vbii_ei)*(Wh*Wh))+((Thcs*Ic0)*((Wh_Vbii_ei*Wh)+(Wh*Wh_Vbii_ei))));
    1333                 :          0 : xtff_Tempti_GND=(((Thcs*Ic0_Tempti_GND)*(Wh*Wh))+((Thcs*Ic0)*((Wh_Tempti_GND*Wh)+(Wh*Wh_Tempti_GND))));
    1334                 :          0 : xtff_Vbii_ci=(((Thcs*Ic0_Vbii_ci)*(Wh*Wh))+((Thcs*Ic0)*((Wh_Vbii_ci*Wh)+(Wh*Wh_Vbii_ci))));
    1335                 :          0 : xtff_Vci_ei=((Thcs*Ic0)*((Wh_Vci_ei*Wh)+(Wh*Wh_Vci_ei)));
    1336                 :            : #endif
    1337                 :          0 : xtff=((Thcs*Ic0)*(Wh*Wh));
    1338                 :            : #endif
    1339                 :            : }
    1340                 :            : else
    1341                 :            : {
    1342                 :            : #if defined(_DYNAMIC)
    1343                 :            : #if defined(_DERIVATE)
    1344                 :          0 : xtff_Vbii_ei=0.0;
    1345                 :          0 : xtff_Tempti_GND=0.0;
    1346                 :          0 : xtff_Vbii_ci=0.0;
    1347                 :          0 : xtff_Vci_ei=0.0;
    1348                 :            : #endif
    1349                 :          0 : xtff=0;
    1350                 :            : #endif
    1351                 :            : }
    1352                 :            : #endif /* if (...) */
    1353                 :            : #if defined(_DYNAMIC)
    1354                 :            : #if defined(_DERIVATE)
    1355                 :          0 : qbtf_Tempti_GND=(((Tft*Tex_Tempti_GND)*Ic0)+((Tf+(Tft*Tex))*Ic0_Tempti_GND));
    1356                 :          0 : qbtf_Vbii_ei=((Tf+(Tft*Tex))*Ic0_Vbii_ei);
    1357                 :          0 : qbtf_Vbii_ci=((Tf+(Tft*Tex))*Ic0_Vbii_ci);
    1358                 :            : #endif
    1359                 :          0 : qbtf=((Tf+(Tft*Tex))*Ic0);
    1360                 :            : #endif
    1361                 :            : #if defined(_DYNAMIC)
    1362                 :            : #if defined(_DERIVATE)
    1363                 :          0 : 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));
    1364                 :          0 : 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));
    1365                 :          0 : 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));
    1366                 :          0 : 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));
    1367                 :            : #endif
    1368                 :          0 : qbe=((xtff+qbtf)+HBT_X_charge(vbei,Cje,Vje,mje,Area));
    1369                 :            : #endif
    1370                 :          0 : _load_static_residual2(bi,ci,Ibx);
    1371                 :            : #if defined(_DERIVATE)
    1372         [ #  # ]:          0 : _load_static_jacobian2s(bi,ci,ti,Ibx_Tempti_GND);
    1373 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(bi,ci,bi,ci,Ibx_Vbi_ci);
         [ #  # ][ #  # ]
                 [ #  # ]
    1374                 :            : #endif
    1375                 :            : #if defined(_DYNAMIC)
    1376 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(bi,ci,_DDT((qb1+qbtra)));
    1377                 :            : #if defined(_DERIVATE)
    1378 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(bi,ci,ti,qbtra_Tempti_GND);
                 [ #  # ]
    1379 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(bi,ci,bi,ci,(qb1_Vbi_ci+qbtra_Vbi_ci));
         [ #  # ][ #  # ]
                 [ #  # ]
    1380                 :            : #endif
    1381                 :            : #endif
    1382                 :          0 : _load_static_residual2(bii,ci,Ib2);
    1383                 :            : #if defined(_DERIVATE)
    1384         [ #  # ]:          0 : _load_static_jacobian2s(bii,ci,ti,Ib2_Tempti_GND);
    1385 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(bii,ci,bii,ci,Ib2_Vbii_ci);
         [ #  # ][ #  # ]
                 [ #  # ]
    1386                 :            : #endif
    1387                 :            : #if defined(_DYNAMIC)
    1388 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(bii,ci,_DDT(qb2));
    1389                 :            : #if defined(_DERIVATE)
    1390 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(bii,ci,bii,ci,qb2_Vbii_ci);
         [ #  # ][ #  # ]
                 [ #  # ]
    1391 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(bii,ci,ti,qb2_Tempti_GND);
                 [ #  # ]
    1392 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(bii,ci,bii,ei,qb2_Vbii_ei);
         [ #  # ][ #  # ]
                 [ #  # ]
    1393                 :            : #endif
    1394                 :            : #endif
    1395                 :          0 : _load_static_residual2(bii,ei,Ib1);
    1396                 :            : #if defined(_DERIVATE)
    1397 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(bii,ei,bii,ci,Ib1_Vbii_ci);
         [ #  # ][ #  # ]
                 [ #  # ]
    1398         [ #  # ]:          0 : _load_static_jacobian2s(bii,ei,ti,Ib1_Tempti_GND);
    1399 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(bii,ei,bii,ei,Ib1_Vbii_ei);
         [ #  # ][ #  # ]
                 [ #  # ]
    1400                 :            : #endif
    1401                 :            : #if defined(_DYNAMIC)
    1402 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(bii,ei,_DDT(qbe));
    1403                 :            : #if defined(_DERIVATE)
    1404 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(bii,ei,ci,ei,qbe_Vci_ei);
         [ #  # ][ #  # ]
                 [ #  # ]
    1405 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(bii,ei,bii,ci,qbe_Vbii_ci);
         [ #  # ][ #  # ]
                 [ #  # ]
    1406 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(bii,ei,ti,qbe_Tempti_GND);
                 [ #  # ]
    1407 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(bii,ei,bii,ei,qbe_Vbii_ei);
         [ #  # ][ #  # ]
                 [ #  # ]
    1408                 :            : #endif
    1409                 :            : #endif
    1410                 :          0 : _load_static_residual2(ci,ei,Ic1);
    1411                 :            : #if defined(_DERIVATE)
    1412 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(ci,ei,bii,ci,Ic1_Vbii_ci);
         [ #  # ][ #  # ]
                 [ #  # ]
    1413         [ #  # ]:          0 : _load_static_jacobian2s(ci,ei,ti,Ic1_Tempti_GND);
    1414 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(ci,ei,bii,ei,Ic1_Vbii_ei);
         [ #  # ][ #  # ]
                 [ #  # ]
    1415                 :            : #endif
    1416                 :          0 : _load_static_residual2(ex,ei,Ibdx);
    1417                 :            : #if defined(_DERIVATE)
    1418         [ #  # ]:          0 : _load_static_jacobian2s(ex,ei,ti,Ibdx_Tempti_GND);
    1419 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(ex,ei,ex,ei,Ibdx_Vex_ei);
         [ #  # ][ #  # ]
                 [ #  # ]
    1420                 :            : #endif
    1421                 :          0 : _load_static_residual2(exx,ei,Ibdxx);
    1422                 :            : #if defined(_DERIVATE)
    1423         [ #  # ]:          0 : _load_static_jacobian2s(exx,ei,ti,Ibdxx_Tempti_GND);
    1424 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(exx,ei,exx,ei,Ibdxx_Vexx_ei);
         [ #  # ][ #  # ]
                 [ #  # ]
    1425                 :            : #endif
    1426                 :          0 : _load_static_residual2(cx,ci,Icdx);
    1427                 :            : #if defined(_DERIVATE)
    1428         [ #  # ]:          0 : _load_static_jacobian2s(cx,ci,ti,Icdx_Tempti_GND);
    1429 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(cx,ci,cx,ci,Icdx_Vcx_ci);
         [ #  # ][ #  # ]
                 [ #  # ]
    1430                 :            : #endif
    1431                 :          0 : _save_whitenoise2(bii,ei,(TWO_Q*Ib1),"Ib");
    1432                 :          0 : _load_static_residual1(ni,NP(ni));
    1433                 :            : #if defined(_DERIVATE)
    1434         [ #  # ]:          0 : _load_static_jacobian1(ni,ni,1.0);
    1435                 :            : #endif
    1436                 :          0 : _save_whitenoise1(ni,(TWO_Q*Ic0),"Ic");
    1437                 :          0 : _load_static_residual2(bii,ei,NP(ni));
    1438                 :            : #if defined(_DERIVATE)
    1439         [ #  # ]:          0 : _load_static_jacobian2s(bii,ei,ni,1.0);
    1440                 :            : #endif
    1441                 :          0 : _load_static_residual2(bii,ci,NP(ni));
    1442                 :            : #if defined(_DERIVATE)
    1443         [ #  # ]:          0 : _load_static_jacobian2s(bii,ci,ni,1.0);
    1444                 :            : #endif
    1445 [ #  # ][ #  # ]:          0 : _load_static_residual2(bii,bi,(BP(bii,bi)/(Rb2/N)));
    1446                 :            : #if defined(_DERIVATE)
    1447 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(bii,bi,bii,bi,(1/(Rb2/N)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1448                 :            : #endif
    1449                 :          0 : _save_whitenoise2(bii,bi,((FOUR_K*TjK)/(Rb2/N)),"thermal");
    1450 [ #  # ][ #  # ]:          0 : _load_static_residual2(b,bi,(BP(b,bi)/(Rb/N)));
    1451                 :            : #if defined(_DERIVATE)
    1452 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(b,bi,b,bi,(1/(Rb/N)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1453                 :            : #endif
    1454                 :          0 : _save_whitenoise2(b,bi,((FOUR_K*TjK)/(Rb/N)),"thermal");
    1455 [ #  # ][ #  # ]:          0 : _load_static_residual2(e,ei,(BP(e,ei)/(Re/N)));
    1456                 :            : #if defined(_DERIVATE)
    1457 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(e,ei,e,ei,(1/(Re/N)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1458                 :            : #endif
    1459                 :          0 : _save_whitenoise2(e,ei,((FOUR_K*TjK)/(Re/N)),"thermal");
    1460 [ #  # ][ #  # ]:          0 : _load_static_residual2(c,ci,(BP(c,ci)/(Rc/N)));
    1461                 :            : #if defined(_DERIVATE)
    1462 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(c,ci,c,ci,(1/(Rc/N)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1463                 :            : #endif
    1464                 :          0 : _save_whitenoise2(c,ci,((FOUR_K*TjK)/(Rc/N)),"thermal");
    1465 [ #  # ][ #  # ]:          0 : if
    1466                 :            : ((Jse>0.0)&&(ne>0))
    1467                 :            : {
    1468 [ #  # ][ #  # ]:          0 : _load_static_residual2(ex,bii,(BP(ex,bii)/(Rbxx/N)));
    1469                 :            : #if defined(_DERIVATE)
    1470 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(ex,bii,ex,bii,(1/(Rbxx/N)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1471                 :            : #endif
    1472                 :          0 : _save_whitenoise2(ex,bii,((FOUR_K*TjK)/(Rbxx/N)),"thermal");
    1473                 :            : }
    1474                 :            : else
    1475                 :            : {
    1476 [ #  # ][ #  # ]:          0 : _load_static_residual2(ex,bii,(BP(ex,bii)*1e-12));
    1477                 :            : #if defined(_DERIVATE)
    1478 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(ex,bii,ex,bii,(1e-12));
         [ #  # ][ #  # ]
                 [ #  # ]
    1479                 :            : #endif
    1480                 :            : }
    1481 [ #  # ][ #  # ]:          0 : if
    1482                 :            : ((Jsee>0.0)&&(nee>0))
    1483                 :            : {
    1484 [ #  # ][ #  # ]:          0 : _load_static_residual2(exx,bii,(BP(exx,bii)/(Rbbxx/N)));
    1485                 :            : #if defined(_DERIVATE)
    1486 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(exx,bii,exx,bii,(1/(Rbbxx/N)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1487                 :            : #endif
    1488                 :          0 : _save_whitenoise2(exx,bii,((FOUR_K*TjK)/(Rbbxx/N)),"thermal");
    1489                 :            : }
    1490                 :            : else
    1491                 :            : {
    1492 [ #  # ][ #  # ]:          0 : _load_static_residual2(exx,bii,(BP(exx,bii)*1e-12));
    1493                 :            : #if defined(_DERIVATE)
    1494 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(exx,bii,exx,bii,(1e-12));
         [ #  # ][ #  # ]
                 [ #  # ]
    1495                 :            : #endif
    1496                 :            : }
    1497 [ #  # ][ #  # ]:          0 : if
    1498                 :            : ((Jsc>0.0)&&(nc>0))
    1499                 :            : {
    1500 [ #  # ][ #  # ]:          0 : _load_static_residual2(cx,bii,(BP(cx,bii)/(Rcxx/N)));
    1501                 :            : #if defined(_DERIVATE)
    1502 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(cx,bii,cx,bii,(1/(Rcxx/N)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1503                 :            : #endif
    1504                 :          0 : _save_whitenoise2(cx,bii,((FOUR_K*TjK)/(Rcxx/N)),"thermal");
    1505                 :            : }
    1506                 :            : else
    1507                 :            : {
    1508 [ #  # ][ #  # ]:          0 : _load_static_residual2(cx,bii,(BP(cx,bii)*1e-12));
    1509                 :            : #if defined(_DERIVATE)
    1510 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(cx,bii,cx,bii,(1e-12));
         [ #  # ][ #  # ]
                 [ #  # ]
    1511                 :            : #endif
    1512                 :            : }
    1513                 :            : #if defined(_DYNAMIC)
    1514 [ #  # ][ #  # ]:          0 : _load_dynamic_residual1(b,_DDT((Cpb*NP(b))));
    1515                 :            : #if defined(_DERIVATE)
    1516 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian1(b,b,(Cpb));
                 [ #  # ]
    1517                 :            : #endif
    1518                 :            : #endif
    1519                 :            : #if defined(_DYNAMIC)
    1520 [ #  # ][ #  # ]:          0 : _load_dynamic_residual1(c,_DDT((Cpc*NP(c))));
    1521                 :            : #if defined(_DERIVATE)
    1522 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian1(c,c,(Cpc));
                 [ #  # ]
    1523                 :            : #endif
    1524                 :            : #endif
    1525                 :            : #if defined(_DYNAMIC)
    1526 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(b,c,_DDT((Cq*BP(b,c))));
         [ #  # ][ #  # ]
                 [ #  # ]
    1527                 :            : #if defined(_DERIVATE)
    1528 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(b,c,b,c,(Cq));
         [ #  # ][ #  # ]
                 [ #  # ]
    1529                 :            : #endif
    1530                 :            : #endif
    1531                 :          0 : _load_static_residual1(ti,(-Ipdiss));
    1532                 :            : #if defined(_DERIVATE)
    1533 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(ti,bi,ci,(-Ipdiss_Vbi_ci));
                 [ #  # ]
    1534 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(ti,ci,ei,(-Ipdiss_Vci_ei));
                 [ #  # ]
    1535 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(ti,bii,ci,(-Ipdiss_Vbii_ci));
                 [ #  # ]
    1536         [ #  # ]:          0 : _load_static_jacobian1(ti,ti,(-Ipdiss_Tempti_GND));
    1537 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(ti,bii,ei,(-Ipdiss_Vbii_ei));
                 [ #  # ]
    1538                 :            : #endif
    1539         [ #  # ]:          0 : if
    1540                 :            : (Rth)
    1541                 :            : {
    1542 [ #  # ][ #  # ]:          0 : _load_static_residual2(t,ti,(BP(t,ti)/Rth));
    1543                 :            : #if defined(_DERIVATE)
    1544 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(t,ti,t,ti,(1/Rth));
         [ #  # ][ #  # ]
                 [ #  # ]
    1545                 :            : #endif
    1546                 :            : #if defined(_DYNAMIC)
    1547 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(t,ti,(Cth*_DDT(BP(t,ti))));
         [ #  # ][ #  # ]
                 [ #  # ]
    1548                 :            : #if defined(_DERIVATE)
    1549 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(t,ti,t,ti,(Cth));
         [ #  # ][ #  # ]
                 [ #  # ]
    1550                 :            : #endif
    1551                 :            : #endif
    1552                 :            : }
    1553                 :            : else
    1554                 :            : {
    1555 [ #  # ][ #  # ]:          0 : _load_static_residual2(t,ti,(BP(t,ti)*1e3));
    1556                 :            : #if defined(_DERIVATE)
    1557 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(t,ti,t,ti,(1e3));
         [ #  # ][ #  # ]
                 [ #  # ]
    1558                 :            : #endif
    1559                 :            : }
    1560         [ #  # ]:          0 : if
    1561                 :            : (Ib0<=0)
    1562                 :            : {
    1563                 :            : #if defined(_DERIVATE)
    1564                 :          0 : Iniix_Vbii_ei=0.0;
    1565                 :          0 : Iniix_Tempti_GND=0.0;
    1566                 :          0 : Iniix_Vbii_ci=0.0;
    1567                 :            : #endif
    1568                 :          0 : Iniix=0;
    1569                 :            : #if defined(_DERIVATE)
    1570                 :          0 : Iniiix_Vbii_ei=0.0;
    1571                 :          0 : Iniiix_Tempti_GND=0.0;
    1572                 :          0 : Iniiix_Vbii_ci=0.0;
    1573                 :            : #endif
    1574                 :          0 : Iniiix=0;
    1575                 :            : }
    1576         [ #  # ]:          0 : if
    1577                 :            : ((Ib0+Ic1)<=0)
    1578                 :            : {
    1579                 :            : #if defined(_DERIVATE)
    1580                 :          0 : Inivx_Vbii_ei=0.0;
    1581                 :          0 : Inivx_Tempti_GND=0.0;
    1582                 :          0 : Inivx_Vbii_ci=0.0;
    1583                 :            : #endif
    1584                 :          0 : Inivx=0;
    1585                 :            : }
    1586                 :            : else
    1587                 :            : {
    1588         [ #  # ]:          0 : if
    1589                 :            : (Ab==2)
    1590                 :            : {
    1591                 :            : #if defined(_DERIVATE)
    1592                 :          0 : Iniix_Vbii_ei=Ib0_Vbii_ei;
    1593                 :          0 : Iniix_Tempti_GND=Ib0_Tempti_GND;
    1594                 :          0 : Iniix_Vbii_ci=Ib0_Vbii_ci;
    1595                 :            : #endif
    1596                 :          0 : Iniix=Ib0;
    1597                 :            : }
    1598                 :            : else
    1599                 :            : {
    1600                 :            : {
    1601                 :          0 : double m00_pow(d00_pow0,Ib0,(Ab*0.5))
    1602                 :            : #if defined(_DERIVATE)
    1603         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Ib0,(Ab*0.5))
    1604                 :            : #endif
    1605                 :            : #if defined(_DERIVATE)
    1606                 :          0 : Iniix_Vbii_ei=(d10_pow0*Ib0_Vbii_ei);
    1607                 :          0 : Iniix_Tempti_GND=(d10_pow0*Ib0_Tempti_GND);
    1608                 :          0 : Iniix_Vbii_ci=(d10_pow0*Ib0_Vbii_ci);
    1609                 :            : #endif
    1610                 :          0 : Iniix=d00_pow0;
    1611                 :            : }
    1612                 :            : }
    1613         [ #  # ]:          0 : if
    1614                 :            : (Afb==2)
    1615                 :            : {
    1616                 :            : #if defined(_DERIVATE)
    1617                 :          0 : Iniiix_Vbii_ei=Ib0_Vbii_ei;
    1618                 :          0 : Iniiix_Tempti_GND=Ib0_Tempti_GND;
    1619                 :          0 : Iniiix_Vbii_ci=Ib0_Vbii_ci;
    1620                 :            : #endif
    1621                 :          0 : Iniiix=Ib0;
    1622                 :            : }
    1623                 :            : else
    1624                 :            : {
    1625                 :            : {
    1626                 :          0 : double m00_pow(d00_pow0,Ib0,(Afb*0.5))
    1627                 :            : #if defined(_DERIVATE)
    1628         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Ib0,(Afb*0.5))
    1629                 :            : #endif
    1630                 :            : #if defined(_DERIVATE)
    1631                 :          0 : Iniiix_Vbii_ei=(d10_pow0*Ib0_Vbii_ei);
    1632                 :          0 : Iniiix_Tempti_GND=(d10_pow0*Ib0_Tempti_GND);
    1633                 :          0 : Iniiix_Vbii_ci=(d10_pow0*Ib0_Vbii_ci);
    1634                 :            : #endif
    1635                 :          0 : Iniiix=d00_pow0;
    1636                 :            : }
    1637                 :            : }
    1638         [ #  # ]:          0 : if
    1639                 :            : (Afe==2)
    1640                 :            : {
    1641                 :            : #if defined(_DERIVATE)
    1642                 :          0 : Inivx_Vbii_ei=(Ib0_Vbii_ei+Ic1_Vbii_ei);
    1643                 :          0 : Inivx_Tempti_GND=(Ib0_Tempti_GND+Ic1_Tempti_GND);
    1644                 :          0 : Inivx_Vbii_ci=(Ib0_Vbii_ci+Ic1_Vbii_ci);
    1645                 :            : #endif
    1646                 :          0 : Inivx=(Ib0+Ic1);
    1647                 :            : }
    1648                 :            : else
    1649                 :            : {
    1650                 :            : {
    1651                 :          0 : double m00_pow(d00_pow0,(Ib0+Ic1),(Afe*0.5))
    1652                 :            : #if defined(_DERIVATE)
    1653         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(Ib0+Ic1),(Afe*0.5))
    1654                 :            : #endif
    1655                 :            : #if defined(_DERIVATE)
    1656                 :          0 : Inivx_Vbii_ei=(d10_pow0*(Ib0_Vbii_ei+Ic1_Vbii_ei));
    1657                 :          0 : Inivx_Tempti_GND=(d10_pow0*(Ib0_Tempti_GND+Ic1_Tempti_GND));
    1658                 :          0 : Inivx_Vbii_ci=(d10_pow0*(Ib0_Vbii_ci+Ic1_Vbii_ci));
    1659                 :            : #endif
    1660                 :          0 : Inivx=d00_pow0;
    1661                 :            : }
    1662                 :            : }
    1663                 :            : }
    1664                 :          0 : _load_static_residual1(nii,NP(nii));
    1665                 :            : #if defined(_DERIVATE)
    1666         [ #  # ]:          0 : _load_static_jacobian1(nii,nii,1.0);
    1667                 :            : #endif
    1668                 :            : #if defined(_DYNAMIC)
    1669 [ #  # ][ #  # ]:          0 : _load_dynamic_residual1(nii,_DDT((NP(nii)/((2.0*3.1415)*Fb))));
    1670                 :            : #if defined(_DERIVATE)
    1671 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian1(nii,nii,(1/((2.0*3.1415)*Fb)));
                 [ #  # ]
    1672                 :            : #endif
    1673                 :            : #endif
    1674                 :          0 : _save_whitenoise1(nii,(Area*Kb),NULL);
    1675                 :          0 : _load_static_residual1(niix,NP(niix));
    1676                 :            : #if defined(_DERIVATE)
    1677         [ #  # ]:          0 : _load_static_jacobian1(niix,niix,1.0);
    1678                 :            : #endif
    1679                 :          0 : _load_static_residual1(niix,Iniix);
    1680                 :            : #if defined(_DERIVATE)
    1681 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(niix,bii,ci,Iniix_Vbii_ci);
                 [ #  # ]
    1682         [ #  # ]:          0 : _load_static_jacobian1(niix,ti,Iniix_Tempti_GND);
    1683 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(niix,bii,ei,Iniix_Vbii_ei);
                 [ #  # ]
    1684                 :            : #endif
    1685                 :          0 : _load_static_residual1(niii,NP(niii));
    1686                 :            : #if defined(_DERIVATE)
    1687         [ #  # ]:          0 : _load_static_jacobian1(niii,niii,1.0);
    1688                 :            : #endif
    1689                 :          0 : _save_flickernoise1(niii,(Area*Kfb),Ffeb,"Flicker noise base-emitter junction (a)");
    1690                 :          0 : _load_static_residual1(niiix,NP(niiix));
    1691                 :            : #if defined(_DERIVATE)
    1692         [ #  # ]:          0 : _load_static_jacobian1(niiix,niiix,1.0);
    1693                 :            : #endif
    1694                 :          0 : _load_static_residual1(niiix,Iniiix);
    1695                 :            : #if defined(_DERIVATE)
    1696 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(niiix,bii,ci,Iniiix_Vbii_ci);
                 [ #  # ]
    1697         [ #  # ]:          0 : _load_static_jacobian1(niiix,ti,Iniiix_Tempti_GND);
    1698 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(niiix,bii,ei,Iniiix_Vbii_ei);
                 [ #  # ]
    1699                 :            : #endif
    1700 [ #  # ][ #  # ]:          0 : _load_static_residual2(bii,ei,(NP(nii)*NP(niix)));
    1701                 :            : #if defined(_DERIVATE)
    1702 [ #  # ][ #  # ]:          0 : _load_static_jacobian2s(bii,ei,niix,(NP(nii)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1703 [ #  # ][ #  # ]:          0 : _load_static_jacobian2s(bii,ei,nii,(NP(niix)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1704                 :            : #endif
    1705 [ #  # ][ #  # ]:          0 : _load_static_residual2(bii,ei,(NP(niii)*NP(niiix)));
    1706                 :            : #if defined(_DERIVATE)
    1707 [ #  # ][ #  # ]:          0 : _load_static_jacobian2s(bii,ei,niiix,(NP(niii)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1708 [ #  # ][ #  # ]:          0 : _load_static_jacobian2s(bii,ei,niii,(NP(niiix)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1709                 :            : #endif
    1710                 :          0 : _load_static_residual1(niv,NP(niv));
    1711                 :            : #if defined(_DERIVATE)
    1712         [ #  # ]:          0 : _load_static_jacobian1(niv,niv,1.0);
    1713                 :            : #endif
    1714                 :          0 : _save_flickernoise1(niv,(Area*Kfe),Ffee,"Hooge noise of emitter resistance");
    1715                 :          0 : _load_static_residual1(nivx,NP(nivx));
    1716                 :            : #if defined(_DERIVATE)
    1717         [ #  # ]:          0 : _load_static_jacobian1(nivx,nivx,1.0);
    1718                 :            : #endif
    1719                 :          0 : _load_static_residual1(nivx,Inivx);
    1720                 :            : #if defined(_DERIVATE)
    1721 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(nivx,bii,ci,Inivx_Vbii_ci);
                 [ #  # ]
    1722         [ #  # ]:          0 : _load_static_jacobian1(nivx,ti,Inivx_Tempti_GND);
    1723 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(nivx,bii,ei,Inivx_Vbii_ei);
                 [ #  # ]
    1724                 :            : #endif
    1725 [ #  # ][ #  # ]:          0 : _load_static_residual2(e,ei,((NP(niv)*NP(nivx))/(Re/N)));
    1726                 :            : #if defined(_DERIVATE)
    1727 [ #  # ][ #  # ]:          0 : _load_static_jacobian2s(e,ei,nivx,((NP(niv))/(Re/N)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1728 [ #  # ][ #  # ]:          0 : _load_static_jacobian2s(e,ei,niv,((NP(nivx))/(Re/N)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1729                 :            : #endif
    1730                 :            : 
    1731                 :            : /* ------------------ end of verilog analog equations --------------------- */
    1732                 :            : 
    1733                 :            : /* ------------------ evaluate verilog noise equations -------------------- */
    1734                 :            : 
    1735                 :            : /* ------------------- end of verilog noise equations --------------------- */
    1736                 :          0 : }
    1737                 :            : 
    1738                 :            : /* Perform DC iteration. */
    1739                 :          0 : void HBT_X::calcDC (void)
    1740                 :            : {
    1741                 :            :   // evaluate Verilog code
    1742                 :          0 :   initVerilog ();
    1743                 :          0 :   calcVerilog ();
    1744                 :            : 
    1745                 :            :   // fill right hand side and static jacobian
    1746         [ #  # ]:          0 :   for (int i1 = 0; i1 < 19; i1++) {
    1747         [ #  # ]:          0 :     setI (i1, _rhs[i1]);
    1748         [ #  # ]:          0 :     for (int i2 = 0; i2 < 19; i2++) {
    1749         [ #  # ]:          0 :       setY (i1, i2, _jstat[i1][i2]);
    1750                 :            :     }
    1751                 :            :   }
    1752                 :          0 : }
    1753                 :            : 
    1754                 :            : /* Save operating points. */
    1755                 :          0 : void HBT_X::saveOperatingPoints (void)
    1756                 :            : {
    1757                 :            :   // save global instance operating points
    1758                 :          0 : }
    1759                 :            : 
    1760                 :            : /* Load operating points. */
    1761                 :          0 : void HBT_X::loadOperatingPoints (void)
    1762                 :            : {
    1763                 :          0 : }
    1764                 :            : 
    1765                 :            : /* Calculate operating points. */
    1766                 :          0 : void HBT_X::calcOperatingPoints (void)
    1767                 :            : {
    1768                 :          0 : }
    1769                 :            : 
    1770                 :            : /* Initialization of AC analysis. */
    1771                 :          0 : void HBT_X::initAC (void)
    1772                 :            : {
    1773                 :          0 :   allocMatrixMNA ();
    1774                 :          0 : }
    1775                 :            : 
    1776                 :            : /* Perform AC calculations. */
    1777                 :          0 : void HBT_X::calcAC (nr_double_t frequency)
    1778                 :            : {
    1779         [ #  # ]:          0 :   setMatrixY (calcMatrixY (frequency));
    1780                 :          0 : }
    1781                 :            : 
    1782                 :            : /* Compute Y-matrix for AC analysis. */
    1783                 :          0 : matrix HBT_X::calcMatrixY (nr_double_t frequency)
    1784                 :            : {
    1785                 :          0 :   _freq = frequency;
    1786                 :          0 :   saveOperatingPoints ();
    1787                 :          0 :   matrix y (19);
    1788                 :            : 
    1789         [ #  # ]:          0 :   for (int i1 = 0; i1 < 19; i1++) {
    1790         [ #  # ]:          0 :     for (int i2 = 0; i2 < 19; i2++) {
    1791                 :          0 :       y (i1,i2) = nr_complex_t (_jstat[i1][i2], _jdyna[i1][i2] * 2 * M_PI * _freq);
    1792                 :            :     }
    1793                 :            :   }
    1794                 :            : 
    1795                 :          0 :   return y;
    1796                 :            : }
    1797                 :            : 
    1798                 :            : /* Initialization of S-parameter analysis. */
    1799                 :          0 : void HBT_X::initSP (void)
    1800                 :            : {
    1801                 :          0 :   allocMatrixS ();
    1802                 :          0 : }
    1803                 :            : 
    1804                 :            : /* Perform S-parameter calculations. */
    1805                 :          0 : void HBT_X::calcSP (nr_double_t frequency)
    1806                 :            : {
    1807 [ #  # ][ #  # ]:          0 :   setMatrixS (ytos (calcMatrixY (frequency)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1808                 :          0 : }
    1809                 :            : 
    1810                 :            : /* Initialization of transient analysis. */
    1811                 :          0 : void HBT_X::initTR (void)
    1812                 :            : {
    1813                 :          0 :   setStates (2 * 19 * 19);
    1814                 :          0 :   initDC ();
    1815                 :          0 : }
    1816                 :            : 
    1817                 :            : /* Perform transient analysis iteration step. */
    1818                 :          0 : void HBT_X::calcTR (nr_double_t)
    1819                 :            : {
    1820                 :          0 :   doHB = 0;
    1821                 :          0 :   doAC = 1;
    1822                 :          0 :   doTR = 1;
    1823                 :          0 :   calcDC ();
    1824                 :            : 
    1825                 :            :   int i1, i2, i3, i4, state;
    1826                 :            : 
    1827                 :            :   // 2-node charge integrations
    1828         [ #  # ]:          0 :   for (i1 = 0; i1 < 19; i1++) {
    1829         [ #  # ]:          0 :   for (i2 = 0; i2 < 19; i2++) {
    1830                 :          0 :     state = 2 * (i2 + 19 * i1);
    1831         [ #  # ]:          0 :     if (i1 != i2)
    1832         [ #  # ]:          0 :     if (_charges[i1][i2] != 0.0)
    1833                 :          0 :       transientCapacitanceQ (state, i1, i2, _charges[i1][i2]);
    1834                 :            :   } }
    1835                 :            : 
    1836                 :            :   // 1-node charge integrations
    1837         [ #  # ]:          0 :   for (i1 = 0; i1 < 19; i1++) {
    1838                 :          0 :     state = 2 * (i1 + 19 * i1);
    1839         [ #  # ]:          0 :     if (_charges[i1][i1] != 0.0)
    1840                 :          0 :       transientCapacitanceQ (state, i1, _charges[i1][i1]);
    1841                 :            :   }
    1842                 :            : 
    1843                 :            :   // charge: 2-node, voltage: 2-node
    1844         [ #  # ]:          0 :   for (i1 = 0; i1 < 19; i1++) {
    1845         [ #  # ]:          0 :   for (i2 = 0; i2 < 19; i2++) {
    1846         [ #  # ]:          0 :   if (i1 != i2)
    1847         [ #  # ]:          0 :   for (i3 = 0; i3 < 19; i3++) {
    1848         [ #  # ]:          0 :   for (i4 = 0; i4 < 19; i4++) {
    1849         [ #  # ]:          0 :     if (i3 != i4)
    1850         [ #  # ]:          0 :     if (_caps[i1][i2][i3][i4] != 0.0)
    1851 [ #  # ][ #  # ]:          0 :       transientCapacitanceC (i1, i2, i3, i4, _caps[i1][i2][i3][i4], BP(i3,i4));
    1852                 :            :   } } } }
    1853                 :            : 
    1854                 :            :   // charge: 2-node, voltage: 1-node
    1855         [ #  # ]:          0 :   for (i1 = 0; i1 < 19; i1++) {
    1856         [ #  # ]:          0 :   for (i2 = 0; i2 < 19; i2++) {
    1857         [ #  # ]:          0 :   if (i1 != i2)
    1858         [ #  # ]:          0 :   for (i3 = 0; i3 < 19; i3++) {
    1859         [ #  # ]:          0 :     if (_caps[i1][i2][i3][i3] != 0.0)
    1860         [ #  # ]:          0 :       transientCapacitanceC2Q (i1, i2, i3, _caps[i1][i2][i3][i3], NP(i3));
    1861                 :            :   } } }
    1862                 :            : 
    1863                 :            :   // charge: 1-node, voltage: 2-node
    1864         [ #  # ]:          0 :   for (i1 = 0; i1 < 19; i1++) {
    1865         [ #  # ]:          0 :   for (i3 = 0; i3 < 19; i3++) {
    1866         [ #  # ]:          0 :   for (i4 = 0; i4 < 19; i4++) {
    1867         [ #  # ]:          0 :     if (i3 != i4)
    1868         [ #  # ]:          0 :     if (_caps[i1][i1][i3][i4] != 0.0)
    1869 [ #  # ][ #  # ]:          0 :       transientCapacitanceC2V (i1, i3, i4, _caps[i1][i1][i3][i4], BP(i3,i4));
    1870                 :            :   } } }
    1871                 :            : 
    1872                 :            :   // charge: 1-node, voltage: 1-node
    1873         [ #  # ]:          0 :   for (i1 = 0; i1 < 19; i1++) {
    1874         [ #  # ]:          0 :   for (i3 = 0; i3 < 19; i3++) {
    1875         [ #  # ]:          0 :     if (_caps[i1][i1][i3][i3] != 0.0)
    1876         [ #  # ]:          0 :       transientCapacitanceC (i1, i3, _caps[i1][i1][i3][i3], NP(i3));
    1877                 :            :   } }
    1878                 :          0 : }
    1879                 :            : 
    1880                 :            : /* Compute Cy-matrix for AC noise analysis. */
    1881                 :          0 : matrix HBT_X::calcMatrixCy (nr_double_t frequency) 
    1882                 :            : {
    1883                 :          0 :   _freq = frequency;
    1884                 :          0 :   matrix cy (19);
    1885                 :            : 
    1886                 :          0 :   _load_flickernoise1 (niv,_flicker_pwr[niv][niv],_flicker_exp[niv][niv]);
    1887                 :          0 :   _load_flickernoise1 (niii,_flicker_pwr[niii][niii],_flicker_exp[niii][niii]);
    1888                 :          0 :   _load_whitenoise1 (nii,_white_pwr[nii][nii]);
    1889                 :          0 :   _load_whitenoise2 (cx,bii,_white_pwr[cx][bii]);
    1890                 :          0 :   _load_whitenoise2 (exx,bii,_white_pwr[exx][bii]);
    1891                 :          0 :   _load_whitenoise2 (ex,bii,_white_pwr[ex][bii]);
    1892                 :          0 :   _load_whitenoise2 (c,ci,_white_pwr[c][ci]);
    1893                 :          0 :   _load_whitenoise2 (e,ei,_white_pwr[e][ei]);
    1894                 :          0 :   _load_whitenoise2 (b,bi,_white_pwr[b][bi]);
    1895                 :          0 :   _load_whitenoise2 (bii,bi,_white_pwr[bii][bi]);
    1896                 :          0 :   _load_whitenoise1 (ni,_white_pwr[ni][ni]);
    1897                 :          0 :   _load_whitenoise2 (bii,ei,_white_pwr[bii][ei]);
    1898                 :            : 
    1899                 :          0 :   return cy;
    1900                 :            : }
    1901                 :            : 
    1902                 :            : /* Perform AC noise computations. */
    1903                 :          0 : void HBT_X::calcNoiseAC (nr_double_t frequency) 
    1904                 :            : {
    1905         [ #  # ]:          0 :   setMatrixN (calcMatrixCy (frequency));
    1906                 :          0 : }
    1907                 :            : 
    1908                 :            : /* Perform S-parameter noise computations. */
    1909                 :          0 : void HBT_X::calcNoiseSP (nr_double_t frequency) 
    1910                 :            : {
    1911 [ #  # ][ #  # ]:          0 :   setMatrixN (cytocs (calcMatrixCy (frequency) * z0, getMatrixS ()));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1912                 :          0 : }
    1913                 :            : 
    1914                 :            : /* Initialization of HB analysis. */
    1915                 :          0 : void HBT_X::initHB (int)
    1916                 :            : {
    1917                 :          0 :   initDC ();
    1918                 :          0 :   allocMatrixHB ();
    1919                 :          0 : }
    1920                 :            : 
    1921                 :            : /* Perform HB analysis. */
    1922                 :          0 : void HBT_X::calcHB (int)
    1923                 :            : {
    1924                 :          0 :   doHB = 1;
    1925                 :          0 :   doAC = 1;
    1926                 :          0 :   doTR = 0;
    1927                 :            : 
    1928                 :            :   // jacobian dI/dV and currents get filled
    1929                 :          0 :   calcDC ();
    1930                 :          0 :   saveOperatingPoints ();
    1931                 :            : 
    1932                 :            :   // fill in HB matrices
    1933         [ #  # ]:          0 :   for (int i1 = 0; i1 < 19; i1++) {
    1934         [ #  # ]:          0 :     setQ  (i1, _qhs[i1]); // charges
    1935         [ #  # ]:          0 :     setCV (i1, _chs[i1]); // jacobian dQ/dV * V
    1936         [ #  # ]:          0 :     setGV (i1, _ghs[i1]); // jacobian dI/dV * V
    1937         [ #  # ]:          0 :     for (int i2 = 0; i2 < 19; i2++) {
    1938         [ #  # ]:          0 :       setQV (i1, i2, _jdyna[i1][i2]); // jacobian dQ/dV
    1939                 :            :     }
    1940                 :            :   }
    1941                 :          0 : }
    1942                 :            : 
    1943                 :            : #include "HBT_X.defs.h"
    1944                 :            : 

Generated by: LCOV version 1.11