LCOV - code coverage report
Current view: top level - src/components/verilog - nigbt.core.cpp (source / functions) Hit Total Coverage
Test: qucs-core-0.0.19 Code Coverage Lines: 0 627 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 578 0.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * nigbt.core.cpp - device implementations for nigbt 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 "nigbt.analogfunction.h"
      16                 :            : #include "component.h"
      17                 :            : #include "device.h"
      18                 :            : #include "nigbt.core.h"
      19                 :            : 
      20                 :            : #ifndef CIR_nigbt
      21                 :            : #define CIR_nigbt -1
      22                 :            : #endif
      23                 :            : 
      24                 :            : // external nodes
      25                 :            : #define C 0
      26                 :            : #define G 1
      27                 :            : #define E 2
      28                 :            : // internal nodes
      29                 :            : #define e 3
      30                 :            : #define b 4
      31                 :            : #define var_Ql 5
      32                 :            : #define var_Mucinv 6
      33                 :            : #define var_Nsat 7
      34                 :            : #define var_dVecdt 8
      35                 :            : 
      36                 :            : // useful macro definitions
      37                 :            : #define NP(node) real (getV (node))
      38                 :            : #define BP(pnode,nnode) (NP(pnode) - NP(nnode))
      39                 :            : #define _load_static_residual2(pnode,nnode,current)\
      40                 :            :         _rhs[pnode] -= current;\
      41                 :            :         _rhs[nnode] += current;
      42                 :            : #define _load_static_augmented_residual2(pnode,nnode,current)\
      43                 :            :         _rhs[pnode] -= current;\
      44                 :            :         _rhs[nnode] += current;
      45                 :            : #define _load_static_residual1(node,current)\
      46                 :            :         _rhs[node] -= current;
      47                 :            : #define _load_static_augmented_residual1(node,current)\
      48                 :            :         _rhs[node] -= current;
      49                 :            : #define _load_static_jacobian4(pnode,nnode,vpnode,vnnode,conductance)\
      50                 :            :         _jstat[pnode][vpnode] += conductance;\
      51                 :            :         _jstat[nnode][vnnode] += conductance;\
      52                 :            :         _jstat[pnode][vnnode] -= conductance;\
      53                 :            :         _jstat[nnode][vpnode] -= conductance;\
      54                 :            :         if (doHB) {\
      55                 :            :         _ghs[pnode] += conductance * BP(vpnode,vnnode);\
      56                 :            :         _ghs[nnode] -= conductance * BP(vpnode,vnnode);\
      57                 :            :         } else {\
      58                 :            :         _rhs[pnode] += conductance * BP(vpnode,vnnode);\
      59                 :            :         _rhs[nnode] -= conductance * BP(vpnode,vnnode);\
      60                 :            :         }
      61                 :            : #define _load_static_jacobian2p(node,vpnode,vnnode,conductance)\
      62                 :            :         _jstat[node][vpnode] += conductance;\
      63                 :            :         _jstat[node][vnnode] -= conductance;\
      64                 :            :         if (doHB) {\
      65                 :            :         _ghs[node] += conductance * BP(vpnode,vnnode);\
      66                 :            :         } else {\
      67                 :            :         _rhs[node] += conductance * BP(vpnode,vnnode);\
      68                 :            :         }
      69                 :            : #define _load_static_jacobian2s(pnode,nnode,node,conductance)\
      70                 :            :         _jstat[pnode][node] += conductance;\
      71                 :            :         _jstat[nnode][node] -= conductance;\
      72                 :            :         if (doHB) {\
      73                 :            :         _ghs[pnode] += conductance * NP(node);\
      74                 :            :         _ghs[nnode] -= conductance * NP(node);\
      75                 :            :         } else {\
      76                 :            :         _rhs[pnode] += conductance * NP(node);\
      77                 :            :         _rhs[nnode] -= conductance * NP(node);\
      78                 :            :         }
      79                 :            : #define _load_static_jacobian1(node,vnode,conductance)\
      80                 :            :         _jstat[node][vnode] += conductance;\
      81                 :            :         if (doHB) {\
      82                 :            :         _ghs[node] += conductance * NP(vnode);\
      83                 :            :         } else {\
      84                 :            :         _rhs[node] += conductance * NP(vnode);\
      85                 :            :         }
      86                 :            : #define _load_dynamic_residual2(pnode,nnode,charge)\
      87                 :            :         if (doTR) _charges[pnode][nnode] += charge;\
      88                 :            :         if (doHB) {\
      89                 :            :         _qhs[pnode] -= charge;\
      90                 :            :         _qhs[nnode] += charge;\
      91                 :            :         }
      92                 :            : #define _load_dynamic_residual1(node,charge)\
      93                 :            :         if (doTR) _charges[node][node] += charge;\
      94                 :            :         if (doHB) {\
      95                 :            :         _qhs[node] -= charge;\
      96                 :            :         }
      97                 :            : #define _load_dynamic_jacobian4(pnode,nnode,vpnode,vnnode,capacitance)\
      98                 :            :         if (doAC) {\
      99                 :            :         _jdyna[pnode][vpnode] += capacitance;\
     100                 :            :         _jdyna[nnode][vnnode] += capacitance;\
     101                 :            :         _jdyna[pnode][vnnode] -= capacitance;\
     102                 :            :         _jdyna[nnode][vpnode] -= capacitance;\
     103                 :            :         }\
     104                 :            :         if (doTR) {\
     105                 :            :         _caps[pnode][nnode][vpnode][vnnode] += capacitance;\
     106                 :            :         }\
     107                 :            :         if (doHB) {\
     108                 :            :         _chs[pnode] += capacitance * BP(vpnode,vnnode);\
     109                 :            :         _chs[nnode] -= capacitance * BP(vpnode,vnnode);\
     110                 :            :         }
     111                 :            : #define _load_dynamic_jacobian2s(pnode,nnode,vnode,capacitance)\
     112                 :            :         if (doAC) {\
     113                 :            :         _jdyna[pnode][vnode] += capacitance;\
     114                 :            :         _jdyna[nnode][vnode] -= capacitance;\
     115                 :            :         }\
     116                 :            :         if (doTR) {\
     117                 :            :         _caps[pnode][nnode][vnode][vnode] += capacitance;\
     118                 :            :         }\
     119                 :            :         if (doHB) {\
     120                 :            :         _chs[pnode] += capacitance * NP(vnode);\
     121                 :            :         _chs[nnode] -= capacitance * NP(vnode);\
     122                 :            :         }
     123                 :            : #define _load_dynamic_jacobian2p(node,vpnode,vnnode,capacitance)\
     124                 :            :         if (doAC) {\
     125                 :            :         _jdyna[node][vpnode] += capacitance;\
     126                 :            :         _jdyna[node][vnnode] -= capacitance;\
     127                 :            :         }\
     128                 :            :         if (doTR) {\
     129                 :            :         _caps[node][node][vpnode][vnnode] += capacitance;\
     130                 :            :         }\
     131                 :            :         if (doHB) {\
     132                 :            :         _chs[node] += capacitance * BP(vpnode,vnnode);\
     133                 :            :         }
     134                 :            : #define _load_dynamic_jacobian1(node,vnode,capacitance)\
     135                 :            :         if (doAC) {\
     136                 :            :         _jdyna[node][vnode] += capacitance;\
     137                 :            :         }\
     138                 :            :         if (doTR) {\
     139                 :            :         _caps[node][node][vnode][vnode] += capacitance;\
     140                 :            :         }\
     141                 :            :         if (doHB) {\
     142                 :            :         _chs[node] += capacitance * NP(vnode);\
     143                 :            :         }
     144                 :            : 
     145                 :            : #define _save_whitenoise1(n1,pwr,type)\
     146                 :            :         _white_pwr[n1][n1] += pwr;
     147                 :            : #define _save_whitenoise2(n1,n2,pwr,type)\
     148                 :            :         _white_pwr[n1][n2] += pwr;
     149                 :            : #define _save_flickernoise1(n1,pwr,exp,type)\
     150                 :            :         _flicker_pwr[n1][n1] += pwr;\
     151                 :            :         _flicker_exp[n1][n1] += exp;
     152                 :            : #define _save_flickernoise2(n1,n2,pwr,exp,type)\
     153                 :            :         _flicker_pwr[n1][n2] += pwr;\
     154                 :            :         _flicker_exp[n1][n2] += exp;
     155                 :            : #define _load_whitenoise2(n1,n2,pwr)\
     156                 :            :         cy (n1,n2) -= pwr/kB/T0; cy (n2,n1) -= pwr/kB/T0;\
     157                 :            :         cy (n1,n1) += pwr/kB/T0; cy (n2,n2) += pwr/kB/T0;
     158                 :            : #define _load_whitenoise1(n1,pwr)\
     159                 :            :         cy (n1,n1) += pwr/kB/T0;
     160                 :            : #define _load_flickernoise2(n1,n2,pwr,exp)\
     161                 :            :         cy (n1,n2) -= pwr*pow(_freq,-exp)/kB/T0;\
     162                 :            :         cy (n2,n1) -= pwr*pow(_freq,-exp)/kB/T0;\
     163                 :            :         cy (n1,n1) += pwr*pow(_freq,-exp)/kB/T0;\
     164                 :            :         cy (n2,n2) += pwr*pow(_freq,-exp)/kB/T0;
     165                 :            : #define _load_flickernoise1(n1,pwr,exp)\
     166                 :            :         cy (n1,n1) += pwr*pow(_freq,-exp)/kB/T0;
     167                 :            : 
     168                 :            : // derivative helper macros
     169                 :            : // transcendental LRM p. 59
     170                 :            : #define m00_cos(v00,x)          v00 = cos(x);
     171                 :            : #define m10_cos(v10,v00,x)      v10 = (-sin(x));
     172                 :            : #define m00_sin(v00,x)          v00 = sin(x);
     173                 :            : #define m10_sin(v10,v00,x)      v10 = (cos(x));
     174                 :            : #define m00_tan(v00,x)          v00 = tan(x);
     175                 :            : #define m10_tan(v10,v00,x)      v10 = (1.0/cos(x)/cos(x));
     176                 :            : #define m00_cosh(v00,x)         v00 = cosh(x);
     177                 :            : #define m10_cosh(v10,v00,x)     v10 = (sinh(x));
     178                 :            : #define m00_sinh(v00,x)         v00 = sinh(x);
     179                 :            : #define m10_sinh(v10,v00,x)     v10 = (cosh(x));
     180                 :            : #define m00_tanh(v00,x)         v00 = tanh(x);
     181                 :            : #define m10_tanh(v10,v00,x)     v10 = (1.0/cosh(x)/cosh(x));
     182                 :            : #define m00_acos(v00,x)         v00 = acos(x);
     183                 :            : #define m10_acos(v10,v00,x)     v10 = (-1.0/sqrt(1-x*x));
     184                 :            : #define m00_asin(v00,x)         v00 = asin(x);
     185                 :            : #define m10_asin(v10,v00,x)     v10 = (+1.0/sqrt(1-x*x));
     186                 :            : #define m00_atan(v00,x)         v00 = atan(x);
     187                 :            : #define m10_atan(v10,v00,x)     v10 = (+1.0/(1+x*x));
     188                 :            : #define m00_hypot(v00,x,y)      v00 = sqrt((x)*(x)+(y)*(y));
     189                 :            : #define m10_hypot(v10,v00,x,y)  v10 = (x)/(v00);
     190                 :            : #define m11_hypot(v11,v00,x,y)  v11 = (y)/(v00);
     191                 :            : #define m00_atan2(v00,x,y)      v00 = atan2(x,y);
     192                 :            : // TODO atan2 derivatives ?
     193                 :            : #define m00_acosh(v00,x)        v00 = acosh(x);
     194                 :            : #define m10_acosh(v10,v00,x)    v10 = (1.0/(sqrt(x-1)*sqrt(x+1)));
     195                 :            : #define m00_asinh(v00,x)        v00 = asinh(x);
     196                 :            : #define m10_asinh(v10,v00,x)    v10 = (1.0/(sqrt(x*x+1)));
     197                 :            : #define m00_atanh(v00,x)        v00 = atanh(x);
     198                 :            : #define m10_atanh(v10,v00,x)    v10 = (1.0/(1-x*x));
     199                 :            : 
     200                 :            : 
     201                 :            : // standard functions LRM p.58
     202                 :            : #define m00_logE(v00,x)         v00 = log(x);
     203                 :            : #define m10_logE(v10,v00,x)     v10 = (1.0/x);
     204                 :            : #define m00_log10(v00,x)        v00 = log10(x);
     205                 :            : #define m10_log10(v10,v00,x)    v10 = (1.0/x/M_LN10);
     206                 :            : #define m00_exp(v00,x)          v00 = exp(x);
     207                 :            : #define m10_exp(v10,v00,x)      v10 = v00;
     208                 :            : #define m00_sqrt(v00,x)         v00 = sqrt(x);
     209                 :            : #define m10_sqrt(v10,v00,x)     v10 = (0.5/v00);
     210                 :            : #define m00_min(v00,x,y)        v00 = ((x)<(y))?(x):(y);
     211                 :            : #define m10_min(v10,v00,x,y)    v10 = ((x)<(y))?1.0:0.0;
     212                 :            : #define m11_min(v11,v00,x,y)    v11 = ((x)<(y))?0.0:1.0;
     213                 :            : #define m00_max(v00,x,y)        v00 = ((x)>(y))?(x):(y);
     214                 :            : #define m10_max(v10,v00,x,y)    v10 = ((x)>(y))?1.0:0.0;
     215                 :            : #define m11_max(v11,v00,x,y)    v11 = ((x)>(y))?0.0:1.0;
     216                 :            : #define m00_pow(v00,x,y)        v00 = pow(x,y);
     217                 :            : #define m10_pow(v10,v00,x,y)    v10 = (x==0.0)?0.0:(v00)*(y)/(x);
     218                 :            : #define m11_pow(v11,v00,x,y)    v11 = (x==0.0)?0.0:(log(x)*(v00));
     219                 :            : #define m00_abs(v00,x)          v00 = ((x)<(0)?(-(x)):(x));
     220                 :            : #define m10_abs(v10,v00,x)      v10 = (((x)>=0)?(+1.0):(-1.0));
     221                 :            : #define m00_floor(v00,x)        v00 = floor(x);
     222                 :            : #define m10_floor(v10,v00,x)    v10 = 1.0;
     223                 :            : 
     224                 :            : #define m00_ceil(v00,x)         v00 = ceil(x);
     225                 :            : // TODO ceil derivative, needed?
     226                 :            : 
     227                 :            : // analog operator, LRM p.61
     228                 :            : #define m00_limexp(v00,x)       v00 = ((x)<80.0?exp(x):exp(80.0)*(x-79.0));
     229                 :            : #define m10_limexp(v10,v00,x)   v10 = ((x)<80.0?(v00):exp(80.0));
     230                 :            : 
     231                 :            : // analog kernel parameter system functions, LRM p.215
     232                 :            : #define m00_vt(x)               (kBoverQ*(x))
     233                 :            : #define m10_vt(x)               (kBoverQ)
     234                 :            : 
     235                 :            : // extra functions (?)
     236                 :            : #define m00_div(v00,v10,x,y)    double v10=1/(y); double v00=(x)*v10;
     237                 :            : #define m10_div(v10,v00,vv,x,y)
     238                 :            : #define m11_div(v11,v00,vv,x,y) double v11 = -v00*vv;
     239                 :            : #define m00_mult(v00,v10,v11,x,y) double v10=(x); double v11=(y); double v00=v10*v11;
     240                 :            : #define m00_add(v00,x,y)        double v00=(x)+(y);
     241                 :            : 
     242                 :            : // second derivatives
     243                 :            : #define m20_logE(v00)           (-1.0/v00/v00)
     244                 :            : #define m20_exp(v00)            exp(v00)
     245                 :            : #define m20_limexp(v00)         ((v00)<80.0?exp(v00):0.0)
     246                 :            : #define m20_sqrt(v00)           (-0.25/(v00)/sqrt(v00))
     247                 :            : #define m20_abs(v00)           0.0
     248                 :            : #define m20_pow(x,y)            ((y)*((y)-1.0)*pow(x,y)/(x)/(x))
     249                 :            : 
     250                 :            : 
     251                 :            : // simulator specific definitions
     252                 :            : #define _modelname              "nigbt"
     253                 :            : #define _instancename           getName()
     254                 :            : #define _circuit_temp           (getPropertyDouble("Temp")+273.15)
     255                 :            : #define _param_given(p)         (isPropertyGiven(p)?1:0)
     256                 :            : 
     257                 :            : 
     258                 :            : // $vt and $vt() functions
     259                 :            : #define _vt_nom                 (kBoverQ*_circuit_temp)
     260                 :            : 
     261                 :            : using namespace qucs::device;
     262                 :            : using qucs::matrix;
     263                 :            : 
     264                 :            : /* Device constructor. */
     265                 :          0 : nigbt::nigbt() : circuit (9)
     266                 :            : {
     267                 :          0 :   type = CIR_nigbt;
     268                 :          0 : }
     269                 :            : 
     270                 :            : /* Initialization of model. */
     271                 :          0 : void nigbt::initModel (void)
     272                 :            : {
     273                 :            :   // create internal nodes
     274                 :          0 :   setInternalNode (e, "e");
     275                 :          0 :   setInternalNode (b, "b");
     276                 :          0 :   setInternalNode (var_Ql, "var_Ql");
     277                 :          0 :   setInternalNode (var_Mucinv, "var_Mucinv");
     278                 :          0 :   setInternalNode (var_Nsat, "var_Nsat");
     279                 :          0 :   setInternalNode (var_dVecdt, "var_dVecdt");
     280                 :            : 
     281                 :            :   // get device model parameters
     282                 :          0 :   loadVariables ();
     283                 :            :   // evaluate global model equations
     284                 :          0 :   initializeModel ();
     285                 :            :   // evaluate initial step equations
     286                 :          0 :   initialStep ();
     287                 :            :   // evaluate global instance equations
     288                 :          0 :   initializeInstance ();
     289                 :          0 : }
     290                 :            : 
     291                 :            : /* Initialization of DC analysis. */
     292                 :          0 : void nigbt::initDC (void)
     293                 :            : {
     294                 :          0 :   allocMatrixMNA ();
     295                 :          0 :   initModel ();
     296                 :          0 :   pol = 1;
     297                 :          0 :   restartDC ();
     298                 :          0 :   doAC = 1;
     299                 :          0 :   doTR = 0;
     300                 :          0 :   doHB = 0;
     301                 :          0 : }
     302                 :            : 
     303                 :            : /* Run when DC is restarted (fallback algorithms). */
     304                 :          0 : void nigbt::restartDC (void)
     305                 :            : {
     306                 :          0 : }
     307                 :            : 
     308                 :            : /* Initialize Verilog-AMS code. */
     309                 :          0 : void nigbt::initVerilog (void)
     310                 :            : {
     311                 :            :   // initialization of noise variables
     312                 :            : 
     313                 :            :   int i1, i2, i3, i4;
     314                 :            : 
     315                 :            :   // zero charges
     316         [ #  # ]:          0 :   for (i1 = 0; i1 < 9; i1++) {
     317         [ #  # ]:          0 :   for (i2 = 0; i2 < 9; i2++) {
     318                 :          0 :     _charges[i1][i2] = 0.0;
     319                 :            :   } }
     320                 :            : 
     321                 :            :   // zero capacitances
     322         [ #  # ]:          0 :   for (i1 = 0; i1 < 9; i1++) {
     323         [ #  # ]:          0 :   for (i2 = 0; i2 < 9; i2++) {
     324         [ #  # ]:          0 :   for (i3 = 0; i3 < 9; i3++) {
     325         [ #  # ]:          0 :   for (i4 = 0; i4 < 9; i4++) {
     326                 :          0 :     _caps[i1][i2][i3][i4] = 0.0;
     327                 :            :   } } } }
     328                 :            : 
     329                 :            :   // zero right hand side, static and dynamic jacobian
     330         [ #  # ]:          0 :   for (i1 = 0; i1 < 9; i1++) {
     331                 :          0 :     _rhs[i1] = 0.0;
     332                 :          0 :     _qhs[i1] = 0.0;
     333                 :          0 :     _chs[i1] = 0.0;
     334                 :          0 :     _ghs[i1] = 0.0;
     335         [ #  # ]:          0 :     for (i2 = 0; i2 < 9; i2++) {
     336                 :          0 :       _jstat[i1][i2] = 0.0;
     337                 :          0 :       _jdyna[i1][i2] = 0.0;
     338                 :            :     }
     339                 :            :   }
     340                 :          0 : }
     341                 :            : 
     342                 :            : /* Load device model input parameters. */
     343                 :          0 : void nigbt::loadVariables (void)
     344                 :            : {
     345                 :          0 :   Agd = getPropertyDouble ("Agd");
     346                 :          0 :   Area = getPropertyDouble ("Area");
     347                 :          0 :   Kp = getPropertyDouble ("Kp");
     348                 :          0 :   Tau = getPropertyDouble ("Tau");
     349                 :          0 :   Wb = getPropertyDouble ("Wb");
     350                 :          0 :   BVf = getPropertyDouble ("BVf");
     351                 :          0 :   BVn = getPropertyDouble ("BVn");
     352                 :          0 :   Cgs = getPropertyDouble ("Cgs");
     353                 :          0 :   Coxd = getPropertyDouble ("Coxd");
     354                 :          0 :   Jsne = getPropertyDouble ("Jsne");
     355                 :          0 :   Kf = getPropertyDouble ("Kf");
     356                 :          0 :   Mun = getPropertyDouble ("Mun");
     357                 :          0 :   Mup = getPropertyDouble ("Mup");
     358                 :          0 :   Nb = getPropertyDouble ("Nb");
     359                 :          0 :   Theta = getPropertyDouble ("Theta");
     360                 :          0 :   Vt = getPropertyDouble ("Vt");
     361                 :          0 :   Vtd = getPropertyDouble ("Vtd");
     362                 :          0 :   Tnom = getPropertyDouble ("Tnom");
     363                 :          0 : }
     364                 :            : 
     365                 :            : /* #define's for translated code */
     366                 :            : #undef  _DDT
     367                 :            : #define _DDT(q) q
     368                 :            : #define _DYNAMIC
     369                 :            : #define _DERIVATE
     370                 :            : #define _DDX
     371                 :            : #define _DERIVATEFORDDX
     372                 :            : 
     373                 :            : /* Evaluate Verilog-AMS equations in model initialization. */
     374                 :          0 : void nigbt::initializeModel (void)
     375                 :            : {
     376                 :            : double Dn;
     377                 :            : double Nh;
     378                 :            : #if defined(_DYNAMIC)
     379                 :            : #endif
     380                 :            : double To;
     381                 :            : {
     382                 :          0 : Tj=_circuit_temp;
     383                 :          0 : To=(Tnom+273.15);
     384                 :          0 : A=Area;
     385                 :            : #if defined(_DYNAMIC)
     386                 :          0 : Ads=(A-Agd);
     387                 :            : #endif
     388                 :          0 : B=(Mun/Mup);
     389                 :            : #if defined(_DYNAMIC)
     390                 :          0 : Nh=2.4e17;
     391                 :            : #endif
     392                 :          0 : Nl=Nb;
     393                 :          0 : Ni=1.05e10;
     394                 :            : {
     395                 :          0 : double m00_pow(d00_pow0,Tj,1.5)
     396                 :          0 : double m00_exp(d00_exp1,(7000.0/Tj))
     397                 :          0 : Ni=((3.88e16*d00_pow0)/d00_exp1);
     398                 :            : }
     399                 :            : {
     400                 :          0 : double m00_pow(d00_pow0,(300/Tj),0.87)
     401                 :          0 : Vnsat=(10.0e6*d00_pow0);
     402                 :            : }
     403                 :            : {
     404                 :          0 : double m00_pow(d00_pow0,(300/Tj),0.52)
     405                 :          0 : Vpsat=(8.37e6*d00_pow0);
     406                 :            : }
     407                 :            : {
     408                 :          0 : double m00_pow(d00_pow0,(Tj/300),1.5)
     409                 :          0 : Alpha1=(1.04e21*d00_pow0);
     410                 :            : }
     411                 :            : {
     412                 :          0 : double m00_pow(d00_pow0,(Tj/300),2.0)
     413                 :          0 : Alpha2=(7.45e13*d00_pow0);
     414                 :            : }
     415                 :            : {
     416                 :          0 : double m00_pow(d00_pow0,(Tj/To),(Jsne*A))
     417                 :          0 : double m00_exp(d00_exp1,(14000*((1/Tj)-(1/To))))
     418                 :          0 : Isne=(((Jsne*A)*d00_pow0)/d00_exp1);
     419                 :            : }
     420                 :            : {
     421                 :          0 : double m00_pow(d00_pow0,(To/Tj),Kp)
     422                 :          0 : KpT=(Kp*d00_pow0);
     423                 :            : }
     424                 :          0 : Wl=Wb;
     425                 :          0 : Dp=(Mup*m00_vt(Tj));
     426                 :            : #if defined(_DYNAMIC)
     427                 :          0 : Dn=(Mun*m00_vt(Tj));
     428                 :            : #endif
     429                 :            : }
     430                 :          0 : }
     431                 :            : 
     432                 :            : /* Evaluate Verilog-AMS equations in instance initialization. */
     433                 :          0 : void nigbt::initializeInstance (void)
     434                 :            : {
     435                 :          0 : }
     436                 :            : 
     437                 :            : /* Evaluate Verilog-AMS equations in initial step. */
     438                 :          0 : void nigbt::initialStep (void)
     439                 :            : {
     440                 :          0 : }
     441                 :            : 
     442                 :            : /* Evaluate Verilog-AMS equations in final step. */
     443                 :          0 : void nigbt::finalStep (void)
     444                 :            : {
     445                 :          0 : }
     446                 :            : 
     447                 :            : /* Evaluate Verilog-AMS equations in analog block. */
     448                 :          0 : void nigbt::calcVerilog (void)
     449                 :            : {
     450                 :            : 
     451                 :            : /* ----------------- evaluate verilog analog equations -------------------- */
     452                 :            : double iNsat;
     453                 :            : #if defined(_DERIVATE)
     454                 :            : double iNsat_VC_e;
     455                 :            : double iNsat_Vvar_Ql_GND;
     456                 :            : double iNsat_Vb_E;
     457                 :            : double iNsat_Vvar_Nsat_GND;
     458                 :            : double iNsat_Vvar_Mucinv_GND;
     459                 :            : double iNsat_Vvar_dVecdt_GND;
     460                 :            : double iNsat_VG_E;
     461                 :            : #endif
     462                 :            : double iQl;
     463                 :            : #if defined(_DERIVATE)
     464                 :            : double iQl_Vb_E;
     465                 :            : double iQl_Vvar_Nsat_GND;
     466                 :            : double iQl_Vvar_Ql_GND;
     467                 :            : double iQl_Vvar_Mucinv_GND;
     468                 :            : #endif
     469                 :            : double iMucinv;
     470                 :            : #if defined(_DERIVATE)
     471                 :            : double iMucinv_Vvar_Ql_GND;
     472                 :            : double iMucinv_Vvar_Mucinv_GND;
     473                 :            : double iMucinv_Vb_E;
     474                 :            : double iMucinv_Vvar_Nsat_GND;
     475                 :            : #endif
     476                 :            : #if defined(_DYNAMIC)
     477                 :            : double Qmult;
     478                 :            : #if defined(_DERIVATE)
     479                 :            : double Qmult_Vb_E;
     480                 :            : double Qmult_Vvar_Nsat_GND;
     481                 :            : double Qmult_Vvar_Ql_GND;
     482                 :            : double Qmult_Ve_E;
     483                 :            : #endif
     484                 :            : #endif
     485                 :            : #if defined(_DYNAMIC)
     486                 :            : double Qcer;
     487                 :            : #if defined(_DERIVATE)
     488                 :            : double Qcer_Vvar_Ql_GND;
     489                 :            : double Qcer_Vb_E;
     490                 :            : double Qcer_Vvar_Nsat_GND;
     491                 :            : double Qcer_Ve_E;
     492                 :            : #endif
     493                 :            : #endif
     494                 :            : #if defined(_DYNAMIC)
     495                 :            : double Qgd;
     496                 :            : #if defined(_DERIVATE)
     497                 :            : double Qgd_Vb_G;
     498                 :            : double Qgd_Vvar_Nsat_GND;
     499                 :            : #endif
     500                 :            : #endif
     501                 :            : double Imult;
     502                 :            : #if defined(_DERIVATE)
     503                 :            : double Imult_Vb_E;
     504                 :            : double Imult_Vvar_Nsat_GND;
     505                 :            : double Imult_VG_E;
     506                 :            : double Imult_VC_e;
     507                 :            : double Imult_Vvar_Ql_GND;
     508                 :            : double Imult_Vvar_Mucinv_GND;
     509                 :            : double Imult_Vvar_dVecdt_GND;
     510                 :            : #endif
     511                 :            : double Igen;
     512                 :            : #if defined(_DERIVATE)
     513                 :            : double Igen_Vb_E;
     514                 :            : double Igen_Vvar_Nsat_GND;
     515                 :            : #endif
     516                 :            : double Imos;
     517                 :            : #if defined(_DERIVATE)
     518                 :            : double Imos_Vb_E;
     519                 :            : double Imos_VG_E;
     520                 :            : #endif
     521                 :            : double Ibss;
     522                 :            : #if defined(_DERIVATE)
     523                 :            : double Ibss_Vvar_Ql_GND;
     524                 :            : double Ibss_Vb_E;
     525                 :            : double Ibss_Vvar_Nsat_GND;
     526                 :            : #endif
     527                 :            : double Ic;
     528                 :            : #if defined(_DERIVATE)
     529                 :            : double Ic_VC_e;
     530                 :            : double Ic_Vvar_Ql_GND;
     531                 :            : double Ic_Vb_E;
     532                 :            : double Ic_Vvar_Nsat_GND;
     533                 :            : double Ic_Vvar_Mucinv_GND;
     534                 :            : double Ic_Vvar_dVecdt_GND;
     535                 :            : #endif
     536                 :            : double Icss;
     537                 :            : #if defined(_DERIVATE)
     538                 :            : double Icss_VC_e;
     539                 :            : double Icss_Vvar_Ql_GND;
     540                 :            : double Icss_Vb_E;
     541                 :            : double Icss_Vvar_Nsat_GND;
     542                 :            : double Icss_Vvar_Mucinv_GND;
     543                 :            : #endif
     544                 :            : double It;
     545                 :            : #if defined(_DERIVATE)
     546                 :            : double It_VC_e;
     547                 :            : double It_Vvar_Ql_GND;
     548                 :            : double It_Vb_E;
     549                 :            : double It_Vvar_Nsat_GND;
     550                 :            : double It_Vvar_Mucinv_GND;
     551                 :            : #endif
     552                 :            : double M;
     553                 :            : #if defined(_DERIVATE)
     554                 :            : double M_Vb_E;
     555                 :            : double M_Vvar_Nsat_GND;
     556                 :            : #endif
     557                 :            : double Vnrt;
     558                 :            : #if defined(_DERIVATE)
     559                 :            : double Vnrt_Vb_E;
     560                 :            : #endif
     561                 :            : double BVcbo;
     562                 :            : #if defined(_DERIVATE)
     563                 :            : double BVcbo_Vvar_Nsat_GND;
     564                 :            : #endif
     565                 :            : double Vebq;
     566                 :            : double Vebd;
     567                 :            : double Vebj;
     568                 :            : double Rb;
     569                 :            : #if defined(_DERIVATE)
     570                 :            : double Rb_Vvar_Ql_GND;
     571                 :            : double Rb_Vb_E;
     572                 :            : double Rb_Vvar_Nsat_GND;
     573                 :            : double Rb_Vvar_Mucinv_GND;
     574                 :            : #endif
     575                 :            : double Neff;
     576                 :            : #if defined(_DERIVATE)
     577                 :            : double Neff_Vb_E;
     578                 :            : double Neff_Vvar_Nsat_GND;
     579                 :            : double Neff_Vvar_Mucinv_GND;
     580                 :            : double Neff_Vvar_Ql_GND;
     581                 :            : #endif
     582                 :            : double Deltap;
     583                 :            : #if defined(_DERIVATE)
     584                 :            : double Deltap_Vvar_Ql_GND;
     585                 :            : double Deltap_Vvar_Mucinv_GND;
     586                 :            : double Deltap_Vb_E;
     587                 :            : double Deltap_Vvar_Nsat_GND;
     588                 :            : #endif
     589                 :            : double Plo;
     590                 :            : #if defined(_DERIVATE)
     591                 :            : double Plo_Vvar_Ql_GND;
     592                 :            : double Plo_Vvar_Mucinv_GND;
     593                 :            : double Plo_Vb_E;
     594                 :            : double Plo_Vvar_Nsat_GND;
     595                 :            : #endif
     596                 :            : double Tanh;
     597                 :            : #if defined(_DERIVATE)
     598                 :            : double Tanh_Vb_E;
     599                 :            : double Tanh_Vvar_Nsat_GND;
     600                 :            : double Tanh_Vvar_Mucinv_GND;
     601                 :            : #endif
     602                 :            : double WL2;
     603                 :            : #if defined(_DERIVATE)
     604                 :            : double WL2_Vb_E;
     605                 :            : double WL2_Vvar_Nsat_GND;
     606                 :            : double WL2_Vvar_Mucinv_GND;
     607                 :            : #endif
     608                 :            : double WL;
     609                 :            : #if defined(_DERIVATE)
     610                 :            : double WL_Vb_E;
     611                 :            : double WL_Vvar_Nsat_GND;
     612                 :            : double WL_Vvar_Mucinv_GND;
     613                 :            : #endif
     614                 :            : double L;
     615                 :            : #if defined(_DERIVATE)
     616                 :            : double L_Vvar_Mucinv_GND;
     617                 :            : #endif
     618                 :            : double Dc;
     619                 :            : #if defined(_DERIVATE)
     620                 :            : double Dc_Vvar_Mucinv_GND;
     621                 :            : #endif
     622                 :            : double Mueff;
     623                 :            : #if defined(_DERIVATE)
     624                 :            : double Mueff_Vvar_Mucinv_GND;
     625                 :            : double Mueff_Vvar_Ql_GND;
     626                 :            : double Mueff_Vb_E;
     627                 :            : double Mueff_Vvar_Nsat_GND;
     628                 :            : #endif
     629                 :            : double Mupc;
     630                 :            : #if defined(_DERIVATE)
     631                 :            : double Mupc_Vvar_Mucinv_GND;
     632                 :            : #endif
     633                 :            : double Munc;
     634                 :            : #if defined(_DERIVATE)
     635                 :            : double Munc_Vvar_Mucinv_GND;
     636                 :            : #endif
     637                 :            : #if defined(_DYNAMIC)
     638                 :            : double Cgd;
     639                 :            : #if defined(_DERIVATE)
     640                 :            : double Cgd_Vb_G;
     641                 :            : double Cgd_Vvar_Nsat_GND;
     642                 :            : #endif
     643                 :            : #endif
     644                 :            : #if defined(_DYNAMIC)
     645                 :            : double Cgdj;
     646                 :            : #if defined(_DERIVATE)
     647                 :            : double Cgdj_Vb_G;
     648                 :            : double Cgdj_Vvar_Nsat_GND;
     649                 :            : #endif
     650                 :            : #endif
     651                 :            : double Cdsj;
     652                 :            : double Ccer;
     653                 :            : #if defined(_DERIVATE)
     654                 :            : double Ccer_Vvar_Ql_GND;
     655                 :            : double Ccer_Vb_E;
     656                 :            : double Ccer_Vvar_Nsat_GND;
     657                 :            : #endif
     658                 :            : double Cbcj;
     659                 :            : #if defined(_DERIVATE)
     660                 :            : double Cbcj_Vb_E;
     661                 :            : double Cbcj_Vvar_Nsat_GND;
     662                 :            : #endif
     663                 :            : double Qbi;
     664                 :            : double Qb;
     665                 :            : #if defined(_DERIVATE)
     666                 :            : double Qb_Vb_E;
     667                 :            : double Qb_Vvar_Nsat_GND;
     668                 :            : #endif
     669                 :            : #if defined(_DYNAMIC)
     670                 :            : double Qds;
     671                 :            : #if defined(_DERIVATE)
     672                 :            : double Qds_Vb_E;
     673                 :            : double Qds_Vvar_Nsat_GND;
     674                 :            : #endif
     675                 :            : #endif
     676                 :            : #if defined(_DYNAMIC)
     677                 :            : double Qgs;
     678                 :            : #if defined(_DERIVATE)
     679                 :            : double Qgs_VG_E;
     680                 :            : #endif
     681                 :            : #endif
     682                 :            : double W;
     683                 :            : #if defined(_DERIVATE)
     684                 :            : double W_Vb_E;
     685                 :            : double W_Vvar_Nsat_GND;
     686                 :            : #endif
     687                 :            : double Wbcj;
     688                 :            : #if defined(_DERIVATE)
     689                 :            : double Wbcj_Vb_E;
     690                 :            : double Wbcj_Vvar_Nsat_GND;
     691                 :            : #endif
     692                 :            : double Wdsj;
     693                 :            : #if defined(_DYNAMIC)
     694                 :            : double Wgdj;
     695                 :            : #if defined(_DERIVATE)
     696                 :            : double Wgdj_Vb_G;
     697                 :            : double Wgdj_Vvar_Nsat_GND;
     698                 :            : #endif
     699                 :            : #endif
     700                 :            : double Nscl;
     701                 :            : #if defined(_DERIVATE)
     702                 :            : double Nscl_Vvar_Nsat_GND;
     703                 :            : #endif
     704                 :            : double dVecdt;
     705                 :            : #if defined(_DERIVATE)
     706                 :            : double dVecdt_Vvar_dVecdt_GND;
     707                 :            : #endif
     708                 :            : double Mucinv;
     709                 :            : #if defined(_DERIVATE)
     710                 :            : double Mucinv_Vvar_Mucinv_GND;
     711                 :            : #endif
     712                 :            : double Nsat;
     713                 :            : #if defined(_DERIVATE)
     714                 :            : double Nsat_Vvar_Nsat_GND;
     715                 :            : #endif
     716                 :            : double Ql;
     717                 :            : #if defined(_DERIVATE)
     718                 :            : double Ql_Vvar_Ql_GND;
     719                 :            : #endif
     720                 :            : double Vth;
     721                 :            : #if defined(_DERIVATE)
     722                 :            : double Vth_VG_E;
     723                 :            : #endif
     724                 :            : double Vbc;
     725                 :            : #if defined(_DERIVATE)
     726                 :            : double Vbc_Vb_E;
     727                 :            : #endif
     728                 :            : double Vec;
     729                 :            : #if defined(_DERIVATE)
     730                 :            : double Vec_Ve_E;
     731                 :            : #endif
     732                 :            : double Vae;
     733                 :            : #if defined(_DERIVATE)
     734                 :            : double Vae_VC_e;
     735                 :            : #endif
     736                 :            : double Veb;
     737                 :            : #if defined(_DERIVATE)
     738                 :            : double Veb_Ve_b;
     739                 :            : #endif
     740                 :            : double Vds;
     741                 :            : #if defined(_DERIVATE)
     742                 :            : double Vds_Vb_E;
     743                 :            : #endif
     744                 :            : double Vgs;
     745                 :            : #if defined(_DERIVATE)
     746                 :            : double Vgs_VG_E;
     747                 :            : #endif
     748                 :            : double Vdg;
     749                 :            : #if defined(_DERIVATE)
     750                 :            : double Vdg_Vb_G;
     751                 :            : #endif
     752                 :            : #if defined(_DERIVATE)
     753                 :          0 : Vdg_Vb_G=1.0;
     754                 :            : #endif
     755         [ #  # ]:          0 : Vdg=BP(b,G);
     756                 :            : #if defined(_DERIVATE)
     757                 :          0 : Vgs_VG_E=1.0;
     758                 :            : #endif
     759         [ #  # ]:          0 : Vgs=BP(G,E);
     760                 :            : #if defined(_DERIVATE)
     761                 :          0 : Vds_Vb_E=1.0;
     762                 :            : #endif
     763         [ #  # ]:          0 : Vds=BP(b,E);
     764                 :            : #if defined(_DERIVATE)
     765                 :          0 : Veb_Ve_b=1.0;
     766                 :            : #endif
     767         [ #  # ]:          0 : Veb=BP(e,b);
     768                 :            : #if defined(_DERIVATE)
     769                 :          0 : Vae_VC_e=1.0;
     770                 :            : #endif
     771         [ #  # ]:          0 : Vae=BP(C,e);
     772                 :            : #if defined(_DERIVATE)
     773                 :          0 : Vec_Ve_E=1.0;
     774                 :            : #endif
     775         [ #  # ]:          0 : Vec=BP(e,E);
     776                 :            : #if defined(_DERIVATE)
     777                 :          0 : Vbc_Vb_E=Vds_Vb_E;
     778                 :            : #endif
     779                 :          0 : Vbc=Vds;
     780                 :            : #if defined(_DERIVATE)
     781                 :          0 : Vth_VG_E=Vgs_VG_E;
     782                 :            : #endif
     783                 :          0 : Vth=(Vgs-Vt);
     784                 :            : #if defined(_DERIVATE)
     785                 :          0 : Ql_Vvar_Ql_GND=1.0;
     786                 :            : #endif
     787                 :          0 : Ql=NP(var_Ql);
     788                 :            : #if defined(_DERIVATE)
     789                 :          0 : Nsat_Vvar_Nsat_GND=1.0;
     790                 :            : #endif
     791                 :          0 : Nsat=NP(var_Nsat);
     792                 :            : #if defined(_DERIVATE)
     793                 :          0 : Mucinv_Vvar_Mucinv_GND=1.0;
     794                 :            : #endif
     795                 :          0 : Mucinv=NP(var_Mucinv);
     796                 :            : #if defined(_DERIVATE)
     797                 :          0 : dVecdt_Vvar_dVecdt_GND=1.0;
     798                 :            : #endif
     799                 :          0 : dVecdt=NP(var_dVecdt);
     800                 :            : {
     801         [ #  # ]:          0 : double m00_max(d00_max0,(Nl+Nsat),1e-20)
     802                 :            : #if defined(_DERIVATE)
     803         [ #  # ]:          0 : double m10_max(d10_max0,d00_max0,(Nl+Nsat),1e-20)
     804                 :            : #endif
     805                 :            : #if defined(_DERIVATE)
     806                 :          0 : Nscl_Vvar_Nsat_GND=(d10_max0*Nsat_Vvar_Nsat_GND);
     807                 :            : #endif
     808                 :          0 : Nscl=d00_max0;
     809                 :            : }
     810                 :            : #ifdef _DYNAMIC
     811         [ #  # ]:          0 : if
     812                 :            : (Vdg>(-Vtd))
     813                 :            : {
     814                 :            : #if defined(_DYNAMIC)
     815                 :            : {
     816                 :          0 : double m00_sqrt(d00_sqrt0,((((2*1.03594e-10)*(Vdg+Vtd))/1.602176462e-19)/Nscl))
     817         [ #  # ]:          0 : double m00_min(d00_min1,d00_sqrt0,Wl)
     818                 :            : #if defined(_DERIVATE)
     819                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,((((2*1.03594e-10)*(Vdg+Vtd))/1.602176462e-19)/Nscl))
     820         [ #  # ]:          0 : double m10_min(d10_min1,d00_min1,d00_sqrt0,Wl)
     821                 :            : #endif
     822                 :            : #if defined(_DERIVATE)
     823                 :          0 : Wgdj_Vb_G=(d10_min1*((((2*1.03594e-10)*Vdg_Vb_G)/1.602176462e-19)/Nscl)*d10_sqrt0);
     824                 :          0 : Wgdj_Vvar_Nsat_GND=(d10_min1*(-(((2*1.03594e-10)*(Vdg+Vtd))/1.602176462e-19)*Nscl_Vvar_Nsat_GND/Nscl/Nscl)*d10_sqrt0);
     825                 :            : #endif
     826                 :          0 : Wgdj=d00_min1;
     827                 :            : }
     828                 :            : #endif
     829                 :            : }
     830                 :            : else
     831                 :            : {
     832                 :            : #if defined(_DYNAMIC)
     833                 :            : #if defined(_DERIVATE)
     834                 :          0 : Wgdj_Vb_G=0.0;
     835                 :          0 : Wgdj_Vvar_Nsat_GND=0.0;
     836                 :            : #endif
     837                 :          0 : Wgdj=0;
     838                 :            : #endif
     839                 :            : }
     840                 :            : #endif /* if (...) */
     841                 :            : #ifdef _DYNAMIC
     842         [ #  # ]:          0 : if
     843                 :            : (Vds>(-0.6))
     844                 :            : {
     845                 :            : #if defined(_DYNAMIC)
     846                 :            : {
     847                 :          0 : double m00_sqrt(d00_sqrt0,((((2*1.03594e-10)*(Vds+0.6))/1.602176462e-19)/Nscl))
     848         [ #  # ]:          0 : double m00_min(d00_min1,d00_sqrt0,Wl)
     849                 :            : #if defined(_DERIVATE)
     850                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,((((2*1.03594e-10)*(Vds+0.6))/1.602176462e-19)/Nscl))
     851         [ #  # ]:          0 : double m10_min(d10_min1,d00_min1,d00_sqrt0,Wl)
     852                 :            : #endif
     853                 :          0 : Wdsj=d00_min1;
     854                 :            : }
     855                 :            : #endif
     856                 :            : }
     857                 :            : else
     858                 :            : {
     859                 :            : #if defined(_DYNAMIC)
     860                 :          0 : Wdsj=0;
     861                 :            : #endif
     862                 :            : }
     863                 :            : #endif /* if (...) */
     864         [ #  # ]:          0 : if
     865                 :            : (Vbc>(-0.6))
     866                 :            : {
     867                 :            : {
     868                 :          0 : double m00_sqrt(d00_sqrt0,((((2*1.03594e-10)*(Vbc+0.6))/1.602176462e-19)/Nscl))
     869         [ #  # ]:          0 : double m00_min(d00_min1,d00_sqrt0,Wl)
     870                 :            : #if defined(_DERIVATE)
     871                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,((((2*1.03594e-10)*(Vbc+0.6))/1.602176462e-19)/Nscl))
     872         [ #  # ]:          0 : double m10_min(d10_min1,d00_min1,d00_sqrt0,Wl)
     873                 :            : #endif
     874                 :            : #if defined(_DERIVATE)
     875                 :          0 : Wbcj_Vb_E=(d10_min1*((((2*1.03594e-10)*Vbc_Vb_E)/1.602176462e-19)/Nscl)*d10_sqrt0);
     876                 :          0 : Wbcj_Vvar_Nsat_GND=(d10_min1*(-(((2*1.03594e-10)*(Vbc+0.6))/1.602176462e-19)*Nscl_Vvar_Nsat_GND/Nscl/Nscl)*d10_sqrt0);
     877                 :            : #endif
     878                 :          0 : Wbcj=d00_min1;
     879                 :            : }
     880                 :            : }
     881                 :            : else
     882                 :            : {
     883                 :            : #if defined(_DERIVATE)
     884                 :          0 : Wbcj_Vb_E=0.0;
     885                 :          0 : Wbcj_Vvar_Nsat_GND=0.0;
     886                 :            : #endif
     887                 :          0 : Wbcj=0;
     888                 :            : }
     889                 :            : #if defined(_DERIVATE)
     890                 :          0 : W_Vb_E=(-Wbcj_Vb_E);
     891                 :          0 : W_Vvar_Nsat_GND=(-Wbcj_Vvar_Nsat_GND);
     892                 :            : #endif
     893                 :          0 : W=(Wl-Wbcj);
     894                 :            : #if defined(_DYNAMIC)
     895                 :            : #if defined(_DERIVATE)
     896                 :          0 : Qgs_VG_E=(Cgs*Vgs_VG_E);
     897                 :            : #endif
     898                 :          0 : Qgs=(Cgs*Vgs);
     899                 :            : #endif
     900                 :            : #ifdef _DYNAMIC
     901         [ #  # ]:          0 : if
     902                 :            : (Vds>(-0.6))
     903                 :            : {
     904                 :            : #if defined(_DYNAMIC)
     905                 :            : {
     906                 :          0 : double m00_sqrt(d00_sqrt0,((((2*1.03594e-10)*(Vds+0.6))*1.602176462e-19)*Nscl))
     907                 :            : #if defined(_DERIVATE)
     908                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,((((2*1.03594e-10)*(Vds+0.6))*1.602176462e-19)*Nscl))
     909                 :            : #endif
     910                 :            : #if defined(_DERIVATE)
     911                 :          0 : Qds_Vb_E=(Ads*((2*1.03594e-10)*Vds_Vb_E)*1.602176462e-19*Nscl*d10_sqrt0);
     912                 :          0 : Qds_Vvar_Nsat_GND=(Ads*((((2*1.03594e-10)*(Vds+0.6))*1.602176462e-19)*Nscl_Vvar_Nsat_GND)*d10_sqrt0);
     913                 :            : #endif
     914                 :          0 : Qds=(Ads*d00_sqrt0);
     915                 :            : }
     916                 :            : #endif
     917                 :            : }
     918                 :            : else
     919                 :            : {
     920                 :            : #if defined(_DYNAMIC)
     921                 :            : #if defined(_DERIVATE)
     922                 :          0 : Qds_Vb_E=0.0;
     923                 :          0 : Qds_Vvar_Nsat_GND=0.0;
     924                 :            : #endif
     925                 :          0 : Qds=0;
     926                 :            : #endif
     927                 :            : }
     928                 :            : #endif /* if (...) */
     929                 :            : #if defined(_DERIVATE)
     930                 :          0 : Qb_Vb_E=((1.602176462e-19*A)*W_Vb_E)*Nscl;
     931                 :          0 : Qb_Vvar_Nsat_GND=((((1.602176462e-19*A)*W_Vvar_Nsat_GND)*Nscl)+(((1.602176462e-19*A)*W)*Nscl_Vvar_Nsat_GND));
     932                 :            : #endif
     933                 :          0 : Qb=(((1.602176462e-19*A)*W)*Nscl);
     934                 :            : #if defined(_DYNAMIC)
     935                 :            : {
     936                 :          0 : double m00_sqrt(d00_sqrt0,((((2*1.03594e-10)*1.602176462e-19)*Nl)*0.6))
     937                 :          0 : Qbi=(A*d00_sqrt0);
     938                 :            : }
     939                 :            : #endif
     940                 :            : #if defined(_DERIVATE)
     941                 :          0 : Cbcj_Vb_E=(-(A*1.03594e-10)*Wbcj_Vb_E/(Wbcj+1e-20)/(Wbcj+1e-20));
     942                 :          0 : Cbcj_Vvar_Nsat_GND=(-(A*1.03594e-10)*Wbcj_Vvar_Nsat_GND/(Wbcj+1e-20)/(Wbcj+1e-20));
     943                 :            : #endif
     944                 :          0 : Cbcj=((A*1.03594e-10)/(Wbcj+1e-20));
     945                 :            : #if defined(_DERIVATE)
     946                 :          0 : Ccer_Vvar_Ql_GND=((Ql_Vvar_Ql_GND*Cbcj/3)/(Qb+1e-20));
     947                 :          0 : Ccer_Vb_E=((((Ql*Cbcj_Vb_E)/3)*(Qb+1e-20)-((Ql*Cbcj)/3)*Qb_Vb_E)/(Qb+1e-20)/(Qb+1e-20));
     948                 :          0 : Ccer_Vvar_Nsat_GND=((((Ql*Cbcj_Vvar_Nsat_GND)/3)*(Qb+1e-20)-((Ql*Cbcj)/3)*Qb_Vvar_Nsat_GND)/(Qb+1e-20)/(Qb+1e-20));
     949                 :            : #endif
     950                 :          0 : Ccer=(((Ql*Cbcj)/3)/(Qb+1e-20));
     951                 :            : #if defined(_DYNAMIC)
     952                 :          0 : Cdsj=((Ads*1.03594e-10)/(Wdsj+1e-20));
     953                 :            : #endif
     954                 :            : #if defined(_DYNAMIC)
     955                 :            : #if defined(_DERIVATE)
     956                 :          0 : Cgdj_Vb_G=(-(Agd*1.03594e-10)*Wgdj_Vb_G/(Wgdj+1e-20)/(Wgdj+1e-20));
     957                 :          0 : Cgdj_Vvar_Nsat_GND=(-(Agd*1.03594e-10)*Wgdj_Vvar_Nsat_GND/(Wgdj+1e-20)/(Wgdj+1e-20));
     958                 :            : #endif
     959                 :          0 : Cgdj=((Agd*1.03594e-10)/(Wgdj+1e-20));
     960                 :            : #endif
     961                 :            : #ifdef _DYNAMIC
     962         [ #  # ]:          0 : if
     963                 :            : (Vds<(Vgs-Vtd))
     964                 :            : {
     965                 :            : #if defined(_DYNAMIC)
     966                 :            : #if defined(_DERIVATE)
     967                 :          0 : Cgd_Vb_G=0.0;
     968                 :          0 : Cgd_Vvar_Nsat_GND=0.0;
     969                 :            : #endif
     970                 :          0 : Cgd=Coxd;
     971                 :            : #endif
     972                 :            : }
     973                 :            : else
     974                 :            : {
     975                 :            : #if defined(_DYNAMIC)
     976                 :            : #if defined(_DERIVATE)
     977                 :          0 : Cgd_Vb_G=(((Coxd*Cgdj_Vb_G)*(Coxd+Cgdj)-(Coxd*Cgdj)*Cgdj_Vb_G)/(Coxd+Cgdj)/(Coxd+Cgdj));
     978                 :          0 : Cgd_Vvar_Nsat_GND=(((Coxd*Cgdj_Vvar_Nsat_GND)*(Coxd+Cgdj)-(Coxd*Cgdj)*Cgdj_Vvar_Nsat_GND)/(Coxd+Cgdj)/(Coxd+Cgdj));
     979                 :            : #endif
     980                 :          0 : Cgd=((Coxd*Cgdj)/(Coxd+Cgdj));
     981                 :            : #endif
     982                 :            : }
     983                 :            : #endif /* if (...) */
     984                 :            : #if defined(_DERIVATE)
     985                 :          0 : Munc_Vvar_Mucinv_GND=(-1*Mucinv_Vvar_Mucinv_GND/((1/Mun)+Mucinv)/((1/Mun)+Mucinv));
     986                 :            : #endif
     987                 :          0 : Munc=(1/((1/Mun)+Mucinv));
     988                 :            : #if defined(_DERIVATE)
     989                 :          0 : Mupc_Vvar_Mucinv_GND=(-1*Mucinv_Vvar_Mucinv_GND/((1/Mup)+Mucinv)/((1/Mup)+Mucinv));
     990                 :            : #endif
     991                 :          0 : Mupc=(1/((1/Mup)+Mucinv));
     992         [ #  # ]:          0 : if
     993                 :            : (Ql>0)
     994                 :            : {
     995                 :            : #if defined(_DERIVATE)
     996                 :          0 : Mueff_Vvar_Mucinv_GND=(Munc_Vvar_Mucinv_GND+(Mupc_Vvar_Mucinv_GND*Ql/(Ql+Qb)));
     997                 :          0 : Mueff_Vvar_Ql_GND=(((Mupc*Ql_Vvar_Ql_GND)*(Ql+Qb)-(Mupc*Ql)*Ql_Vvar_Ql_GND)/(Ql+Qb)/(Ql+Qb));
     998                 :          0 : Mueff_Vb_E=(-(Mupc*Ql)*Qb_Vb_E/(Ql+Qb)/(Ql+Qb));
     999                 :          0 : Mueff_Vvar_Nsat_GND=(-(Mupc*Ql)*Qb_Vvar_Nsat_GND/(Ql+Qb)/(Ql+Qb));
    1000                 :            : #endif
    1001                 :          0 : Mueff=(Munc+((Mupc*Ql)/(Ql+Qb)));
    1002                 :            : }
    1003                 :            : else
    1004                 :            : {
    1005                 :            : #if defined(_DERIVATE)
    1006                 :          0 : Mueff_Vvar_Mucinv_GND=Munc_Vvar_Mucinv_GND;
    1007                 :          0 : Mueff_Vvar_Ql_GND=0.0;
    1008                 :          0 : Mueff_Vb_E=0.0;
    1009                 :          0 : Mueff_Vvar_Nsat_GND=0.0;
    1010                 :            : #endif
    1011                 :          0 : Mueff=Munc;
    1012                 :            : }
    1013                 :            : #if defined(_DERIVATE)
    1014                 :          0 : Dc_Vvar_Mucinv_GND=(((((((2*0.0*m10_vt(Tj))*Munc)+((2*m00_vt(Tj))*Munc_Vvar_Mucinv_GND))*Mupc)+(((2*m00_vt(Tj))*Munc)*Mupc_Vvar_Mucinv_GND))*(Munc+Mupc)-(((2*m00_vt(Tj))*Munc)*Mupc)*(Munc_Vvar_Mucinv_GND+Mupc_Vvar_Mucinv_GND))/(Munc+Mupc)/(Munc+Mupc));
    1015                 :            : #endif
    1016                 :          0 : Dc=((((2*m00_vt(Tj))*Munc)*Mupc)/(Munc+Mupc));
    1017                 :            : {
    1018                 :          0 : double m00_sqrt(d00_sqrt0,(Dc*Tau))
    1019                 :            : #if defined(_DERIVATE)
    1020                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,(Dc*Tau))
    1021                 :            : #endif
    1022                 :            : #if defined(_DERIVATE)
    1023                 :          0 : L_Vvar_Mucinv_GND=Dc_Vvar_Mucinv_GND*Tau*d10_sqrt0;
    1024                 :            : #endif
    1025                 :          0 : L=d00_sqrt0;
    1026                 :            : }
    1027                 :            : #if defined(_DERIVATE)
    1028                 :          0 : WL_Vb_E=(W_Vb_E/L);
    1029                 :          0 : WL_Vvar_Nsat_GND=(W_Vvar_Nsat_GND/L);
    1030                 :          0 : WL_Vvar_Mucinv_GND=(-W*L_Vvar_Mucinv_GND/L/L);
    1031                 :            : #endif
    1032                 :          0 : WL=(W/L);
    1033                 :            : #if defined(_DERIVATE)
    1034                 :          0 : WL2_Vb_E=(WL_Vb_E/2);
    1035                 :          0 : WL2_Vvar_Nsat_GND=(WL_Vvar_Nsat_GND/2);
    1036                 :          0 : WL2_Vvar_Mucinv_GND=(WL_Vvar_Mucinv_GND/2);
    1037                 :            : #endif
    1038                 :          0 : WL2=(WL/2);
    1039                 :            : {
    1040                 :          0 : double m00_tanh(d00_tanh0,WL2)
    1041                 :            : #if defined(_DERIVATE)
    1042                 :          0 : double m10_tanh(d10_tanh0,d00_tanh0,WL2)
    1043                 :            : #endif
    1044                 :            : #if defined(_DERIVATE)
    1045                 :          0 : Tanh_Vb_E=WL2_Vb_E*d10_tanh0;
    1046                 :          0 : Tanh_Vvar_Nsat_GND=WL2_Vvar_Nsat_GND*d10_tanh0;
    1047                 :          0 : Tanh_Vvar_Mucinv_GND=WL2_Vvar_Mucinv_GND*d10_tanh0;
    1048                 :            : #endif
    1049                 :          0 : Tanh=d00_tanh0;
    1050                 :            : }
    1051         [ #  # ]:          0 : if
    1052                 :            : (WL>0)
    1053                 :            : {
    1054                 :            : #if defined(_DERIVATE)
    1055                 :          0 : Plo_Vvar_Ql_GND=(Ql_Vvar_Ql_GND/(((1.602176462e-19*A)*L)*Tanh));
    1056                 :          0 : Plo_Vvar_Mucinv_GND=(-Ql*((((1.602176462e-19*A)*L_Vvar_Mucinv_GND)*Tanh)+(((1.602176462e-19*A)*L)*Tanh_Vvar_Mucinv_GND))/(((1.602176462e-19*A)*L)*Tanh)/(((1.602176462e-19*A)*L)*Tanh));
    1057                 :          0 : Plo_Vb_E=(-Ql*(((1.602176462e-19*A)*L)*Tanh_Vb_E)/(((1.602176462e-19*A)*L)*Tanh)/(((1.602176462e-19*A)*L)*Tanh));
    1058                 :          0 : Plo_Vvar_Nsat_GND=(-Ql*(((1.602176462e-19*A)*L)*Tanh_Vvar_Nsat_GND)/(((1.602176462e-19*A)*L)*Tanh)/(((1.602176462e-19*A)*L)*Tanh));
    1059                 :            : #endif
    1060                 :          0 : Plo=(Ql/(((1.602176462e-19*A)*L)*Tanh));
    1061                 :            : }
    1062                 :            : else
    1063                 :            : {
    1064                 :            : #if defined(_DERIVATE)
    1065                 :          0 : Plo_Vvar_Ql_GND=0.0;
    1066                 :          0 : Plo_Vvar_Mucinv_GND=0.0;
    1067                 :          0 : Plo_Vb_E=0.0;
    1068                 :          0 : Plo_Vvar_Nsat_GND=0.0;
    1069                 :            : #endif
    1070                 :          0 : Plo=0;
    1071                 :            : }
    1072         [ #  # ]:          0 : if
    1073                 :            : (WL>0)
    1074                 :            : {
    1075                 :            : {
    1076                 :          0 : double m00_sinh(d00_sinh0,WL2)
    1077                 :          0 : double m00_sinh(d00_sinh1,WL)
    1078                 :            : #if defined(_DERIVATE)
    1079                 :          0 : double m10_sinh(d10_sinh0,d00_sinh0,WL2)
    1080                 :          0 : double m10_sinh(d10_sinh1,d00_sinh1,WL)
    1081                 :            : #endif
    1082                 :            : #if defined(_DERIVATE)
    1083                 :          0 : Deltap_Vvar_Ql_GND=(Plo_Vvar_Ql_GND*d00_sinh0/d00_sinh1);
    1084                 :          0 : Deltap_Vvar_Mucinv_GND=((((Plo_Vvar_Mucinv_GND*d00_sinh0)+(Plo*WL2_Vvar_Mucinv_GND*d10_sinh0))*d00_sinh1-(Plo*d00_sinh0)*WL_Vvar_Mucinv_GND*d10_sinh1)/d00_sinh1/d00_sinh1);
    1085                 :          0 : Deltap_Vb_E=((((Plo_Vb_E*d00_sinh0)+(Plo*WL2_Vb_E*d10_sinh0))*d00_sinh1-(Plo*d00_sinh0)*WL_Vb_E*d10_sinh1)/d00_sinh1/d00_sinh1);
    1086                 :          0 : Deltap_Vvar_Nsat_GND=((((Plo_Vvar_Nsat_GND*d00_sinh0)+(Plo*WL2_Vvar_Nsat_GND*d10_sinh0))*d00_sinh1-(Plo*d00_sinh0)*WL_Vvar_Nsat_GND*d10_sinh1)/d00_sinh1/d00_sinh1);
    1087                 :            : #endif
    1088                 :          0 : Deltap=((Plo*d00_sinh0)/d00_sinh1);
    1089                 :            : }
    1090                 :            : }
    1091                 :            : else
    1092                 :            : {
    1093                 :            : #if defined(_DERIVATE)
    1094                 :          0 : Deltap_Vvar_Ql_GND=0.0;
    1095                 :          0 : Deltap_Vvar_Mucinv_GND=0.0;
    1096                 :          0 : Deltap_Vb_E=0.0;
    1097                 :          0 : Deltap_Vvar_Nsat_GND=0.0;
    1098                 :            : #endif
    1099                 :          0 : Deltap=0;
    1100                 :            : }
    1101         [ #  # ]:          0 : if
    1102                 :            : (WL>0)
    1103                 :            : {
    1104                 :            : double Nl2;
    1105                 :            : double Plo2;
    1106                 :            : double Con2;
    1107                 :            : double Con3;
    1108                 :            : double Con4;
    1109                 :            : #if defined(_DERIVATE)
    1110                 :            : double Plo2_Vvar_Ql_GND;
    1111                 :            : #endif
    1112                 :            : #if defined(_DERIVATE)
    1113                 :            : double Plo2_Vvar_Mucinv_GND;
    1114                 :            : #endif
    1115                 :            : #if defined(_DERIVATE)
    1116                 :            : double Plo2_Vb_E;
    1117                 :            : #endif
    1118                 :            : #if defined(_DERIVATE)
    1119                 :            : double Plo2_Vvar_Nsat_GND;
    1120                 :            : #endif
    1121                 :            : #if defined(_DERIVATE)
    1122                 :            : double Con2_Vb_E;
    1123                 :            : #endif
    1124                 :            : #if defined(_DERIVATE)
    1125                 :            : double Con2_Vvar_Nsat_GND;
    1126                 :            : #endif
    1127                 :            : #if defined(_DERIVATE)
    1128                 :            : double Con2_Vvar_Mucinv_GND;
    1129                 :            : #endif
    1130                 :            : #if defined(_DERIVATE)
    1131                 :            : double Con3_Vvar_Ql_GND;
    1132                 :            : #endif
    1133                 :            : #if defined(_DERIVATE)
    1134                 :            : double Con3_Vvar_Mucinv_GND;
    1135                 :            : #endif
    1136                 :            : #if defined(_DERIVATE)
    1137                 :            : double Con3_Vb_E;
    1138                 :            : #endif
    1139                 :            : #if defined(_DERIVATE)
    1140                 :            : double Con3_Vvar_Nsat_GND;
    1141                 :            : #endif
    1142                 :            : #if defined(_DERIVATE)
    1143                 :            : double Con4_Vvar_Ql_GND;
    1144                 :            : #endif
    1145                 :            : #if defined(_DERIVATE)
    1146                 :            : double Con4_Vvar_Mucinv_GND;
    1147                 :            : #endif
    1148                 :            : #if defined(_DERIVATE)
    1149                 :            : double Con4_Vb_E;
    1150                 :            : #endif
    1151                 :            : #if defined(_DERIVATE)
    1152                 :            : double Con4_Vvar_Nsat_GND;
    1153                 :            : #endif
    1154                 :          0 : Nl2=(Nl*Nl);
    1155                 :            : #if defined(_DERIVATE)
    1156                 :          0 : Plo2_Vvar_Ql_GND=((Plo_Vvar_Ql_GND*Plo)+(Plo*Plo_Vvar_Ql_GND));
    1157                 :          0 : Plo2_Vvar_Mucinv_GND=((Plo_Vvar_Mucinv_GND*Plo)+(Plo*Plo_Vvar_Mucinv_GND));
    1158                 :          0 : Plo2_Vb_E=((Plo_Vb_E*Plo)+(Plo*Plo_Vb_E));
    1159                 :          0 : Plo2_Vvar_Nsat_GND=((Plo_Vvar_Nsat_GND*Plo)+(Plo*Plo_Vvar_Nsat_GND));
    1160                 :            : #endif
    1161                 :          0 : Plo2=(Plo*Plo);
    1162                 :            : {
    1163                 :          0 : double m00_sinh(d00_sinh0,WL)
    1164                 :            : #if defined(_DERIVATE)
    1165                 :          0 : double m10_sinh(d10_sinh0,d00_sinh0,WL)
    1166                 :            : #endif
    1167                 :            : #if defined(_DERIVATE)
    1168                 :          0 : Con2_Vb_E=(-1*WL_Vb_E*d10_sinh0/d00_sinh0/d00_sinh0);
    1169                 :          0 : Con2_Vvar_Nsat_GND=(-1*WL_Vvar_Nsat_GND*d10_sinh0/d00_sinh0/d00_sinh0);
    1170                 :          0 : Con2_Vvar_Mucinv_GND=(-1*WL_Vvar_Mucinv_GND*d10_sinh0/d00_sinh0/d00_sinh0);
    1171                 :            : #endif
    1172                 :          0 : Con2=(1/d00_sinh0);
    1173                 :            : }
    1174                 :            : #if defined(_DERIVATE)
    1175                 :          0 : Con3_Vvar_Ql_GND=Plo2_Vvar_Ql_GND*Con2*Con2;
    1176                 :          0 : Con3_Vvar_Mucinv_GND=((((Plo2_Vvar_Mucinv_GND*Con2)+(Plo2*Con2_Vvar_Mucinv_GND))*Con2)+((Plo2*Con2)*Con2_Vvar_Mucinv_GND));
    1177                 :          0 : Con3_Vb_E=((((Plo2_Vb_E*Con2)+(Plo2*Con2_Vb_E))*Con2)+((Plo2*Con2)*Con2_Vb_E));
    1178                 :          0 : Con3_Vvar_Nsat_GND=((((Plo2_Vvar_Nsat_GND*Con2)+(Plo2*Con2_Vvar_Nsat_GND))*Con2)+((Plo2*Con2)*Con2_Vvar_Nsat_GND));
    1179                 :            : #endif
    1180                 :          0 : Con3=((Plo2*Con2)*Con2);
    1181                 :            : {
    1182                 :          0 : double m00_sqrt(d00_sqrt0,(Nl2+Con3))
    1183                 :            : #if defined(_DERIVATE)
    1184                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,(Nl2+Con3))
    1185                 :            : #endif
    1186                 :            : #if defined(_DERIVATE)
    1187                 :          0 : Con4_Vvar_Ql_GND=((Con3_Vvar_Ql_GND*d10_sqrt0*Tanh*(Nl+((Plo*Con2)*Tanh))-(d00_sqrt0*Tanh)*Plo_Vvar_Ql_GND*Con2*Tanh)/(Nl+((Plo*Con2)*Tanh))/(Nl+((Plo*Con2)*Tanh)));
    1188                 :          0 : Con4_Vvar_Mucinv_GND=((((Con3_Vvar_Mucinv_GND*d10_sqrt0*Tanh)+(d00_sqrt0*Tanh_Vvar_Mucinv_GND))*(Nl+((Plo*Con2)*Tanh))-(d00_sqrt0*Tanh)*((((Plo_Vvar_Mucinv_GND*Con2)+(Plo*Con2_Vvar_Mucinv_GND))*Tanh)+((Plo*Con2)*Tanh_Vvar_Mucinv_GND)))/(Nl+((Plo*Con2)*Tanh))/(Nl+((Plo*Con2)*Tanh)));
    1189                 :          0 : Con4_Vb_E=((((Con3_Vb_E*d10_sqrt0*Tanh)+(d00_sqrt0*Tanh_Vb_E))*(Nl+((Plo*Con2)*Tanh))-(d00_sqrt0*Tanh)*((((Plo_Vb_E*Con2)+(Plo*Con2_Vb_E))*Tanh)+((Plo*Con2)*Tanh_Vb_E)))/(Nl+((Plo*Con2)*Tanh))/(Nl+((Plo*Con2)*Tanh)));
    1190                 :          0 : Con4_Vvar_Nsat_GND=((((Con3_Vvar_Nsat_GND*d10_sqrt0*Tanh)+(d00_sqrt0*Tanh_Vvar_Nsat_GND))*(Nl+((Plo*Con2)*Tanh))-(d00_sqrt0*Tanh)*((((Plo_Vvar_Nsat_GND*Con2)+(Plo*Con2_Vvar_Nsat_GND))*Tanh)+((Plo*Con2)*Tanh_Vvar_Nsat_GND)))/(Nl+((Plo*Con2)*Tanh))/(Nl+((Plo*Con2)*Tanh)));
    1191                 :            : #endif
    1192                 :          0 : Con4=((d00_sqrt0*Tanh)/(Nl+((Plo*Con2)*Tanh)));
    1193                 :            : }
    1194                 :            : {
    1195                 :          0 : double m00_sqrt(d00_sqrt0,(Nl2+Con3))
    1196                 :          0 : double m00_atanh(d00_atanh1,Con4)
    1197                 :            : #if defined(_DERIVATE)
    1198                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,(Nl2+Con3))
    1199                 :          0 : double m10_atanh(d10_atanh1,d00_atanh1,Con4)
    1200                 :            : #endif
    1201                 :            : #if defined(_DERIVATE)
    1202                 :          0 : Neff_Vb_E=((((WL2_Vb_E*d00_sqrt0)+(WL2*Con3_Vb_E*d10_sqrt0))*d00_atanh1-(WL2*d00_sqrt0)*Con4_Vb_E*d10_atanh1)/d00_atanh1/d00_atanh1);
    1203                 :          0 : Neff_Vvar_Nsat_GND=((((WL2_Vvar_Nsat_GND*d00_sqrt0)+(WL2*Con3_Vvar_Nsat_GND*d10_sqrt0))*d00_atanh1-(WL2*d00_sqrt0)*Con4_Vvar_Nsat_GND*d10_atanh1)/d00_atanh1/d00_atanh1);
    1204                 :          0 : Neff_Vvar_Mucinv_GND=((((WL2_Vvar_Mucinv_GND*d00_sqrt0)+(WL2*Con3_Vvar_Mucinv_GND*d10_sqrt0))*d00_atanh1-(WL2*d00_sqrt0)*Con4_Vvar_Mucinv_GND*d10_atanh1)/d00_atanh1/d00_atanh1);
    1205                 :          0 : Neff_Vvar_Ql_GND=(((WL2*Con3_Vvar_Ql_GND*d10_sqrt0)*d00_atanh1-(WL2*d00_sqrt0)*Con4_Vvar_Ql_GND*d10_atanh1)/d00_atanh1/d00_atanh1);
    1206                 :            : #endif
    1207                 :          0 : Neff=((WL2*d00_sqrt0)/d00_atanh1);
    1208                 :            : }
    1209                 :            : }
    1210                 :            : else
    1211                 :            : {
    1212                 :            : #if defined(_DERIVATE)
    1213                 :          0 : Neff_Vb_E=0.0;
    1214                 :          0 : Neff_Vvar_Nsat_GND=0.0;
    1215                 :          0 : Neff_Vvar_Mucinv_GND=0.0;
    1216                 :          0 : Neff_Vvar_Ql_GND=0.0;
    1217                 :            : #endif
    1218                 :          0 : Neff=0;
    1219                 :            : }
    1220         [ #  # ]:          0 : if
    1221                 :            : (Ql<0)
    1222                 :            : {
    1223                 :            : #if defined(_DERIVATE)
    1224                 :          0 : Rb_Vvar_Ql_GND=0.0;
    1225                 :          0 : Rb_Vb_E=(W_Vb_E/(((1.602176462e-19*Munc)*A)*Nl));
    1226                 :          0 : Rb_Vvar_Nsat_GND=(W_Vvar_Nsat_GND/(((1.602176462e-19*Munc)*A)*Nl));
    1227                 :          0 : Rb_Vvar_Mucinv_GND=(-W*(1.602176462e-19*Munc_Vvar_Mucinv_GND)*A*Nl/(((1.602176462e-19*Munc)*A)*Nl)/(((1.602176462e-19*Munc)*A)*Nl));
    1228                 :            : #endif
    1229                 :          0 : Rb=(W/(((1.602176462e-19*Munc)*A)*Nl));
    1230                 :            : }
    1231                 :            : else
    1232                 :            : {
    1233                 :            : #if defined(_DERIVATE)
    1234                 :          0 : Rb_Vvar_Ql_GND=(-W*(((1.602176462e-19*Mueff_Vvar_Ql_GND)*A*Neff)+(((1.602176462e-19*Mueff)*A)*Neff_Vvar_Ql_GND))/(((1.602176462e-19*Mueff)*A)*Neff)/(((1.602176462e-19*Mueff)*A)*Neff));
    1235                 :          0 : Rb_Vb_E=((W_Vb_E*(((1.602176462e-19*Mueff)*A)*Neff)-W*(((1.602176462e-19*Mueff_Vb_E)*A*Neff)+(((1.602176462e-19*Mueff)*A)*Neff_Vb_E)))/(((1.602176462e-19*Mueff)*A)*Neff)/(((1.602176462e-19*Mueff)*A)*Neff));
    1236                 :          0 : Rb_Vvar_Nsat_GND=((W_Vvar_Nsat_GND*(((1.602176462e-19*Mueff)*A)*Neff)-W*(((1.602176462e-19*Mueff_Vvar_Nsat_GND)*A*Neff)+(((1.602176462e-19*Mueff)*A)*Neff_Vvar_Nsat_GND)))/(((1.602176462e-19*Mueff)*A)*Neff)/(((1.602176462e-19*Mueff)*A)*Neff));
    1237                 :          0 : Rb_Vvar_Mucinv_GND=(-W*(((1.602176462e-19*Mueff_Vvar_Mucinv_GND)*A*Neff)+(((1.602176462e-19*Mueff)*A)*Neff_Vvar_Mucinv_GND))/(((1.602176462e-19*Mueff)*A)*Neff)/(((1.602176462e-19*Mueff)*A)*Neff));
    1238                 :            : #endif
    1239                 :          0 : Rb=(W/(((1.602176462e-19*Mueff)*A)*Neff));
    1240                 :            : }
    1241                 :            : #if defined(_DYNAMIC)
    1242                 :          0 : Vebj=(0.6-(((Ql-Qbi)*(Ql-Qbi))/(((((2*1.602176462e-19)*Nl)*1.03594e-10)*A)*A)));
    1243                 :            : #endif
    1244                 :            : #if defined(_DYNAMIC)
    1245                 :            : {
    1246                 :          0 : double m00_logE(d00_logE0,((((Plo/Ni)/Ni)+(1/Nl))*(Nl+Plo)))
    1247                 :          0 : double m00_logE(d00_logE1,((Plo+Nl)/Nl))
    1248                 :            : #if defined(_DERIVATE)
    1249                 :          0 : double m10_logE(d10_logE0,d00_logE0,((((Plo/Ni)/Ni)+(1/Nl))*(Nl+Plo)))
    1250                 :          0 : double m10_logE(d10_logE1,d00_logE1,((Plo+Nl)/Nl))
    1251                 :            : #endif
    1252                 :          0 : Vebd=((m00_vt(Tj)*d00_logE0)-((Dc/Munc)*d00_logE1));
    1253                 :            : }
    1254                 :            : #endif
    1255                 :            : #ifdef _DYNAMIC
    1256         [ #  # ]:          0 : if
    1257                 :            : (Ql<0)
    1258                 :            : {
    1259                 :            : #if defined(_DYNAMIC)
    1260                 :          0 : Vebq=Vebj;
    1261                 :            : #endif
    1262                 :            : }
    1263                 :            : else
    1264                 :            : {
    1265                 :            : #ifdef _DYNAMIC
    1266         [ #  # ]:          0 : if
    1267                 :            : (Ql>=Qbi)
    1268                 :            : {
    1269                 :            : #if defined(_DYNAMIC)
    1270                 :          0 : Vebq=Vebd;
    1271                 :            : #endif
    1272                 :            : }
    1273                 :            : else
    1274                 :            : {
    1275                 :            : #if defined(_DYNAMIC)
    1276                 :            : {
    1277         [ #  # ]:          0 : double m00_min(d00_min0,Vebj,Vebd)
    1278                 :            : #if defined(_DERIVATE)
    1279         [ #  # ]:          0 : double m10_min(d10_min0,d00_min0,Vebj,Vebd)
    1280         [ #  # ]:          0 : double m11_min(d11_min0,d00_min0,Vebj,Vebd)
    1281                 :            : #endif
    1282                 :          0 : Vebq=d00_min0;
    1283                 :            : }
    1284                 :            : #endif
    1285                 :            : }
    1286                 :            : #endif /* if (...) */
    1287                 :            : }
    1288                 :            : #endif /* if (...) */
    1289                 :            : {
    1290                 :          0 : double m00_pow(d00_pow0,Nscl,0.75)
    1291                 :            : #if defined(_DERIVATE)
    1292         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Nscl,0.75)
    1293                 :            : #endif
    1294                 :            : #if defined(_DERIVATE)
    1295                 :          0 : BVcbo_Vvar_Nsat_GND=(-(BVf*5.34e13)*(d10_pow0*Nscl_Vvar_Nsat_GND)/d00_pow0/d00_pow0);
    1296                 :            : #endif
    1297                 :          0 : BVcbo=((BVf*5.34e13)/d00_pow0);
    1298                 :            : }
    1299                 :            : #if defined(_DERIVATE)
    1300                 :          0 : Vnrt_Vb_E=Vbc_Vb_E;
    1301                 :            : #endif
    1302                 :          0 : Vnrt=Vbc;
    1303                 :            : {
    1304                 :          0 : double m00_pow(d00_pow0,(Vnrt/BVcbo),BVn)
    1305                 :            : #if defined(_DERIVATE)
    1306         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(Vnrt/BVcbo),BVn)
    1307                 :            : #endif
    1308                 :            : #if defined(_DERIVATE)
    1309                 :          0 : M_Vb_E=(-1*(-(d10_pow0*(Vnrt_Vb_E/BVcbo)))/(1-d00_pow0)/(1-d00_pow0));
    1310                 :          0 : M_Vvar_Nsat_GND=(-1*(-(d10_pow0*(-Vnrt*BVcbo_Vvar_Nsat_GND/BVcbo/BVcbo)))/(1-d00_pow0)/(1-d00_pow0));
    1311                 :            : #endif
    1312                 :          0 : M=(1/(1-d00_pow0));
    1313                 :            : }
    1314         [ #  # ]:          0 : if
    1315                 :            : (Rb>0)
    1316                 :            : {
    1317                 :            : #if defined(_DERIVATE)
    1318                 :          0 : It_VC_e=(Vae_VC_e/Rb);
    1319                 :          0 : It_Vvar_Ql_GND=(-Vae*Rb_Vvar_Ql_GND/Rb/Rb);
    1320                 :          0 : It_Vb_E=(-Vae*Rb_Vb_E/Rb/Rb);
    1321                 :          0 : It_Vvar_Nsat_GND=(-Vae*Rb_Vvar_Nsat_GND/Rb/Rb);
    1322                 :          0 : It_Vvar_Mucinv_GND=(-Vae*Rb_Vvar_Mucinv_GND/Rb/Rb);
    1323                 :            : #endif
    1324                 :          0 : It=(Vae/Rb);
    1325                 :            : }
    1326                 :            : else
    1327                 :            : {
    1328                 :            : #if defined(_DERIVATE)
    1329                 :          0 : It_VC_e=(Vae_VC_e/1e-6);
    1330                 :          0 : It_Vvar_Ql_GND=0.0;
    1331                 :          0 : It_Vb_E=0.0;
    1332                 :          0 : It_Vvar_Nsat_GND=0.0;
    1333                 :          0 : It_Vvar_Mucinv_GND=0.0;
    1334                 :            : #endif
    1335                 :          0 : It=(Vae/1e-6);
    1336                 :            : }
    1337         [ #  # ]:          0 : if
    1338                 :            : (Veb>0)
    1339                 :            : {
    1340                 :            : #if defined(_DERIVATE)
    1341                 :          0 : Icss_VC_e=((1/(1+B))*It_VC_e);
    1342                 :          0 : Icss_Vvar_Ql_GND=(((1/(1+B))*It_Vvar_Ql_GND)+(((B/(1+B))*((4*Dp)/((W*W)+1e-20)))*Ql_Vvar_Ql_GND));
    1343                 :          0 : Icss_Vb_E=(((1/(1+B))*It_Vb_E)+((B/(1+B))*(-(4*Dp)*((W_Vb_E*W)+(W*W_Vb_E))/((W*W)+1e-20)/((W*W)+1e-20)))*Ql);
    1344                 :          0 : Icss_Vvar_Nsat_GND=(((1/(1+B))*It_Vvar_Nsat_GND)+((B/(1+B))*(-(4*Dp)*((W_Vvar_Nsat_GND*W)+(W*W_Vvar_Nsat_GND))/((W*W)+1e-20)/((W*W)+1e-20)))*Ql);
    1345                 :          0 : Icss_Vvar_Mucinv_GND=((1/(1+B))*It_Vvar_Mucinv_GND);
    1346                 :            : #endif
    1347                 :          0 : Icss=(((1/(1+B))*It)+(((B/(1+B))*((4*Dp)/((W*W)+1e-20)))*Ql));
    1348                 :            : }
    1349                 :            : else
    1350                 :            : {
    1351                 :            : #if defined(_DERIVATE)
    1352                 :          0 : Icss_VC_e=0.0;
    1353                 :          0 : Icss_Vvar_Ql_GND=0.0;
    1354                 :          0 : Icss_Vb_E=0.0;
    1355                 :          0 : Icss_Vvar_Nsat_GND=0.0;
    1356                 :          0 : Icss_Vvar_Mucinv_GND=0.0;
    1357                 :            : #endif
    1358                 :          0 : Icss=0;
    1359                 :            : }
    1360                 :            : #if defined(_DERIVATE)
    1361                 :          0 : Ic_VC_e=Icss_VC_e;
    1362                 :          0 : Ic_Vvar_Ql_GND=(Icss_Vvar_Ql_GND+Ccer_Vvar_Ql_GND*dVecdt);
    1363                 :          0 : Ic_Vb_E=(Icss_Vb_E+Ccer_Vb_E*dVecdt);
    1364                 :          0 : Ic_Vvar_Nsat_GND=(Icss_Vvar_Nsat_GND+Ccer_Vvar_Nsat_GND*dVecdt);
    1365                 :          0 : Ic_Vvar_Mucinv_GND=Icss_Vvar_Mucinv_GND;
    1366                 :          0 : Ic_Vvar_dVecdt_GND=(Ccer*dVecdt_Vvar_dVecdt_GND);
    1367                 :            : #endif
    1368                 :          0 : Ic=(Icss+(Ccer*dVecdt));
    1369         [ #  # ]:          0 : if
    1370                 :            : (Veb>0)
    1371                 :            : {
    1372         [ #  # ]:          0 : if
    1373                 :            : (Qb>0)
    1374                 :            : {
    1375                 :            : #if defined(_DERIVATE)
    1376                 :          0 : Ibss_Vvar_Ql_GND=((Ql_Vvar_Ql_GND/Tau)+((((((Ql_Vvar_Ql_GND*Ql)+(Ql*Ql_Vvar_Ql_GND))/Qb)/Qb)*4*Nscl*Nscl/Ni)/Ni)*Isne);
    1377                 :          0 : Ibss_Vb_E=(((((-(Ql*Ql)*Qb_Vb_E/Qb/Qb)*Qb-((Ql*Ql)/Qb)*Qb_Vb_E)/Qb/Qb)*4*Nscl*Nscl/Ni)/Ni)*Isne;
    1378                 :          0 : Ibss_Vvar_Nsat_GND=(((((((((-(Ql*Ql)*Qb_Vvar_Nsat_GND/Qb/Qb)*Qb-((Ql*Ql)/Qb)*Qb_Vvar_Nsat_GND)/Qb/Qb)*4*Nscl)+(((((Ql*Ql)/Qb)/Qb)*4)*Nscl_Vvar_Nsat_GND))*Nscl)+((((((Ql*Ql)/Qb)/Qb)*4)*Nscl)*Nscl_Vvar_Nsat_GND))/Ni)/Ni)*Isne;
    1379                 :            : #endif
    1380                 :          0 : Ibss=((Ql/Tau)+(((((((((Ql*Ql)/Qb)/Qb)*4)*Nscl)*Nscl)/Ni)/Ni)*Isne));
    1381                 :            : }
    1382                 :            : else
    1383                 :            : {
    1384                 :            : #if defined(_DERIVATE)
    1385                 :          0 : Ibss_Vvar_Ql_GND=(Ql_Vvar_Ql_GND/Tau);
    1386                 :          0 : Ibss_Vb_E=0.0;
    1387                 :          0 : Ibss_Vvar_Nsat_GND=0.0;
    1388                 :            : #endif
    1389                 :          0 : Ibss=(Ql/Tau);
    1390                 :            : }
    1391                 :            : }
    1392                 :            : else
    1393                 :            : {
    1394                 :            : #if defined(_DERIVATE)
    1395                 :          0 : Ibss_Vvar_Ql_GND=0.0;
    1396                 :          0 : Ibss_Vb_E=0.0;
    1397                 :          0 : Ibss_Vvar_Nsat_GND=0.0;
    1398                 :            : #endif
    1399                 :          0 : Ibss=0;
    1400                 :            : }
    1401         [ #  # ]:          0 : if
    1402                 :            : (Vgs<Vt)
    1403                 :            : {
    1404                 :            : #if defined(_DERIVATE)
    1405                 :          0 : Imos_Vb_E=0.0;
    1406                 :          0 : Imos_VG_E=0.0;
    1407                 :            : #endif
    1408                 :          0 : Imos=0;
    1409                 :            : }
    1410                 :            : else
    1411                 :            : {
    1412         [ #  # ]:          0 : if
    1413                 :            : (Vds>(Vth/Kf))
    1414                 :            : {
    1415                 :            : #if defined(_DERIVATE)
    1416                 :          0 : Imos_Vb_E=0.0;
    1417                 :          0 : Imos_VG_E=((((((KpT*Vth_VG_E)*Vth)+((KpT*Vth)*Vth_VG_E))/2)*(1+(Theta*Vth))-(((KpT*Vth)*Vth)/2)*(Theta*Vth_VG_E))/(1+(Theta*Vth))/(1+(Theta*Vth)));
    1418                 :            : #endif
    1419                 :          0 : Imos=((((KpT*Vth)*Vth)/2)/(1+(Theta*Vth)));
    1420                 :            : }
    1421                 :            : else
    1422                 :            : {
    1423                 :            : #if defined(_DERIVATE)
    1424                 :          0 : Imos_Vb_E=(((Kf*KpT)*((Vth*Vds_Vb_E)-((((Kf*Vds_Vb_E)*Vds)+((Kf*Vds)*Vds_Vb_E))/2)))/(1+(Theta*Vth)));
    1425                 :          0 : Imos_VG_E=((((Kf*KpT)*Vth_VG_E*Vds)*(1+(Theta*Vth))-((Kf*KpT)*((Vth*Vds)-(((Kf*Vds)*Vds)/2)))*(Theta*Vth_VG_E))/(1+(Theta*Vth))/(1+(Theta*Vth)));
    1426                 :            : #endif
    1427                 :          0 : Imos=(((Kf*KpT)*((Vth*Vds)-(((Kf*Vds)*Vds)/2)))/(1+(Theta*Vth)));
    1428                 :            : }
    1429                 :            : }
    1430         [ #  # ]:          0 : if
    1431                 :            : (Vbc>0)
    1432                 :            : {
    1433                 :            : {
    1434                 :          0 : double m00_sqrt(d00_sqrt0,((((2*1.03594e-10)*Vbc)/1.602176462e-19)/Nscl))
    1435                 :            : #if defined(_DERIVATE)
    1436                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,((((2*1.03594e-10)*Vbc)/1.602176462e-19)/Nscl))
    1437                 :            : #endif
    1438                 :            : #if defined(_DERIVATE)
    1439                 :          0 : Igen_Vb_E=((((1.602176462e-19*Ni)*A)*((((2*1.03594e-10)*Vbc_Vb_E)/1.602176462e-19)/Nscl)*d10_sqrt0)/Tau);
    1440                 :          0 : Igen_Vvar_Nsat_GND=((((1.602176462e-19*Ni)*A)*(-(((2*1.03594e-10)*Vbc)/1.602176462e-19)*Nscl_Vvar_Nsat_GND/Nscl/Nscl)*d10_sqrt0)/Tau);
    1441                 :            : #endif
    1442                 :          0 : Igen=((((1.602176462e-19*Ni)*A)*d00_sqrt0)/Tau);
    1443                 :            : }
    1444                 :            : }
    1445                 :            : else
    1446                 :            : {
    1447                 :            : #if defined(_DERIVATE)
    1448                 :          0 : Igen_Vb_E=0.0;
    1449                 :          0 : Igen_Vvar_Nsat_GND=0.0;
    1450                 :            : #endif
    1451                 :          0 : Igen=0;
    1452                 :            : }
    1453                 :            : #if defined(_DERIVATE)
    1454                 :          0 : Imult_Vb_E=(((M_Vb_E*(Imos+Ic))+((M-1)*(Imos_Vb_E+Ic_Vb_E)))+((M_Vb_E*Igen)+(M*Igen_Vb_E)));
    1455                 :          0 : Imult_Vvar_Nsat_GND=(((M_Vvar_Nsat_GND*(Imos+Ic))+((M-1)*Ic_Vvar_Nsat_GND))+((M_Vvar_Nsat_GND*Igen)+(M*Igen_Vvar_Nsat_GND)));
    1456                 :          0 : Imult_VG_E=((M-1)*Imos_VG_E);
    1457                 :          0 : Imult_VC_e=((M-1)*Ic_VC_e);
    1458                 :          0 : Imult_Vvar_Ql_GND=((M-1)*Ic_Vvar_Ql_GND);
    1459                 :          0 : Imult_Vvar_Mucinv_GND=((M-1)*Ic_Vvar_Mucinv_GND);
    1460                 :          0 : Imult_Vvar_dVecdt_GND=((M-1)*Ic_Vvar_dVecdt_GND);
    1461                 :            : #endif
    1462                 :          0 : Imult=(((M-1)*(Imos+Ic))+(M*Igen));
    1463                 :            : #if defined(_DYNAMIC)
    1464                 :            : #if defined(_DERIVATE)
    1465                 :          0 : Qgd_Vb_G=((Cgd_Vb_G*Vdg)+(Cgd*Vdg_Vb_G));
    1466                 :          0 : Qgd_Vvar_Nsat_GND=Cgd_Vvar_Nsat_GND*Vdg;
    1467                 :            : #endif
    1468                 :          0 : Qgd=(Cgd*Vdg);
    1469                 :            : #endif
    1470                 :            : #if defined(_DYNAMIC)
    1471                 :            : #if defined(_DERIVATE)
    1472                 :          0 : Qcer_Vvar_Ql_GND=Ccer_Vvar_Ql_GND*Vec;
    1473                 :          0 : Qcer_Vb_E=Ccer_Vb_E*Vec;
    1474                 :          0 : Qcer_Vvar_Nsat_GND=Ccer_Vvar_Nsat_GND*Vec;
    1475                 :          0 : Qcer_Ve_E=(Ccer*Vec_Ve_E);
    1476                 :            : #endif
    1477                 :          0 : Qcer=(Ccer*Vec);
    1478                 :            : #endif
    1479                 :            : #if defined(_DYNAMIC)
    1480                 :            : #if defined(_DERIVATE)
    1481                 :          0 : Qmult_Vb_E=((M_Vb_E*Qcer)+((M-1)*Qcer_Vb_E));
    1482                 :          0 : Qmult_Vvar_Nsat_GND=((M_Vvar_Nsat_GND*Qcer)+((M-1)*Qcer_Vvar_Nsat_GND));
    1483                 :          0 : Qmult_Vvar_Ql_GND=((M-1)*Qcer_Vvar_Ql_GND);
    1484                 :          0 : Qmult_Ve_E=((M-1)*Qcer_Ve_E);
    1485                 :            : #endif
    1486                 :          0 : Qmult=((M-1)*Qcer);
    1487                 :            : #endif
    1488         [ #  # ]:          0 : if
    1489                 :            : (Deltap>0)
    1490                 :            : {
    1491                 :            : {
    1492                 :          0 : double m00_pow(d00_pow0,Deltap,(2.0/3.0))
    1493                 :          0 : double m00_logE(d00_logE1,(1+(Alpha2/d00_pow0)))
    1494                 :            : #if defined(_DERIVATE)
    1495         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Deltap,(2.0/3.0))
    1496                 :          0 : double m10_logE(d10_logE1,d00_logE1,(1+(Alpha2/d00_pow0)))
    1497                 :            : #endif
    1498                 :            : #if defined(_DERIVATE)
    1499                 :          0 : iMucinv_Vvar_Ql_GND=(((Deltap_Vvar_Ql_GND*d00_logE1)+(Deltap*(-Alpha2*(d10_pow0*Deltap_Vvar_Ql_GND)/d00_pow0/d00_pow0)*d10_logE1))/Alpha1);
    1500                 :          0 : iMucinv_Vvar_Mucinv_GND=(((Deltap_Vvar_Mucinv_GND*d00_logE1)+(Deltap*(-Alpha2*(d10_pow0*Deltap_Vvar_Mucinv_GND)/d00_pow0/d00_pow0)*d10_logE1))/Alpha1);
    1501                 :          0 : iMucinv_Vb_E=(((Deltap_Vb_E*d00_logE1)+(Deltap*(-Alpha2*(d10_pow0*Deltap_Vb_E)/d00_pow0/d00_pow0)*d10_logE1))/Alpha1);
    1502                 :          0 : iMucinv_Vvar_Nsat_GND=(((Deltap_Vvar_Nsat_GND*d00_logE1)+(Deltap*(-Alpha2*(d10_pow0*Deltap_Vvar_Nsat_GND)/d00_pow0/d00_pow0)*d10_logE1))/Alpha1);
    1503                 :            : #endif
    1504                 :          0 : iMucinv=((Deltap*d00_logE1)/Alpha1);
    1505                 :            : }
    1506                 :            : }
    1507                 :            : else
    1508                 :            : {
    1509                 :            : #if defined(_DERIVATE)
    1510                 :          0 : iMucinv_Vvar_Ql_GND=0.0;
    1511                 :          0 : iMucinv_Vvar_Mucinv_GND=0.0;
    1512                 :          0 : iMucinv_Vb_E=0.0;
    1513                 :          0 : iMucinv_Vvar_Nsat_GND=0.0;
    1514                 :            : #endif
    1515                 :          0 : iMucinv=0;
    1516                 :            : }
    1517                 :            : #if defined(_DERIVATE)
    1518                 :          0 : iQl_Vb_E=(((((1.602176462e-19*A)*W_Vb_E)*Plo)+(((1.602176462e-19*A)*W)*Plo_Vb_E))/2);
    1519                 :          0 : iQl_Vvar_Nsat_GND=(((((1.602176462e-19*A)*W_Vvar_Nsat_GND)*Plo)+(((1.602176462e-19*A)*W)*Plo_Vvar_Nsat_GND))/2);
    1520                 :          0 : iQl_Vvar_Ql_GND=((((1.602176462e-19*A)*W)*Plo_Vvar_Ql_GND)/2);
    1521                 :          0 : iQl_Vvar_Mucinv_GND=((((1.602176462e-19*A)*W)*Plo_Vvar_Mucinv_GND)/2);
    1522                 :            : #endif
    1523                 :          0 : iQl=((((1.602176462e-19*A)*W)*Plo)/2);
    1524                 :            : #if defined(_DERIVATE)
    1525                 :          0 : iNsat_VC_e=(Ic_VC_e/((1.602176462e-19*A)*Vpsat));
    1526                 :          0 : iNsat_Vvar_Ql_GND=(Ic_Vvar_Ql_GND/((1.602176462e-19*A)*Vpsat));
    1527                 :          0 : iNsat_Vb_E=((Ic_Vb_E/((1.602176462e-19*A)*Vpsat))-(Imos_Vb_E/((1.602176462e-19*A)*Vnsat)));
    1528                 :          0 : iNsat_Vvar_Nsat_GND=(Ic_Vvar_Nsat_GND/((1.602176462e-19*A)*Vpsat));
    1529                 :          0 : iNsat_Vvar_Mucinv_GND=(Ic_Vvar_Mucinv_GND/((1.602176462e-19*A)*Vpsat));
    1530                 :          0 : iNsat_Vvar_dVecdt_GND=(Ic_Vvar_dVecdt_GND/((1.602176462e-19*A)*Vpsat));
    1531                 :          0 : iNsat_VG_E=(-(Imos_VG_E/((1.602176462e-19*A)*Vnsat)));
    1532                 :            : #endif
    1533                 :          0 : iNsat=((Ic/((1.602176462e-19*A)*Vpsat))-(Imos/((1.602176462e-19*A)*Vnsat)));
    1534                 :          0 : _load_static_residual2(G,E,(Vgs*1e-12));
    1535                 :            : #if defined(_DERIVATE)
    1536 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(G,E,G,E,Vgs_VG_E*1e-12);
         [ #  # ][ #  # ]
                 [ #  # ]
    1537                 :            : #endif
    1538                 :            : #if defined(_DYNAMIC)
    1539 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(G,E,_DDT(Qgs));
    1540                 :            : #if defined(_DERIVATE)
    1541 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(G,E,G,E,Qgs_VG_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1542                 :            : #endif
    1543                 :            : #endif
    1544                 :          0 : _load_static_residual2(b,G,(Vdg*1e-12));
    1545                 :            : #if defined(_DERIVATE)
    1546 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(b,G,b,G,Vdg_Vb_G*1e-12);
         [ #  # ][ #  # ]
                 [ #  # ]
    1547                 :            : #endif
    1548                 :            : #if defined(_DYNAMIC)
    1549 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(b,G,_DDT(Qgd));
    1550                 :            : #if defined(_DERIVATE)
    1551 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(b,G,var_Nsat,Qgd_Vvar_Nsat_GND);
                 [ #  # ]
    1552 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(b,G,b,G,Qgd_Vb_G);
         [ #  # ][ #  # ]
                 [ #  # ]
    1553                 :            : #endif
    1554                 :            : #endif
    1555                 :          0 : _load_static_residual2(b,E,((Imos+Imult)+(Vds*1e-12)));
    1556                 :            : #if defined(_DERIVATE)
    1557         [ #  # ]:          0 : _load_static_jacobian2s(b,E,var_dVecdt,Imult_Vvar_dVecdt_GND);
    1558         [ #  # ]:          0 : _load_static_jacobian2s(b,E,var_Mucinv,Imult_Vvar_Mucinv_GND);
    1559         [ #  # ]:          0 : _load_static_jacobian2s(b,E,var_Ql,Imult_Vvar_Ql_GND);
    1560 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(b,E,C,e,Imult_VC_e);
         [ #  # ][ #  # ]
                 [ #  # ]
    1561         [ #  # ]:          0 : _load_static_jacobian2s(b,E,var_Nsat,Imult_Vvar_Nsat_GND);
    1562 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(b,E,G,E,(Imos_VG_E+Imult_VG_E));
         [ #  # ][ #  # ]
                 [ #  # ]
    1563 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(b,E,b,E,((Imos_Vb_E+Imult_Vb_E)+Vds_Vb_E*1e-12));
         [ #  # ][ #  # ]
                 [ #  # ]
    1564                 :            : #endif
    1565                 :            : #if defined(_DYNAMIC)
    1566 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(b,E,_DDT(Qds));
    1567                 :            : #if defined(_DERIVATE)
    1568 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(b,E,var_Nsat,Qds_Vvar_Nsat_GND);
                 [ #  # ]
    1569 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(b,E,b,E,Qds_Vb_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1570                 :            : #endif
    1571                 :            : #endif
    1572                 :            : #if defined(_DYNAMIC)
    1573 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(b,E,_DDT(Qmult));
    1574                 :            : #if defined(_DERIVATE)
    1575 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(b,E,e,E,Qmult_Ve_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1576 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(b,E,var_Ql,Qmult_Vvar_Ql_GND);
                 [ #  # ]
    1577 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(b,E,var_Nsat,Qmult_Vvar_Nsat_GND);
                 [ #  # ]
    1578 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(b,E,b,E,Qmult_Vb_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1579                 :            : #endif
    1580                 :            : #endif
    1581                 :          0 : _load_static_residual2(e,E,(Icss+(Vec*1e-12)));
    1582                 :            : #if defined(_DERIVATE)
    1583 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(e,E,e,E,Vec_Ve_E*1e-12);
         [ #  # ][ #  # ]
                 [ #  # ]
    1584         [ #  # ]:          0 : _load_static_jacobian2s(e,E,var_Mucinv,Icss_Vvar_Mucinv_GND);
    1585         [ #  # ]:          0 : _load_static_jacobian2s(e,E,var_Nsat,Icss_Vvar_Nsat_GND);
    1586 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(e,E,b,E,Icss_Vb_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1587         [ #  # ]:          0 : _load_static_jacobian2s(e,E,var_Ql,Icss_Vvar_Ql_GND);
    1588 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(e,E,C,e,Icss_VC_e);
         [ #  # ][ #  # ]
                 [ #  # ]
    1589                 :            : #endif
    1590                 :            : #if defined(_DYNAMIC)
    1591 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(e,E,_DDT(Qcer));
    1592                 :            : #if defined(_DERIVATE)
    1593 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(e,E,e,E,Qcer_Ve_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1594 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(e,E,var_Nsat,Qcer_Vvar_Nsat_GND);
                 [ #  # ]
    1595 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(e,E,b,E,Qcer_Vb_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1596 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(e,E,var_Ql,Qcer_Vvar_Ql_GND);
                 [ #  # ]
    1597                 :            : #endif
    1598                 :            : #endif
    1599                 :          0 : _load_static_residual2(e,b,(Ibss+(Veb*1e-12)));
    1600                 :            : #if defined(_DERIVATE)
    1601 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(e,b,e,b,Veb_Ve_b*1e-12);
         [ #  # ][ #  # ]
                 [ #  # ]
    1602         [ #  # ]:          0 : _load_static_jacobian2s(e,b,var_Nsat,Ibss_Vvar_Nsat_GND);
    1603 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(e,b,b,E,Ibss_Vb_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1604         [ #  # ]:          0 : _load_static_jacobian2s(e,b,var_Ql,Ibss_Vvar_Ql_GND);
    1605                 :            : #endif
    1606                 :            : #if defined(_DYNAMIC)
    1607 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(e,b,_DDT(iQl));
    1608                 :            : #if defined(_DERIVATE)
    1609 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(e,b,var_Mucinv,iQl_Vvar_Mucinv_GND);
                 [ #  # ]
    1610 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(e,b,var_Ql,iQl_Vvar_Ql_GND);
                 [ #  # ]
    1611 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2s(e,b,var_Nsat,iQl_Vvar_Nsat_GND);
                 [ #  # ]
    1612 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(e,b,b,E,iQl_Vb_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1613                 :            : #endif
    1614                 :            : #endif
    1615                 :          0 : _load_static_residual2(C,e,It);
    1616                 :            : #if defined(_DERIVATE)
    1617         [ #  # ]:          0 : _load_static_jacobian2s(C,e,var_Mucinv,It_Vvar_Mucinv_GND);
    1618         [ #  # ]:          0 : _load_static_jacobian2s(C,e,var_Nsat,It_Vvar_Nsat_GND);
    1619 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(C,e,b,E,It_Vb_E);
         [ #  # ][ #  # ]
                 [ #  # ]
    1620         [ #  # ]:          0 : _load_static_jacobian2s(C,e,var_Ql,It_Vvar_Ql_GND);
    1621 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(C,e,C,e,It_VC_e);
         [ #  # ][ #  # ]
                 [ #  # ]
    1622                 :            : #endif
    1623                 :          0 : _load_static_residual1(var_Ql,(Ql-iQl));
    1624                 :            : #if defined(_DERIVATE)
    1625         [ #  # ]:          0 : _load_static_jacobian1(var_Ql,var_Mucinv,(-iQl_Vvar_Mucinv_GND));
    1626         [ #  # ]:          0 : _load_static_jacobian1(var_Ql,var_Nsat,(-iQl_Vvar_Nsat_GND));
    1627 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(var_Ql,b,E,(-iQl_Vb_E));
                 [ #  # ]
    1628         [ #  # ]:          0 : _load_static_jacobian1(var_Ql,var_Ql,(Ql_Vvar_Ql_GND-iQl_Vvar_Ql_GND));
    1629                 :            : #endif
    1630                 :          0 : _load_static_residual1(var_Mucinv,(Mucinv-iMucinv));
    1631                 :            : #if defined(_DERIVATE)
    1632         [ #  # ]:          0 : _load_static_jacobian1(var_Mucinv,var_Nsat,(-iMucinv_Vvar_Nsat_GND));
    1633 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(var_Mucinv,b,E,(-iMucinv_Vb_E));
                 [ #  # ]
    1634         [ #  # ]:          0 : _load_static_jacobian1(var_Mucinv,var_Ql,(-iMucinv_Vvar_Ql_GND));
    1635         [ #  # ]:          0 : _load_static_jacobian1(var_Mucinv,var_Mucinv,(Mucinv_Vvar_Mucinv_GND-iMucinv_Vvar_Mucinv_GND));
    1636                 :            : #endif
    1637                 :          0 : _load_static_residual1(var_Nsat,(Nsat-iNsat));
    1638                 :            : #if defined(_DERIVATE)
    1639 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(var_Nsat,G,E,(-iNsat_VG_E));
                 [ #  # ]
    1640         [ #  # ]:          0 : _load_static_jacobian1(var_Nsat,var_dVecdt,(-iNsat_Vvar_dVecdt_GND));
    1641         [ #  # ]:          0 : _load_static_jacobian1(var_Nsat,var_Mucinv,(-iNsat_Vvar_Mucinv_GND));
    1642 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(var_Nsat,b,E,(-iNsat_Vb_E));
                 [ #  # ]
    1643         [ #  # ]:          0 : _load_static_jacobian1(var_Nsat,var_Ql,(-iNsat_Vvar_Ql_GND));
    1644 [ #  # ][ #  # ]:          0 : _load_static_jacobian2p(var_Nsat,C,e,(-iNsat_VC_e));
                 [ #  # ]
    1645         [ #  # ]:          0 : _load_static_jacobian1(var_Nsat,var_Nsat,(Nsat_Vvar_Nsat_GND-iNsat_Vvar_Nsat_GND));
    1646                 :            : #endif
    1647                 :          0 : _load_static_residual1(var_dVecdt,dVecdt);
    1648                 :            : #if defined(_DERIVATE)
    1649         [ #  # ]:          0 : _load_static_jacobian1(var_dVecdt,var_dVecdt,dVecdt_Vvar_dVecdt_GND);
    1650                 :            : #endif
    1651                 :            : #if defined(_DYNAMIC)
    1652 [ #  # ][ #  # ]:          0 : _load_dynamic_residual1(var_dVecdt,(-_DDT(Vec)));
    1653                 :            : #if defined(_DERIVATE)
    1654 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian2p(var_dVecdt,e,E,(-Vec_Ve_E));
         [ #  # ][ #  # ]
    1655                 :            : #endif
    1656                 :            : #endif
    1657                 :            : 
    1658                 :            : /* ------------------ end of verilog analog equations --------------------- */
    1659                 :            : 
    1660                 :            : /* ------------------ evaluate verilog noise equations -------------------- */
    1661                 :            : 
    1662                 :            : /* ------------------- end of verilog noise equations --------------------- */
    1663                 :          0 : }
    1664                 :            : 
    1665                 :            : /* Perform DC iteration. */
    1666                 :          0 : void nigbt::calcDC (void)
    1667                 :            : {
    1668                 :            :   // evaluate Verilog code
    1669                 :          0 :   initVerilog ();
    1670                 :          0 :   calcVerilog ();
    1671                 :            : 
    1672                 :            :   // fill right hand side and static jacobian
    1673         [ #  # ]:          0 :   for (int i1 = 0; i1 < 9; i1++) {
    1674         [ #  # ]:          0 :     setI (i1, _rhs[i1]);
    1675         [ #  # ]:          0 :     for (int i2 = 0; i2 < 9; i2++) {
    1676         [ #  # ]:          0 :       setY (i1, i2, _jstat[i1][i2]);
    1677                 :            :     }
    1678                 :            :   }
    1679                 :          0 : }
    1680                 :            : 
    1681                 :            : /* Save operating points. */
    1682                 :          0 : void nigbt::saveOperatingPoints (void)
    1683                 :            : {
    1684                 :            :   // save global instance operating points
    1685                 :          0 : }
    1686                 :            : 
    1687                 :            : /* Load operating points. */
    1688                 :          0 : void nigbt::loadOperatingPoints (void)
    1689                 :            : {
    1690                 :          0 : }
    1691                 :            : 
    1692                 :            : /* Calculate operating points. */
    1693                 :          0 : void nigbt::calcOperatingPoints (void)
    1694                 :            : {
    1695                 :          0 : }
    1696                 :            : 
    1697                 :            : /* Initialization of AC analysis. */
    1698                 :          0 : void nigbt::initAC (void)
    1699                 :            : {
    1700                 :          0 :   allocMatrixMNA ();
    1701                 :          0 : }
    1702                 :            : 
    1703                 :            : /* Perform AC calculations. */
    1704                 :          0 : void nigbt::calcAC (nr_double_t frequency)
    1705                 :            : {
    1706         [ #  # ]:          0 :   setMatrixY (calcMatrixY (frequency));
    1707                 :          0 : }
    1708                 :            : 
    1709                 :            : /* Compute Y-matrix for AC analysis. */
    1710                 :          0 : matrix nigbt::calcMatrixY (nr_double_t frequency)
    1711                 :            : {
    1712                 :          0 :   _freq = frequency;
    1713                 :          0 :   saveOperatingPoints ();
    1714                 :          0 :   matrix y (9);
    1715                 :            : 
    1716         [ #  # ]:          0 :   for (int i1 = 0; i1 < 9; i1++) {
    1717         [ #  # ]:          0 :     for (int i2 = 0; i2 < 9; i2++) {
    1718                 :          0 :       y (i1,i2) = nr_complex_t (_jstat[i1][i2], _jdyna[i1][i2] * 2 * M_PI * _freq);
    1719                 :            :     }
    1720                 :            :   }
    1721                 :            : 
    1722                 :          0 :   return y;
    1723                 :            : }
    1724                 :            : 
    1725                 :            : /* Initialization of S-parameter analysis. */
    1726                 :          0 : void nigbt::initSP (void)
    1727                 :            : {
    1728                 :          0 :   allocMatrixS ();
    1729                 :          0 : }
    1730                 :            : 
    1731                 :            : /* Perform S-parameter calculations. */
    1732                 :          0 : void nigbt::calcSP (nr_double_t frequency)
    1733                 :            : {
    1734 [ #  # ][ #  # ]:          0 :   setMatrixS (ytos (calcMatrixY (frequency)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1735                 :          0 : }
    1736                 :            : 
    1737                 :            : /* Initialization of transient analysis. */
    1738                 :          0 : void nigbt::initTR (void)
    1739                 :            : {
    1740                 :          0 :   setStates (2 * 9 * 9);
    1741                 :          0 :   initDC ();
    1742                 :          0 : }
    1743                 :            : 
    1744                 :            : /* Perform transient analysis iteration step. */
    1745                 :          0 : void nigbt::calcTR (nr_double_t)
    1746                 :            : {
    1747                 :          0 :   doHB = 0;
    1748                 :          0 :   doAC = 1;
    1749                 :          0 :   doTR = 1;
    1750                 :          0 :   calcDC ();
    1751                 :            : 
    1752                 :            :   int i1, i2, i3, i4, state;
    1753                 :            : 
    1754                 :            :   // 2-node charge integrations
    1755         [ #  # ]:          0 :   for (i1 = 0; i1 < 9; i1++) {
    1756         [ #  # ]:          0 :   for (i2 = 0; i2 < 9; i2++) {
    1757                 :          0 :     state = 2 * (i2 + 9 * i1);
    1758         [ #  # ]:          0 :     if (i1 != i2)
    1759         [ #  # ]:          0 :     if (_charges[i1][i2] != 0.0)
    1760                 :          0 :       transientCapacitanceQ (state, i1, i2, _charges[i1][i2]);
    1761                 :            :   } }
    1762                 :            : 
    1763                 :            :   // 1-node charge integrations
    1764         [ #  # ]:          0 :   for (i1 = 0; i1 < 9; i1++) {
    1765                 :          0 :     state = 2 * (i1 + 9 * i1);
    1766         [ #  # ]:          0 :     if (_charges[i1][i1] != 0.0)
    1767                 :          0 :       transientCapacitanceQ (state, i1, _charges[i1][i1]);
    1768                 :            :   }
    1769                 :            : 
    1770                 :            :   // charge: 2-node, voltage: 2-node
    1771         [ #  # ]:          0 :   for (i1 = 0; i1 < 9; i1++) {
    1772         [ #  # ]:          0 :   for (i2 = 0; i2 < 9; i2++) {
    1773         [ #  # ]:          0 :   if (i1 != i2)
    1774         [ #  # ]:          0 :   for (i3 = 0; i3 < 9; i3++) {
    1775         [ #  # ]:          0 :   for (i4 = 0; i4 < 9; i4++) {
    1776         [ #  # ]:          0 :     if (i3 != i4)
    1777         [ #  # ]:          0 :     if (_caps[i1][i2][i3][i4] != 0.0)
    1778 [ #  # ][ #  # ]:          0 :       transientCapacitanceC (i1, i2, i3, i4, _caps[i1][i2][i3][i4], BP(i3,i4));
    1779                 :            :   } } } }
    1780                 :            : 
    1781                 :            :   // charge: 2-node, voltage: 1-node
    1782         [ #  # ]:          0 :   for (i1 = 0; i1 < 9; i1++) {
    1783         [ #  # ]:          0 :   for (i2 = 0; i2 < 9; i2++) {
    1784         [ #  # ]:          0 :   if (i1 != i2)
    1785         [ #  # ]:          0 :   for (i3 = 0; i3 < 9; i3++) {
    1786         [ #  # ]:          0 :     if (_caps[i1][i2][i3][i3] != 0.0)
    1787         [ #  # ]:          0 :       transientCapacitanceC2Q (i1, i2, i3, _caps[i1][i2][i3][i3], NP(i3));
    1788                 :            :   } } }
    1789                 :            : 
    1790                 :            :   // charge: 1-node, voltage: 2-node
    1791         [ #  # ]:          0 :   for (i1 = 0; i1 < 9; i1++) {
    1792         [ #  # ]:          0 :   for (i3 = 0; i3 < 9; i3++) {
    1793         [ #  # ]:          0 :   for (i4 = 0; i4 < 9; i4++) {
    1794         [ #  # ]:          0 :     if (i3 != i4)
    1795         [ #  # ]:          0 :     if (_caps[i1][i1][i3][i4] != 0.0)
    1796 [ #  # ][ #  # ]:          0 :       transientCapacitanceC2V (i1, i3, i4, _caps[i1][i1][i3][i4], BP(i3,i4));
    1797                 :            :   } } }
    1798                 :            : 
    1799                 :            :   // charge: 1-node, voltage: 1-node
    1800         [ #  # ]:          0 :   for (i1 = 0; i1 < 9; i1++) {
    1801         [ #  # ]:          0 :   for (i3 = 0; i3 < 9; i3++) {
    1802         [ #  # ]:          0 :     if (_caps[i1][i1][i3][i3] != 0.0)
    1803         [ #  # ]:          0 :       transientCapacitanceC (i1, i3, _caps[i1][i1][i3][i3], NP(i3));
    1804                 :            :   } }
    1805                 :          0 : }
    1806                 :            : 
    1807                 :            : /* Compute Cy-matrix for AC noise analysis. */
    1808                 :          0 : matrix nigbt::calcMatrixCy (nr_double_t frequency) 
    1809                 :            : {
    1810                 :          0 :   _freq = frequency;
    1811                 :          0 :   matrix cy (9);
    1812                 :            : 
    1813                 :            : 
    1814                 :          0 :   return cy;
    1815                 :            : }
    1816                 :            : 
    1817                 :            : /* Perform AC noise computations. */
    1818                 :          0 : void nigbt::calcNoiseAC (nr_double_t frequency) 
    1819                 :            : {
    1820         [ #  # ]:          0 :   setMatrixN (calcMatrixCy (frequency));
    1821                 :          0 : }
    1822                 :            : 
    1823                 :            : /* Perform S-parameter noise computations. */
    1824                 :          0 : void nigbt::calcNoiseSP (nr_double_t frequency) 
    1825                 :            : {
    1826 [ #  # ][ #  # ]:          0 :   setMatrixN (cytocs (calcMatrixCy (frequency) * z0, getMatrixS ()));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1827                 :          0 : }
    1828                 :            : 
    1829                 :            : /* Initialization of HB analysis. */
    1830                 :          0 : void nigbt::initHB (int)
    1831                 :            : {
    1832                 :          0 :   initDC ();
    1833                 :          0 :   allocMatrixHB ();
    1834                 :          0 : }
    1835                 :            : 
    1836                 :            : /* Perform HB analysis. */
    1837                 :          0 : void nigbt::calcHB (int)
    1838                 :            : {
    1839                 :          0 :   doHB = 1;
    1840                 :          0 :   doAC = 1;
    1841                 :          0 :   doTR = 0;
    1842                 :            : 
    1843                 :            :   // jacobian dI/dV and currents get filled
    1844                 :          0 :   calcDC ();
    1845                 :          0 :   saveOperatingPoints ();
    1846                 :            : 
    1847                 :            :   // fill in HB matrices
    1848         [ #  # ]:          0 :   for (int i1 = 0; i1 < 9; i1++) {
    1849         [ #  # ]:          0 :     setQ  (i1, _qhs[i1]); // charges
    1850         [ #  # ]:          0 :     setCV (i1, _chs[i1]); // jacobian dQ/dV * V
    1851         [ #  # ]:          0 :     setGV (i1, _ghs[i1]); // jacobian dI/dV * V
    1852         [ #  # ]:          0 :     for (int i2 = 0; i2 < 9; i2++) {
    1853         [ #  # ]:          0 :       setQV (i1, i2, _jdyna[i1][i2]); // jacobian dQ/dV
    1854                 :            :     }
    1855                 :            :   }
    1856                 :          0 : }
    1857                 :            : 
    1858                 :            : #include "nigbt.defs.h"
    1859                 :            : 

Generated by: LCOV version 1.11