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

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * MESFET.core.cpp - device implementations for MESFET 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 "MESFET.analogfunction.h"
      16                 :            : #include "component.h"
      17                 :            : #include "device.h"
      18                 :            : #include "MESFET.core.h"
      19                 :            : 
      20                 :            : #ifndef CIR_MESFET
      21                 :            : #define CIR_MESFET -1
      22                 :            : #endif
      23                 :            : 
      24                 :            : // external nodes
      25                 :            : #define Drain 0
      26                 :            : #define Gate 1
      27                 :            : #define Source 2
      28                 :            : // internal nodes
      29                 :            : #define n1 3
      30                 :            : #define n2 4
      31                 :            : #define n3 5
      32                 :            : #define n4 6
      33                 :            : 
      34                 :            : // useful macro definitions
      35                 :            : #define NP(node) real (getV (node))
      36                 :            : #define BP(pnode,nnode) (NP(pnode) - NP(nnode))
      37                 :            : #define _load_static_residual2(pnode,nnode,current)\
      38                 :            :         _rhs[pnode] -= current;\
      39                 :            :         _rhs[nnode] += current;
      40                 :            : #define _load_static_augmented_residual2(pnode,nnode,current)\
      41                 :            :         _rhs[pnode] -= current;\
      42                 :            :         _rhs[nnode] += current;
      43                 :            : #define _load_static_residual1(node,current)\
      44                 :            :         _rhs[node] -= current;
      45                 :            : #define _load_static_augmented_residual1(node,current)\
      46                 :            :         _rhs[node] -= current;
      47                 :            : #define _load_static_jacobian4(pnode,nnode,vpnode,vnnode,conductance)\
      48                 :            :         _jstat[pnode][vpnode] += conductance;\
      49                 :            :         _jstat[nnode][vnnode] += conductance;\
      50                 :            :         _jstat[pnode][vnnode] -= conductance;\
      51                 :            :         _jstat[nnode][vpnode] -= conductance;\
      52                 :            :         if (doHB) {\
      53                 :            :         _ghs[pnode] += conductance * BP(vpnode,vnnode);\
      54                 :            :         _ghs[nnode] -= conductance * BP(vpnode,vnnode);\
      55                 :            :         } else {\
      56                 :            :         _rhs[pnode] += conductance * BP(vpnode,vnnode);\
      57                 :            :         _rhs[nnode] -= conductance * BP(vpnode,vnnode);\
      58                 :            :         }
      59                 :            : #define _load_static_jacobian2p(node,vpnode,vnnode,conductance)\
      60                 :            :         _jstat[node][vpnode] += conductance;\
      61                 :            :         _jstat[node][vnnode] -= conductance;\
      62                 :            :         if (doHB) {\
      63                 :            :         _ghs[node] += conductance * BP(vpnode,vnnode);\
      64                 :            :         } else {\
      65                 :            :         _rhs[node] += conductance * BP(vpnode,vnnode);\
      66                 :            :         }
      67                 :            : #define _load_static_jacobian2s(pnode,nnode,node,conductance)\
      68                 :            :         _jstat[pnode][node] += conductance;\
      69                 :            :         _jstat[nnode][node] -= conductance;\
      70                 :            :         if (doHB) {\
      71                 :            :         _ghs[pnode] += conductance * NP(node);\
      72                 :            :         _ghs[nnode] -= conductance * NP(node);\
      73                 :            :         } else {\
      74                 :            :         _rhs[pnode] += conductance * NP(node);\
      75                 :            :         _rhs[nnode] -= conductance * NP(node);\
      76                 :            :         }
      77                 :            : #define _load_static_jacobian1(node,vnode,conductance)\
      78                 :            :         _jstat[node][vnode] += conductance;\
      79                 :            :         if (doHB) {\
      80                 :            :         _ghs[node] += conductance * NP(vnode);\
      81                 :            :         } else {\
      82                 :            :         _rhs[node] += conductance * NP(vnode);\
      83                 :            :         }
      84                 :            : #define _load_dynamic_residual2(pnode,nnode,charge)\
      85                 :            :         if (doTR) _charges[pnode][nnode] += charge;\
      86                 :            :         if (doHB) {\
      87                 :            :         _qhs[pnode] -= charge;\
      88                 :            :         _qhs[nnode] += charge;\
      89                 :            :         }
      90                 :            : #define _load_dynamic_residual1(node,charge)\
      91                 :            :         if (doTR) _charges[node][node] += charge;\
      92                 :            :         if (doHB) {\
      93                 :            :         _qhs[node] -= charge;\
      94                 :            :         }
      95                 :            : #define _load_dynamic_jacobian4(pnode,nnode,vpnode,vnnode,capacitance)\
      96                 :            :         if (doAC) {\
      97                 :            :         _jdyna[pnode][vpnode] += capacitance;\
      98                 :            :         _jdyna[nnode][vnnode] += capacitance;\
      99                 :            :         _jdyna[pnode][vnnode] -= capacitance;\
     100                 :            :         _jdyna[nnode][vpnode] -= capacitance;\
     101                 :            :         }\
     102                 :            :         if (doTR) {\
     103                 :            :         _caps[pnode][nnode][vpnode][vnnode] += capacitance;\
     104                 :            :         }\
     105                 :            :         if (doHB) {\
     106                 :            :         _chs[pnode] += capacitance * BP(vpnode,vnnode);\
     107                 :            :         _chs[nnode] -= capacitance * BP(vpnode,vnnode);\
     108                 :            :         }
     109                 :            : #define _load_dynamic_jacobian2s(pnode,nnode,vnode,capacitance)\
     110                 :            :         if (doAC) {\
     111                 :            :         _jdyna[pnode][vnode] += capacitance;\
     112                 :            :         _jdyna[nnode][vnode] -= capacitance;\
     113                 :            :         }\
     114                 :            :         if (doTR) {\
     115                 :            :         _caps[pnode][nnode][vnode][vnode] += capacitance;\
     116                 :            :         }\
     117                 :            :         if (doHB) {\
     118                 :            :         _chs[pnode] += capacitance * NP(vnode);\
     119                 :            :         _chs[nnode] -= capacitance * NP(vnode);\
     120                 :            :         }
     121                 :            : #define _load_dynamic_jacobian2p(node,vpnode,vnnode,capacitance)\
     122                 :            :         if (doAC) {\
     123                 :            :         _jdyna[node][vpnode] += capacitance;\
     124                 :            :         _jdyna[node][vnnode] -= capacitance;\
     125                 :            :         }\
     126                 :            :         if (doTR) {\
     127                 :            :         _caps[node][node][vpnode][vnnode] += capacitance;\
     128                 :            :         }\
     129                 :            :         if (doHB) {\
     130                 :            :         _chs[node] += capacitance * BP(vpnode,vnnode);\
     131                 :            :         }
     132                 :            : #define _load_dynamic_jacobian1(node,vnode,capacitance)\
     133                 :            :         if (doAC) {\
     134                 :            :         _jdyna[node][vnode] += capacitance;\
     135                 :            :         }\
     136                 :            :         if (doTR) {\
     137                 :            :         _caps[node][node][vnode][vnode] += capacitance;\
     138                 :            :         }\
     139                 :            :         if (doHB) {\
     140                 :            :         _chs[node] += capacitance * NP(vnode);\
     141                 :            :         }
     142                 :            : 
     143                 :            : #define _save_whitenoise1(n1,pwr,type)\
     144                 :            :         _white_pwr[n1][n1] += pwr;
     145                 :            : #define _save_whitenoise2(n1,n2,pwr,type)\
     146                 :            :         _white_pwr[n1][n2] += pwr;
     147                 :            : #define _save_flickernoise1(n1,pwr,exp,type)\
     148                 :            :         _flicker_pwr[n1][n1] += pwr;\
     149                 :            :         _flicker_exp[n1][n1] += exp;
     150                 :            : #define _save_flickernoise2(n1,n2,pwr,exp,type)\
     151                 :            :         _flicker_pwr[n1][n2] += pwr;\
     152                 :            :         _flicker_exp[n1][n2] += exp;
     153                 :            : #define _load_whitenoise2(n1,n2,pwr)\
     154                 :            :         cy (n1,n2) -= pwr/kB/T0; cy (n2,n1) -= pwr/kB/T0;\
     155                 :            :         cy (n1,n1) += pwr/kB/T0; cy (n2,n2) += pwr/kB/T0;
     156                 :            : #define _load_whitenoise1(n1,pwr)\
     157                 :            :         cy (n1,n1) += pwr/kB/T0;
     158                 :            : #define _load_flickernoise2(n1,n2,pwr,exp)\
     159                 :            :         cy (n1,n2) -= pwr*pow(_freq,-exp)/kB/T0;\
     160                 :            :         cy (n2,n1) -= pwr*pow(_freq,-exp)/kB/T0;\
     161                 :            :         cy (n1,n1) += pwr*pow(_freq,-exp)/kB/T0;\
     162                 :            :         cy (n2,n2) += pwr*pow(_freq,-exp)/kB/T0;
     163                 :            : #define _load_flickernoise1(n1,pwr,exp)\
     164                 :            :         cy (n1,n1) += pwr*pow(_freq,-exp)/kB/T0;
     165                 :            : 
     166                 :            : // derivative helper macros
     167                 :            : // transcendental LRM p. 59
     168                 :            : #define m00_cos(v00,x)          v00 = cos(x);
     169                 :            : #define m10_cos(v10,v00,x)      v10 = (-sin(x));
     170                 :            : #define m00_sin(v00,x)          v00 = sin(x);
     171                 :            : #define m10_sin(v10,v00,x)      v10 = (cos(x));
     172                 :            : #define m00_tan(v00,x)          v00 = tan(x);
     173                 :            : #define m10_tan(v10,v00,x)      v10 = (1.0/cos(x)/cos(x));
     174                 :            : #define m00_cosh(v00,x)         v00 = cosh(x);
     175                 :            : #define m10_cosh(v10,v00,x)     v10 = (sinh(x));
     176                 :            : #define m00_sinh(v00,x)         v00 = sinh(x);
     177                 :            : #define m10_sinh(v10,v00,x)     v10 = (cosh(x));
     178                 :            : #define m00_tanh(v00,x)         v00 = tanh(x);
     179                 :            : #define m10_tanh(v10,v00,x)     v10 = (1.0/cosh(x)/cosh(x));
     180                 :            : #define m00_acos(v00,x)         v00 = acos(x);
     181                 :            : #define m10_acos(v10,v00,x)     v10 = (-1.0/sqrt(1-x*x));
     182                 :            : #define m00_asin(v00,x)         v00 = asin(x);
     183                 :            : #define m10_asin(v10,v00,x)     v10 = (+1.0/sqrt(1-x*x));
     184                 :            : #define m00_atan(v00,x)         v00 = atan(x);
     185                 :            : #define m10_atan(v10,v00,x)     v10 = (+1.0/(1+x*x));
     186                 :            : #define m00_hypot(v00,x,y)      v00 = sqrt((x)*(x)+(y)*(y));
     187                 :            : #define m10_hypot(v10,v00,x,y)  v10 = (x)/(v00);
     188                 :            : #define m11_hypot(v11,v00,x,y)  v11 = (y)/(v00);
     189                 :            : #define m00_atan2(v00,x,y)      v00 = atan2(x,y);
     190                 :            : // TODO atan2 derivatives ?
     191                 :            : #define m00_acosh(v00,x)        v00 = acosh(x);
     192                 :            : #define m10_acosh(v10,v00,x)    v10 = (1.0/(sqrt(x-1)*sqrt(x+1)));
     193                 :            : #define m00_asinh(v00,x)        v00 = asinh(x);
     194                 :            : #define m10_asinh(v10,v00,x)    v10 = (1.0/(sqrt(x*x+1)));
     195                 :            : #define m00_atanh(v00,x)        v00 = atanh(x);
     196                 :            : #define m10_atanh(v10,v00,x)    v10 = (1.0/(1-x*x));
     197                 :            : 
     198                 :            : 
     199                 :            : // standard functions LRM p.58
     200                 :            : #define m00_logE(v00,x)         v00 = log(x);
     201                 :            : #define m10_logE(v10,v00,x)     v10 = (1.0/x);
     202                 :            : #define m00_log10(v00,x)        v00 = log10(x);
     203                 :            : #define m10_log10(v10,v00,x)    v10 = (1.0/x/M_LN10);
     204                 :            : #define m00_exp(v00,x)          v00 = exp(x);
     205                 :            : #define m10_exp(v10,v00,x)      v10 = v00;
     206                 :            : #define m00_sqrt(v00,x)         v00 = sqrt(x);
     207                 :            : #define m10_sqrt(v10,v00,x)     v10 = (0.5/v00);
     208                 :            : #define m00_min(v00,x,y)        v00 = ((x)<(y))?(x):(y);
     209                 :            : #define m10_min(v10,v00,x,y)    v10 = ((x)<(y))?1.0:0.0;
     210                 :            : #define m11_min(v11,v00,x,y)    v11 = ((x)<(y))?0.0:1.0;
     211                 :            : #define m00_max(v00,x,y)        v00 = ((x)>(y))?(x):(y);
     212                 :            : #define m10_max(v10,v00,x,y)    v10 = ((x)>(y))?1.0:0.0;
     213                 :            : #define m11_max(v11,v00,x,y)    v11 = ((x)>(y))?0.0:1.0;
     214                 :            : #define m00_pow(v00,x,y)        v00 = pow(x,y);
     215                 :            : #define m10_pow(v10,v00,x,y)    v10 = (x==0.0)?0.0:(v00)*(y)/(x);
     216                 :            : #define m11_pow(v11,v00,x,y)    v11 = (x==0.0)?0.0:(log(x)*(v00));
     217                 :            : #define m00_abs(v00,x)          v00 = ((x)<(0)?(-(x)):(x));
     218                 :            : #define m10_abs(v10,v00,x)      v10 = (((x)>=0)?(+1.0):(-1.0));
     219                 :            : #define m00_floor(v00,x)        v00 = floor(x);
     220                 :            : #define m10_floor(v10,v00,x)    v10 = 1.0;
     221                 :            : 
     222                 :            : #define m00_ceil(v00,x)         v00 = ceil(x);
     223                 :            : // TODO ceil derivative, needed?
     224                 :            : 
     225                 :            : // analog operator, LRM p.61
     226                 :            : #define m00_limexp(v00,x)       v00 = ((x)<80.0?exp(x):exp(80.0)*(x-79.0));
     227                 :            : #define m10_limexp(v10,v00,x)   v10 = ((x)<80.0?(v00):exp(80.0));
     228                 :            : 
     229                 :            : // analog kernel parameter system functions, LRM p.215
     230                 :            : #define m00_vt(x)               (kBoverQ*(x))
     231                 :            : #define m10_vt(x)               (kBoverQ)
     232                 :            : 
     233                 :            : // extra functions (?)
     234                 :            : #define m00_div(v00,v10,x,y)    double v10=1/(y); double v00=(x)*v10;
     235                 :            : #define m10_div(v10,v00,vv,x,y)
     236                 :            : #define m11_div(v11,v00,vv,x,y) double v11 = -v00*vv;
     237                 :            : #define m00_mult(v00,v10,v11,x,y) double v10=(x); double v11=(y); double v00=v10*v11;
     238                 :            : #define m00_add(v00,x,y)        double v00=(x)+(y);
     239                 :            : 
     240                 :            : // second derivatives
     241                 :            : #define m20_logE(v00)           (-1.0/v00/v00)
     242                 :            : #define m20_exp(v00)            exp(v00)
     243                 :            : #define m20_limexp(v00)         ((v00)<80.0?exp(v00):0.0)
     244                 :            : #define m20_sqrt(v00)           (-0.25/(v00)/sqrt(v00))
     245                 :            : #define m20_abs(v00)           0.0
     246                 :            : #define m20_pow(x,y)            ((y)*((y)-1.0)*pow(x,y)/(x)/(x))
     247                 :            : 
     248                 :            : 
     249                 :            : // simulator specific definitions
     250                 :            : #define _modelname              "MESFET"
     251                 :            : #define _instancename           getName()
     252                 :            : #define _circuit_temp           (getPropertyDouble("Temp")+273.15)
     253                 :            : #define _param_given(p)         (isPropertyGiven(p)?1:0)
     254                 :            : 
     255                 :            : 
     256                 :            : // $vt and $vt() functions
     257                 :            : #define _vt_nom                 (kBoverQ*_circuit_temp)
     258                 :            : 
     259                 :            : using namespace qucs::device;
     260                 :            : using qucs::matrix;
     261                 :            : 
     262                 :            : /* Device constructor. */
     263                 :          0 : MESFET::MESFET() : circuit (7)
     264                 :            : {
     265                 :          0 :   type = CIR_MESFET;
     266                 :          0 : }
     267                 :            : 
     268                 :            : /* Initialization of model. */
     269                 :          0 : void MESFET::initModel (void)
     270                 :            : {
     271                 :            :   // create internal nodes
     272                 :          0 :   setInternalNode (n1, "n1");
     273                 :          0 :   setInternalNode (n2, "n2");
     274                 :          0 :   setInternalNode (n3, "n3");
     275                 :          0 :   setInternalNode (n4, "n4");
     276                 :            : 
     277                 :            :   // get device model parameters
     278                 :          0 :   loadVariables ();
     279                 :            :   // evaluate global model equations
     280                 :          0 :   initializeModel ();
     281                 :            :   // evaluate initial step equations
     282                 :          0 :   initialStep ();
     283                 :            :   // evaluate global instance equations
     284                 :          0 :   initializeInstance ();
     285                 :          0 : }
     286                 :            : 
     287                 :            : /* Initialization of DC analysis. */
     288                 :          0 : void MESFET::initDC (void)
     289                 :            : {
     290                 :          0 :   allocMatrixMNA ();
     291                 :          0 :   initModel ();
     292                 :          0 :   pol = 1;
     293                 :          0 :   restartDC ();
     294                 :          0 :   doAC = 1;
     295                 :          0 :   doTR = 0;
     296                 :          0 :   doHB = 0;
     297                 :          0 : }
     298                 :            : 
     299                 :            : /* Run when DC is restarted (fallback algorithms). */
     300                 :          0 : void MESFET::restartDC (void)
     301                 :            : {
     302                 :          0 : }
     303                 :            : 
     304                 :            : /* Initialize Verilog-AMS code. */
     305                 :          0 : void MESFET::initVerilog (void)
     306                 :            : {
     307                 :            :   // initialization of noise variables
     308                 :          0 :   _white_pwr[n4][Source] = 0.0;
     309                 :          0 :   _white_pwr[Drain][n3] = 0.0;
     310                 :          0 :   _white_pwr[Gate][n2] = 0.0;
     311                 :          0 :   _white_pwr[n3][n4] = 0.0;
     312                 :          0 :   _flicker_pwr[n3][n4] = 0.0;
     313                 :          0 :   _flicker_exp[n3][n4] = 0.0;
     314                 :            : 
     315                 :            :   int i1, i2, i3, i4;
     316                 :            : 
     317                 :            :   // zero charges
     318         [ #  # ]:          0 :   for (i1 = 0; i1 < 7; i1++) {
     319         [ #  # ]:          0 :   for (i2 = 0; i2 < 7; i2++) {
     320                 :          0 :     _charges[i1][i2] = 0.0;
     321                 :            :   } }
     322                 :            : 
     323                 :            :   // zero capacitances
     324         [ #  # ]:          0 :   for (i1 = 0; i1 < 7; i1++) {
     325         [ #  # ]:          0 :   for (i2 = 0; i2 < 7; i2++) {
     326         [ #  # ]:          0 :   for (i3 = 0; i3 < 7; i3++) {
     327         [ #  # ]:          0 :   for (i4 = 0; i4 < 7; i4++) {
     328                 :          0 :     _caps[i1][i2][i3][i4] = 0.0;
     329                 :            :   } } } }
     330                 :            : 
     331                 :            :   // zero right hand side, static and dynamic jacobian
     332         [ #  # ]:          0 :   for (i1 = 0; i1 < 7; i1++) {
     333                 :          0 :     _rhs[i1] = 0.0;
     334                 :          0 :     _qhs[i1] = 0.0;
     335                 :          0 :     _chs[i1] = 0.0;
     336                 :          0 :     _ghs[i1] = 0.0;
     337         [ #  # ]:          0 :     for (i2 = 0; i2 < 7; i2++) {
     338                 :          0 :       _jstat[i1][i2] = 0.0;
     339                 :          0 :       _jdyna[i1][i2] = 0.0;
     340                 :            :     }
     341                 :            :   }
     342                 :          0 : }
     343                 :            : 
     344                 :            : /* Load device model input parameters. */
     345                 :          0 : void MESFET::loadVariables (void)
     346                 :            : {
     347                 :          0 :   LEVEL = getPropertyInteger ("LEVEL");
     348                 :          0 :   Vto = getPropertyDouble ("Vto");
     349                 :          0 :   Beta = getPropertyDouble ("Beta");
     350                 :          0 :   Alpha = getPropertyDouble ("Alpha");
     351                 :          0 :   Lambda = getPropertyDouble ("Lambda");
     352                 :          0 :   B = getPropertyDouble ("B");
     353                 :          0 :   Qp = getPropertyDouble ("Qp");
     354                 :          0 :   Delta = getPropertyDouble ("Delta");
     355                 :          0 :   Vmax = getPropertyDouble ("Vmax");
     356                 :          0 :   Vdelta1 = getPropertyDouble ("Vdelta1");
     357                 :          0 :   Vdelta2 = getPropertyDouble ("Vdelta2");
     358                 :          0 :   Gamma = getPropertyDouble ("Gamma");
     359                 :          0 :   Nsc = getPropertyDouble ("Nsc");
     360                 :          0 :   Is = getPropertyDouble ("Is");
     361                 :          0 :   N = getPropertyDouble ("N");
     362                 :          0 :   Vbi = getPropertyDouble ("Vbi");
     363                 :          0 :   Bv = getPropertyDouble ("Bv");
     364                 :          0 :   Xti = getPropertyDouble ("Xti");
     365                 :          0 :   Fc = getPropertyDouble ("Fc");
     366                 :          0 :   Tau = getPropertyDouble ("Tau");
     367                 :          0 :   Rin = getPropertyDouble ("Rin");
     368                 :          0 :   Area = getPropertyDouble ("Area");
     369                 :          0 :   Eg = getPropertyDouble ("Eg");
     370                 :          0 :   M = getPropertyDouble ("M");
     371                 :          0 :   Cgd = getPropertyDouble ("Cgd");
     372                 :          0 :   Cgs = getPropertyDouble ("Cgs");
     373                 :          0 :   Cds = getPropertyDouble ("Cds");
     374                 :          0 :   Betatc = getPropertyDouble ("Betatc");
     375                 :          0 :   Alphatc = getPropertyDouble ("Alphatc");
     376                 :          0 :   Gammatc = getPropertyDouble ("Gammatc");
     377                 :          0 :   Ng = getPropertyDouble ("Ng");
     378                 :          0 :   Nd = getPropertyDouble ("Nd");
     379                 :          0 :   ILEVELS = getPropertyInteger ("ILEVELS");
     380                 :          0 :   ILEVELD = getPropertyInteger ("ILEVELD");
     381                 :          0 :   QLEVELS = getPropertyInteger ("QLEVELS");
     382                 :          0 :   QLEVELD = getPropertyInteger ("QLEVELD");
     383                 :          0 :   QLEVELDS = getPropertyInteger ("QLEVELDS");
     384                 :          0 :   Vtotc = getPropertyDouble ("Vtotc");
     385                 :          0 :   Rg = getPropertyDouble ("Rg");
     386                 :          0 :   Rd = getPropertyDouble ("Rd");
     387                 :          0 :   Rs = getPropertyDouble ("Rs");
     388                 :          0 :   Rgtc = getPropertyDouble ("Rgtc");
     389                 :          0 :   Rdtc = getPropertyDouble ("Rdtc");
     390                 :          0 :   Rstc = getPropertyDouble ("Rstc");
     391                 :          0 :   Ibv = getPropertyDouble ("Ibv");
     392                 :          0 :   Rf = getPropertyDouble ("Rf");
     393                 :          0 :   R1 = getPropertyDouble ("R1");
     394                 :          0 :   Af = getPropertyDouble ("Af");
     395                 :          0 :   Kf = getPropertyDouble ("Kf");
     396                 :          0 :   Gdsnoi = getPropertyDouble ("Gdsnoi");
     397                 :          0 :   Tnom = getPropertyDouble ("Tnom");
     398                 :          0 : }
     399                 :            : 
     400                 :            : /* #define's for translated code */
     401                 :            : #undef  _DDT
     402                 :            : #define _DDT(q) q
     403                 :            : #define _DYNAMIC
     404                 :            : #define _DERIVATE
     405                 :            : #define _DDX
     406                 :            : #define _DERIVATEFORDDX
     407                 :            : 
     408                 :            : /* Evaluate Verilog-AMS equations in model initialization. */
     409                 :          0 : void MESFET::initializeModel (void)
     410                 :            : {
     411                 :          0 : }
     412                 :            : 
     413                 :            : /* Evaluate Verilog-AMS equations in instance initialization. */
     414                 :          0 : void MESFET::initializeInstance (void)
     415                 :            : {
     416                 :          0 : }
     417                 :            : 
     418                 :            : /* Evaluate Verilog-AMS equations in initial step. */
     419                 :          0 : void MESFET::initialStep (void)
     420                 :            : {
     421                 :          0 : }
     422                 :            : 
     423                 :            : /* Evaluate Verilog-AMS equations in final step. */
     424                 :          0 : void MESFET::finalStep (void)
     425                 :            : {
     426                 :          0 : }
     427                 :            : 
     428                 :            : /* Evaluate Verilog-AMS equations in analog block. */
     429                 :          0 : void MESFET::calcVerilog (void)
     430                 :            : {
     431                 :            : 
     432                 :            : /* ----------------- evaluate verilog analog equations -------------------- */
     433                 :            : double gm1;
     434                 :            : #if defined(_DERIVATE)
     435                 :            : double gm1_Vn2_n4;
     436                 :            : double gm1_Vn3_n4;
     437                 :            : #endif
     438                 :            : double H1;
     439                 :            : #if defined(_DERIVATE)
     440                 :            : double H1_Vn3_n4;
     441                 :            : double H1_Vn2_n4;
     442                 :            : #endif
     443                 :            : double flicker_pwr;
     444                 :            : #if defined(_DERIVATE)
     445                 :            : double flicker_pwr_Vn2_n4;
     446                 :            : double flicker_pwr_Vn3_n4;
     447                 :            : #endif
     448                 :            : double thermal_pwr;
     449                 :            : #if defined(_DERIVATE)
     450                 :            : double thermal_pwr_Vn2_n4;
     451                 :            : double thermal_pwr_Vn3_n4;
     452                 :            : #endif
     453                 :            : double An;
     454                 :            : #if defined(_DERIVATE)
     455                 :            : double An_Vn3_n4;
     456                 :            : double An_Vn2_n4;
     457                 :            : #endif
     458                 :            : double gm;
     459                 :            : #if defined(_DERIVATE)
     460                 :            : double gm_Vn2_n4;
     461                 :            : double gm_Vn3_n4;
     462                 :            : #endif
     463                 :            : double fourkt;
     464                 :            : #if defined(_DYNAMIC)
     465                 :            : double Qds;
     466                 :            : #if defined(_DERIVATE)
     467                 :            : double Qds_Vn2_n4;
     468                 :            : double Qds_Vn3_n4;
     469                 :            : #endif
     470                 :            : #endif
     471                 :            : #if defined(_DYNAMIC)
     472                 :            : double Veff2;
     473                 :            : #if defined(_DERIVATE)
     474                 :            : double Veff2_Vn2_n1;
     475                 :            : double Veff2_Vn2_n3;
     476                 :            : #endif
     477                 :            : #endif
     478                 :            : #if defined(_DYNAMIC)
     479                 :            : double Qgd2;
     480                 :            : #if defined(_DERIVATE)
     481                 :            : double Qgd2_Vn2_n3;
     482                 :            : #endif
     483                 :            : #endif
     484                 :            : #if defined(_DYNAMIC)
     485                 :            : double Qgd1;
     486                 :            : #if defined(_DERIVATE)
     487                 :            : double Qgd1_Vn2_n3;
     488                 :            : #endif
     489                 :            : #endif
     490                 :            : #if defined(_DYNAMIC)
     491                 :            : double Qgd;
     492                 :            : #if defined(_DERIVATE)
     493                 :            : double Qgd_Vn2_n1;
     494                 :            : double Qgd_Vn2_n3;
     495                 :            : #endif
     496                 :            : #endif
     497                 :            : #if defined(_DYNAMIC)
     498                 :            : double Vnew;
     499                 :            : #if defined(_DERIVATE)
     500                 :            : double Vnew_Vn2_n1;
     501                 :            : double Vnew_Vn2_n3;
     502                 :            : #endif
     503                 :            : #endif
     504                 :            : #if defined(_DYNAMIC)
     505                 :            : double Veff1;
     506                 :            : #if defined(_DERIVATE)
     507                 :            : double Veff1_Vn2_n1;
     508                 :            : double Veff1_Vn2_n3;
     509                 :            : #endif
     510                 :            : #endif
     511                 :            : #if defined(_DYNAMIC)
     512                 :            : double Qgs2;
     513                 :            : #if defined(_DERIVATE)
     514                 :            : double Qgs2_Vn2_n1;
     515                 :            : #endif
     516                 :            : #endif
     517                 :            : #if defined(_DYNAMIC)
     518                 :            : double Qgs1;
     519                 :            : #if defined(_DERIVATE)
     520                 :            : double Qgs1_Vn2_n1;
     521                 :            : #endif
     522                 :            : #endif
     523                 :            : #if defined(_DYNAMIC)
     524                 :            : double Qgs;
     525                 :            : #if defined(_DERIVATE)
     526                 :            : double Qgs_Vn2_n3;
     527                 :            : double Qgs_Vn2_n1;
     528                 :            : #endif
     529                 :            : #endif
     530                 :            : double Igd4;
     531                 :            : #if defined(_DERIVATE)
     532                 :            : double Igd4_Vn2_n3;
     533                 :            : #endif
     534                 :            : double Igd3;
     535                 :            : double Igd2;
     536                 :            : #if defined(_DERIVATE)
     537                 :            : double Igd2_Vn2_n3;
     538                 :            : #endif
     539                 :            : double Igd1;
     540                 :            : #if defined(_DERIVATE)
     541                 :            : double Igd1_Vn2_n3;
     542                 :            : #endif
     543                 :            : double Igd;
     544                 :            : #if defined(_DERIVATE)
     545                 :            : double Igd_Vn2_n3;
     546                 :            : #endif
     547                 :            : double Igs4;
     548                 :            : #if defined(_DERIVATE)
     549                 :            : double Igs4_Vn2_n4;
     550                 :            : #endif
     551                 :            : double Igs3;
     552                 :            : double Igs2;
     553                 :            : #if defined(_DERIVATE)
     554                 :            : double Igs2_Vn2_n4;
     555                 :            : #endif
     556                 :            : double Igs1;
     557                 :            : #if defined(_DERIVATE)
     558                 :            : double Igs1_Vn2_n4;
     559                 :            : #endif
     560                 :            : double Igs;
     561                 :            : #if defined(_DERIVATE)
     562                 :            : double Igs_Vn2_n4;
     563                 :            : #endif
     564                 :            : double Fd;
     565                 :            : #if defined(_DERIVATE)
     566                 :            : double Fd_Vn3_n4;
     567                 :            : #endif
     568                 :            : double Al;
     569                 :            : #if defined(_DERIVATE)
     570                 :            : double Al_Vn3_n4;
     571                 :            : #endif
     572                 :            : double Vg;
     573                 :            : #if defined(_DERIVATE)
     574                 :            : double Vg_Vn3_n4;
     575                 :            : double Vg_Vn2_n4;
     576                 :            : #endif
     577                 :            : double Vst;
     578                 :            : #if defined(_DERIVATE)
     579                 :            : double Vst_Vn3_n4;
     580                 :            : #endif
     581                 :            : double Nst;
     582                 :            : #if defined(_DERIVATE)
     583                 :            : double Nst_Vn3_n4;
     584                 :            : #endif
     585                 :            : double Ids1;
     586                 :            : #if defined(_DERIVATE)
     587                 :            : double Ids1_Vn2_n4;
     588                 :            : double Ids1_Vn3_n4;
     589                 :            : #endif
     590                 :            : double Vf;
     591                 :            : #if defined(_DERIVATE)
     592                 :            : double Vf_Vn2_n4;
     593                 :            : #endif
     594                 :            : double Ah;
     595                 :            : double Ids;
     596                 :            : #if defined(_DERIVATE)
     597                 :            : double Ids_Vn2_n4;
     598                 :            : double Ids_Vn3_n4;
     599                 :            : #endif
     600                 :            : double Alpha_T2;
     601                 :            : double Gamma_T2;
     602                 :            : double Vto_T2;
     603                 :            : #if defined(_DYNAMIC)
     604                 :            : double Cgd_T2;
     605                 :            : #endif
     606                 :            : #if defined(_DYNAMIC)
     607                 :            : double Cgs_T2;
     608                 :            : #endif
     609                 :            : double Is_T2;
     610                 :            : #if defined(_DYNAMIC)
     611                 :            : double Vbi_T2;
     612                 :            : #endif
     613                 :            : #if defined(_DYNAMIC)
     614                 :            : double F3;
     615                 :            : #endif
     616                 :            : #if defined(_DYNAMIC)
     617                 :            : double F2;
     618                 :            : #endif
     619                 :            : #if defined(_DYNAMIC)
     620                 :            : double F1;
     621                 :            : #endif
     622                 :            : #if defined(_DYNAMIC)
     623                 :            : double Eg_T2;
     624                 :            : #endif
     625                 :            : double Eg_T1;
     626                 :            : double Vt_T2;
     627                 :            : double Beta_T2;
     628                 :            : double Rs_T2;
     629                 :            : double Rd_T2;
     630                 :            : double Rg_T2;
     631                 :            : #if defined(_DYNAMIC)
     632                 :            : double con1;
     633                 :            : #endif
     634                 :            : double Tr;
     635                 :            : double T2;
     636                 :            : double T1;
     637                 :            : #if defined(_DYNAMIC)
     638                 :            : #endif
     639                 :            : #if defined(_DYNAMIC)
     640                 :            : {
     641         [ #  # ]:          0 : double m00_min(d00_min0,(Fc*Vbi),Vmax)
     642                 :          0 : Vmax=d00_min0;
     643                 :            : }
     644                 :            : #endif
     645                 :          0 : T1=(Tnom+273.15);
     646                 :          0 : T2=_circuit_temp;
     647                 :          0 : Tr=(T2/T1);
     648                 :            : #if defined(_DYNAMIC)
     649                 :            : {
     650                 :          0 : double m00_pow(d00_pow0,Tr,1.5)
     651                 :          0 : con1=d00_pow0;
     652                 :            : }
     653                 :            : #endif
     654                 :          0 : Rg_T2=(Rg*(1+(Rgtc*(T2-T1))));
     655                 :          0 : Rd_T2=(Rd*(1+(Rdtc*(T2-T1))));
     656                 :          0 : Rs_T2=(Rs*(1+(Rstc*(T2-T1))));
     657                 :            : {
     658                 :          0 : double m00_pow(d00_pow0,1.01,(Betatc*(T2-T1)))
     659                 :          0 : Beta_T2=((Area*Beta)*d00_pow0);
     660                 :            : }
     661                 :          0 : Vt_T2=_vt_nom;
     662                 :          0 : Eg_T1=(Eg-(((7.02e-4*T1)*T1)/(1108.0+T1)));
     663                 :            : #if defined(_DYNAMIC)
     664                 :          0 : Eg_T2=(Eg-(((7.02e-4*T2)*T2)/(1108.0+T2)));
     665                 :            : #endif
     666                 :            : #if defined(_DYNAMIC)
     667                 :            : {
     668                 :          0 : double m00_pow(d00_pow0,(1-Fc),(1-M))
     669                 :          0 : F1=((Vbi/(1-M))*(1-d00_pow0));
     670                 :            : }
     671                 :            : #endif
     672                 :            : #if defined(_DYNAMIC)
     673                 :            : {
     674                 :          0 : double m00_pow(d00_pow0,(1-Fc),(1+M))
     675                 :          0 : F2=d00_pow0;
     676                 :            : }
     677                 :            : #endif
     678                 :            : #if defined(_DYNAMIC)
     679                 :          0 : F3=(1-(Fc*(1+M)));
     680                 :            : #endif
     681                 :            : #if defined(_DYNAMIC)
     682                 :            : {
     683                 :          0 : double m00_logE(d00_logE0,con1)
     684                 :          0 : Vbi_T2=(((Tr*Vbi)-((2*Vt_T2)*d00_logE0))-((Tr*Eg_T1)-Eg_T2));
     685                 :            : }
     686                 :            : #endif
     687                 :            : {
     688                 :          0 : double m00_pow(d00_pow0,Tr,(Xti/N))
     689         [ #  # ]:          0 : double m00_limexp(d00_limexp1,(((-(1.602176462e-19*Eg_T1))*(1-Tr))/(1.3806503e-23*T2)))
     690                 :          0 : Is_T2=(((Area*Is)*d00_pow0)*d00_limexp1);
     691                 :            : }
     692                 :            : #if defined(_DYNAMIC)
     693                 :          0 : Cgs_T2=((Area*Cgs)*(1+(M*((400e-6*(T2-T1))-((Vbi_T2-Vbi)/Vbi)))));
     694                 :            : #endif
     695                 :            : #if defined(_DYNAMIC)
     696                 :          0 : Cgd_T2=((Area*Cgd)*(1+(M*((400e-6*(T2-T1))-((Vbi_T2-Vbi)/Vbi)))));
     697                 :            : #endif
     698                 :          0 : Vto_T2=(Vto+(Vtotc*(T2-T1)));
     699                 :          0 : Gamma_T2=(Gamma*(1+(Gammatc*(T2-T1))));
     700                 :            : {
     701                 :          0 : double m00_pow(d00_pow0,1.01,(Alphatc*(T2-T1)))
     702                 :          0 : Alpha_T2=(Alpha*d00_pow0);
     703                 :            : }
     704         [ #  # ]:          0 : if
     705                 :            : ((LEVEL)==(1))
     706                 :            : {
     707         [ #  # ]:          0 : if
     708         [ #  # ]:          0 : ((BP(n2,n4)-Vto_T2)>0)
     709                 :            : {
     710                 :            : {
     711         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
     712         [ #  # ]:          0 : double m00_tanh(d00_tanh1,(Alpha*BP(n3,n4)))
     713                 :            : #if defined(_DERIVATE)
     714 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     715 [ #  # ][ #  # ]:          0 : double m10_tanh(d10_tanh1,d00_tanh1,(Alpha*BP(n3,n4)))
                 [ #  # ]
     716                 :            : #endif
     717                 :            : #if defined(_DERIVATE)
     718         [ #  # ]:          0 : Ids_Vn2_n4=(Beta_T2*(d10_pow0*1.0))*(1+(Lambda*BP(n3,n4)))*d00_tanh1;
     719         [ #  # ]:          0 : Ids_Vn3_n4=((((Beta_T2*d00_pow0)*(Lambda))*d00_tanh1)+(((Beta_T2*d00_pow0)*(1+(Lambda*BP(n3,n4))))*(Alpha)*d10_tanh1));
     720                 :            : #endif
     721         [ #  # ]:          0 : Ids=(((Beta_T2*d00_pow0)*(1+(Lambda*BP(n3,n4))))*d00_tanh1);
     722                 :            : }
     723                 :            : }
     724                 :            : else
     725                 :            : {
     726                 :            : #if defined(_DERIVATE)
     727                 :          0 : Ids_Vn2_n4=0.0;
     728                 :          0 : Ids_Vn3_n4=0.0;
     729                 :            : #endif
     730                 :          0 : Ids=0;
     731                 :            : }
     732                 :            : }
     733                 :            : else
     734         [ #  # ]:          0 : if
     735                 :            : ((LEVEL)==(2))
     736                 :            : {
     737                 :          0 : Ah=(1/((2*Vt_T2)*Nsc));
     738                 :            : {
     739         [ #  # ]:          0 : double m00_exp(d00_exp0,(Ah*(BP(n2,n4)-Vto_T2)))
     740                 :          0 : double m00_logE(d00_logE1,(1+d00_exp0))
     741                 :            : #if defined(_DERIVATE)
     742                 :            : #define d10_exp0 d00_exp0
     743                 :          0 : double m10_logE(d10_logE1,d00_logE1,(1+d00_exp0))
     744                 :            : #endif
     745                 :            : #if defined(_DERIVATE)
     746                 :          0 : Vf_Vn2_n4=((Ah)*d10_exp0*d10_logE1/Ah);
     747                 :            : #endif
     748                 :          0 : Vf=(d00_logE1/Ah);
     749                 :            : }
     750                 :            : {
     751                 :          0 : double m00_pow(d00_pow0,Vf,2.0)
     752         [ #  # ]:          0 : double m00_tanh(d00_tanh1,(Alpha*BP(n3,n4)))
     753                 :            : #if defined(_DERIVATE)
     754         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Vf,2.0)
     755 [ #  # ][ #  # ]:          0 : double m10_tanh(d10_tanh1,d00_tanh1,(Alpha*BP(n3,n4)))
                 [ #  # ]
     756                 :            : #endif
     757                 :            : #if defined(_DERIVATE)
     758         [ #  # ]:          0 : Ids_Vn2_n4=(Beta_T2*(d10_pow0*Vf_Vn2_n4))*(1+(Lambda*BP(n3,n4)))*d00_tanh1;
     759         [ #  # ]:          0 : Ids_Vn3_n4=((((Beta_T2*d00_pow0)*(Lambda))*d00_tanh1)+(((Beta_T2*d00_pow0)*(1+(Lambda*BP(n3,n4))))*(Alpha)*d10_tanh1));
     760                 :            : #endif
     761         [ #  # ]:          0 : Ids=(((Beta_T2*d00_pow0)*(1+(Lambda*BP(n3,n4))))*d00_tanh1);
     762                 :            : }
     763                 :            : }
     764                 :            : else
     765         [ #  # ]:          0 : if
     766                 :            : ((LEVEL)==(3))
     767                 :            : {
     768         [ #  # ]:          0 : if
     769         [ #  # ]:          0 : ((BP(n2,n4)-Vto_T2)>0)
     770                 :            : {
     771   [ #  #  #  # ]:          0 : if
                 [ #  # ]
     772 [ #  # ][ #  # ]:          0 : ((0<BP(n3,n4))&&(BP(n3,n4)<(3/Alpha)))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
     773                 :            : {
     774                 :            : {
     775         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
     776         [ #  # ]:          0 : double m00_pow(d00_pow1,(1-((Alpha*BP(n3,n4))/3)),3.0)
     777                 :            : #if defined(_DERIVATE)
     778 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     779 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow1,d00_pow1,(1-((Alpha*BP(n3,n4))/3)),3.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     780                 :            : #endif
     781                 :            : #if defined(_DERIVATE)
     782 [ #  # ][ #  # ]:          0 : Ids_Vn2_n4=((((Beta_T2*(1+(Lambda*BP(n3,n4))))*(d10_pow0*1.0))*(1-d00_pow1)*(1+(B*(BP(n2,n4)-Vto_T2)))-(((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*(1-d00_pow1))*(B))/(1+(B*(BP(n2,n4)-Vto_T2)))/(1+(B*(BP(n2,n4)-Vto_T2))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     783 [ #  # ][ #  # ]:          0 : Ids_Vn3_n4=((((Beta_T2*(Lambda))*d00_pow0*(1-d00_pow1))+(((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*(-(d10_pow1*(-((Alpha)/3))))))/(1+(B*(BP(n2,n4)-Vto_T2))));
                 [ #  # ]
     784                 :            : #endif
     785 [ #  # ][ #  # ]:          0 : Ids=((((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*(1-d00_pow1))/(1+(B*(BP(n2,n4)-Vto_T2))));
                 [ #  # ]
     786                 :            : }
     787                 :            : }
     788         [ #  # ]:          0 : if
     789         [ #  # ]:          0 : (BP(n3,n4)>=(3/Alpha))
     790                 :            : {
     791                 :            : {
     792         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
     793                 :            : #if defined(_DERIVATE)
     794 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     795                 :            : #endif
     796                 :            : #if defined(_DERIVATE)
     797 [ #  # ][ #  # ]:          0 : Ids_Vn2_n4=((((Beta_T2*(1+(Lambda*BP(n3,n4))))*(d10_pow0*1.0))*(1+(B*(BP(n2,n4)-Vto_T2)))-((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*(B))/(1+(B*(BP(n2,n4)-Vto_T2)))/(1+(B*(BP(n2,n4)-Vto_T2))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     798         [ #  # ]:          0 : Ids_Vn3_n4=((Beta_T2*(Lambda))*d00_pow0/(1+(B*(BP(n2,n4)-Vto_T2))));
     799                 :            : #endif
     800 [ #  # ][ #  # ]:          0 : Ids=(((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)/(1+(B*(BP(n2,n4)-Vto_T2))));
                 [ #  # ]
     801                 :            : }
     802                 :            : }
     803         [ #  # ]:          0 : if
     804         [ #  # ]:          0 : (BP(n3,n4)<0)
     805                 :            : {
     806                 :            : #if defined(_DERIVATE)
     807                 :          0 : Ids_Vn2_n4=0.0;
     808                 :          0 : Ids_Vn3_n4=0.0;
     809                 :            : #endif
     810                 :          0 : Ids=0;
     811                 :            : }
     812                 :            : }
     813                 :            : else
     814                 :            : {
     815                 :            : #if defined(_DERIVATE)
     816                 :          0 : Ids_Vn2_n4=0.0;
     817                 :          0 : Ids_Vn3_n4=0.0;
     818                 :            : #endif
     819                 :          0 : Ids=0;
     820                 :            : }
     821                 :            : }
     822                 :            : else
     823         [ #  # ]:          0 : if
     824                 :            : ((LEVEL)==(4))
     825                 :            : {
     826         [ #  # ]:          0 : if
     827         [ #  # ]:          0 : ((BP(n2,n4)-Vto_T2)>0)
     828                 :            : {
     829   [ #  #  #  # ]:          0 : if
                 [ #  # ]
     830 [ #  # ][ #  # ]:          0 : ((0<BP(n3,n4))&&(BP(n3,n4)<(3/Alpha)))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
     831                 :            : {
     832                 :            : {
     833         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),Qp)
     834         [ #  # ]:          0 : double m00_pow(d00_pow1,(1-((Alpha*BP(n3,n4))/3)),3.0)
     835                 :            : #if defined(_DERIVATE)
     836 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),Qp)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     837 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow1,d00_pow1,(1-((Alpha*BP(n3,n4))/3)),3.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     838                 :            : #endif
     839                 :            : #if defined(_DERIVATE)
     840                 :          0 : Ids1_Vn2_n4=(Beta_T2*(d10_pow0*1.0))*(1-d00_pow1);
     841                 :          0 : Ids1_Vn3_n4=((Beta_T2*d00_pow0)*(-(d10_pow1*(-((Alpha)/3)))));
     842                 :            : #endif
     843                 :          0 : Ids1=((Beta_T2*d00_pow0)*(1-d00_pow1));
     844                 :            : }
     845                 :            : #if defined(_DERIVATE)
     846 [ #  # ][ #  # ]:          0 : Ids_Vn2_n4=((Ids1_Vn2_n4*(1+(Lambda*BP(n3,n4)))*(1+((Delta*BP(n3,n4))*Ids1))-(Ids1*(1+(Lambda*BP(n3,n4))))*((Delta*BP(n3,n4))*Ids1_Vn2_n4))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     847 [ #  # ][ #  # ]:          0 : Ids_Vn3_n4=((((Ids1_Vn3_n4*(1+(Lambda*BP(n3,n4))))+(Ids1*(Lambda)))*(1+((Delta*BP(n3,n4))*Ids1))-(Ids1*(1+(Lambda*BP(n3,n4))))*(((Delta)*Ids1)+((Delta*BP(n3,n4))*Ids1_Vn3_n4)))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     848                 :            : #endif
     849 [ #  # ][ #  # ]:          0 : Ids=((Ids1*(1+(Lambda*BP(n3,n4))))/(1+((Delta*BP(n3,n4))*Ids1)));
                 [ #  # ]
     850                 :            : }
     851         [ #  # ]:          0 : if
     852         [ #  # ]:          0 : (BP(n3,n4)>=(3/Alpha))
     853                 :            : {
     854                 :            : {
     855         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),Qp)
     856                 :            : #if defined(_DERIVATE)
     857 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),Qp)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     858                 :            : #endif
     859                 :            : #if defined(_DERIVATE)
     860                 :          0 : Ids1_Vn2_n4=(Beta_T2*(d10_pow0*1.0));
     861                 :          0 : Ids1_Vn3_n4=0.0;
     862                 :            : #endif
     863                 :          0 : Ids1=(Beta_T2*d00_pow0);
     864                 :            : }
     865                 :            : #if defined(_DERIVATE)
     866 [ #  # ][ #  # ]:          0 : Ids_Vn2_n4=((Ids1_Vn2_n4*(1+(Lambda*BP(n3,n4)))*(1+((Delta*BP(n3,n4))*Ids1))-(Ids1*(1+(Lambda*BP(n3,n4))))*((Delta*BP(n3,n4))*Ids1_Vn2_n4))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     867 [ #  # ][ #  # ]:          0 : Ids_Vn3_n4=((((Ids1_Vn3_n4*(1+(Lambda*BP(n3,n4))))+(Ids1*(Lambda)))*(1+((Delta*BP(n3,n4))*Ids1))-(Ids1*(1+(Lambda*BP(n3,n4))))*(((Delta)*Ids1)+((Delta*BP(n3,n4))*Ids1_Vn3_n4)))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     868                 :            : #endif
     869 [ #  # ][ #  # ]:          0 : Ids=((Ids1*(1+(Lambda*BP(n3,n4))))/(1+((Delta*BP(n3,n4))*Ids1)));
                 [ #  # ]
     870                 :            : }
     871         [ #  # ]:          0 : if
     872         [ #  # ]:          0 : (BP(n3,n4)<0)
     873                 :            : {
     874                 :            : #if defined(_DERIVATE)
     875                 :          0 : Ids_Vn2_n4=0.0;
     876                 :          0 : Ids_Vn3_n4=0.0;
     877                 :            : #endif
     878                 :          0 : Ids=0;
     879                 :            : }
     880                 :            : }
     881                 :            : else
     882                 :            : {
     883                 :            : #if defined(_DERIVATE)
     884                 :          0 : Ids_Vn2_n4=0.0;
     885                 :          0 : Ids_Vn3_n4=0.0;
     886                 :            : #endif
     887                 :          0 : Ids=0;
     888                 :            : }
     889                 :            : }
     890                 :            : else
     891         [ #  # ]:          0 : if
     892                 :            : ((LEVEL)==(5))
     893                 :            : {
     894         [ #  # ]:          0 : if
     895         [ #  # ]:          0 : ((BP(n2,n4)-Vto_T2)>0)
     896                 :            : {
     897                 :            : #if defined(_DERIVATE)
     898                 :          0 : Nst_Vn3_n4=(Nd);
     899                 :            : #endif
     900         [ #  # ]:          0 : Nst=(Ng+(Nd*BP(n3,n4)));
     901         [ #  # ]:          0 : if
     902                 :            : (Nst<1.0)
     903                 :            : {
     904                 :            : #if defined(_DERIVATE)
     905                 :          0 : Nst_Vn3_n4=0.0;
     906                 :            : #endif
     907                 :          0 : Nst=1.0;
     908                 :            : }
     909                 :            : #if defined(_DERIVATE)
     910                 :          0 : Vst_Vn3_n4=Nst_Vn3_n4*Vt_T2;
     911                 :            : #endif
     912                 :          0 : Vst=(Nst*Vt_T2);
     913                 :            : {
     914 [ #  # ][ #  # ]:          0 : double m00_exp(d00_exp0,(((BP(n2,n4)-Vto_T2)+(Gamma_T2*BP(n3,n4)))/(Qp*Vst)))
                 [ #  # ]
     915                 :          0 : double m00_logE(d00_logE1,(d00_exp0+1))
     916                 :            : #if defined(_DERIVATE)
     917                 :            : #define d10_exp0 d00_exp0
     918                 :          0 : double m10_logE(d10_logE1,d00_logE1,(d00_exp0+1))
     919                 :            : #endif
     920                 :            : #if defined(_DERIVATE)
     921 [ #  # ][ #  # ]:          0 : Vg_Vn3_n4=(((Qp*Vst_Vn3_n4)*d00_logE1)+((Qp*Vst)*(((Gamma_T2)*(Qp*Vst)-((BP(n2,n4)-Vto_T2)+(Gamma_T2*BP(n3,n4)))*(Qp*Vst_Vn3_n4))/(Qp*Vst)/(Qp*Vst))*d10_exp0*d10_logE1));
                 [ #  # ]
     922                 :          0 : Vg_Vn2_n4=((Qp*Vst)*(1/(Qp*Vst))*d10_exp0*d10_logE1);
     923                 :            : #endif
     924                 :          0 : Vg=((Qp*Vst)*d00_logE1);
     925                 :            : }
     926                 :            : #if defined(_DERIVATE)
     927                 :          0 : Al_Vn3_n4=(Alpha_T2);
     928                 :            : #endif
     929         [ #  # ]:          0 : Al=(Alpha_T2*BP(n3,n4));
     930                 :            : {
     931                 :          0 : double m00_sqrt(d00_sqrt0,(1.0+(Al*Al)))
     932                 :            : #if defined(_DERIVATE)
     933                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,(1.0+(Al*Al)))
     934                 :            : #endif
     935                 :            : #if defined(_DERIVATE)
     936                 :          0 : Fd_Vn3_n4=((Al_Vn3_n4*d00_sqrt0-Al*((Al_Vn3_n4*Al)+(Al*Al_Vn3_n4))*d10_sqrt0)/d00_sqrt0/d00_sqrt0);
     937                 :            : #endif
     938                 :          0 : Fd=(Al/d00_sqrt0);
     939                 :            : }
     940                 :            : {
     941                 :          0 : double m00_pow(d00_pow0,Vg,Qp)
     942                 :            : #if defined(_DERIVATE)
     943         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Vg,Qp)
     944                 :            : #endif
     945                 :            : #if defined(_DERIVATE)
     946                 :          0 : Ids1_Vn2_n4=(Beta_T2*(d10_pow0*Vg_Vn2_n4))*Fd;
     947                 :          0 : Ids1_Vn3_n4=(((Beta_T2*(d10_pow0*Vg_Vn3_n4))*Fd)+((Beta_T2*d00_pow0)*Fd_Vn3_n4));
     948                 :            : #endif
     949                 :          0 : Ids1=((Beta_T2*d00_pow0)*Fd);
     950                 :            : }
     951                 :            : #if defined(_DERIVATE)
     952 [ #  # ][ #  # ]:          0 : Ids_Vn2_n4=((Ids1_Vn2_n4*(1+(Lambda*BP(n3,n4)))*(1+((Delta*BP(n3,n4))*Ids1))-(Ids1*(1+(Lambda*BP(n3,n4))))*((Delta*BP(n3,n4))*Ids1_Vn2_n4))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     953 [ #  # ][ #  # ]:          0 : Ids_Vn3_n4=((((Ids1_Vn3_n4*(1+(Lambda*BP(n3,n4))))+(Ids1*(Lambda)))*(1+((Delta*BP(n3,n4))*Ids1))-(Ids1*(1+(Lambda*BP(n3,n4))))*(((Delta)*Ids1)+((Delta*BP(n3,n4))*Ids1_Vn3_n4)))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     954                 :            : #endif
     955 [ #  # ][ #  # ]:          0 : Ids=((Ids1*(1+(Lambda*BP(n3,n4))))/(1+((Delta*BP(n3,n4))*Ids1)));
                 [ #  # ]
     956                 :            : }
     957                 :            : else
     958                 :            : {
     959                 :            : #if defined(_DERIVATE)
     960                 :          0 : Ids_Vn2_n4=0.0;
     961                 :          0 : Ids_Vn3_n4=0.0;
     962                 :            : #endif
     963                 :          0 : Ids=0;
     964                 :            : }
     965                 :            : }
     966                 :            : else
     967                 :            : { /* no default */ }
     968         [ #  # ]:          0 : if
     969                 :            : ((ILEVELS)==(0))
     970                 :            : {
     971                 :            : #if defined(_DERIVATE)
     972                 :          0 : Igs_Vn2_n4=0.0;
     973                 :            : #endif
     974                 :          0 : Igs=0;
     975                 :            : }
     976                 :            : else
     977         [ #  # ]:          0 : if
     978                 :            : ((ILEVELS)==(1))
     979                 :            : {
     980         [ #  # ]:          0 : if
     981         [ #  # ]:          0 : (BP(n2,n4)>Vbi)
     982                 :            : {
     983                 :            : #if defined(_DERIVATE)
     984                 :          0 : Igs_Vn2_n4=(1/Rf);
     985                 :            : #endif
     986         [ #  # ]:          0 : Igs=((BP(n2,n4)-Vbi)/Rf);
     987                 :            : }
     988                 :            : else
     989                 :            : {
     990                 :            : #if defined(_DERIVATE)
     991                 :          0 : Igs_Vn2_n4=(1e-12);
     992                 :            : #endif
     993         [ #  # ]:          0 : Igs=(((-Area)*Is)+(BP(n2,n4)*1e-12));
     994                 :            : }
     995                 :            : }
     996                 :            : else
     997         [ #  # ]:          0 : if
     998                 :            : ((ILEVELS)==(2))
     999                 :            : {
    1000         [ #  # ]:          0 : if
    1001         [ #  # ]:          0 : (BP(n2,n4)>Vbi)
    1002                 :            : {
    1003                 :            : #if defined(_DERIVATE)
    1004                 :          0 : Igs1_Vn2_n4=(1/Rf);
    1005                 :            : #endif
    1006         [ #  # ]:          0 : Igs1=((BP(n2,n4)-Vbi)/Rf);
    1007                 :            : }
    1008                 :            : else
    1009                 :            : {
    1010                 :            : #if defined(_DERIVATE)
    1011                 :          0 : Igs1_Vn2_n4=(1e-12);
    1012                 :            : #endif
    1013         [ #  # ]:          0 : Igs1=(((-Area)*Is)+(BP(n2,n4)*1e-12));
    1014                 :            : }
    1015         [ #  # ]:          0 : if
    1016         [ #  # ]:          0 : (BP(n2,n4)<(-Bv))
    1017                 :            : {
    1018                 :            : #if defined(_DERIVATE)
    1019                 :          0 : Igs2_Vn2_n4=(1/R1);
    1020                 :            : #endif
    1021         [ #  # ]:          0 : Igs2=((BP(n2,n4)+Bv)/R1);
    1022                 :            : }
    1023                 :            : #if defined(_DERIVATE)
    1024                 :          0 : Igs_Vn2_n4=(Igs1_Vn2_n4+Igs2_Vn2_n4);
    1025                 :            : #endif
    1026                 :          0 : Igs=(Igs1+Igs2);
    1027                 :            : }
    1028                 :            : else
    1029         [ #  # ]:          0 : if
    1030                 :            : ((ILEVELS)==(3))
    1031                 :            : {
    1032         [ #  # ]:          0 : if
    1033         [ #  # ]:          0 : (BP(n2,n4)>(((-5.0)*N)*Vt_T2))
    1034                 :            : {
    1035                 :            : {
    1036 [ #  # ][ #  # ]:          0 : double m00_limexp(d00_limexp0,(BP(n2,n4)/(N*Vt_T2)))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1037                 :            : #if defined(_DERIVATE)
    1038 [ #  # ][ #  # ]:          0 : double m10_limexp(d10_limexp0,d00_limexp0,(BP(n2,n4)/(N*Vt_T2)))
    1039                 :            : #endif
    1040                 :            : #if defined(_DERIVATE)
    1041                 :          0 : Igs_Vn2_n4=((Is_T2*(1/(N*Vt_T2))*d10_limexp0)+(1e-12));
    1042                 :            : #endif
    1043         [ #  # ]:          0 : Igs=((Is_T2*(d00_limexp0-1.0))+(BP(n2,n4)*1e-12));
    1044                 :            : }
    1045                 :            : }
    1046                 :            : else
    1047                 :            : {
    1048                 :            : #if defined(_DERIVATE)
    1049                 :          0 : Igs_Vn2_n4=(1e-12);
    1050                 :            : #endif
    1051         [ #  # ]:          0 : Igs=((-Is_T2)+(BP(n2,n4)*1e-12));
    1052                 :            : }
    1053                 :            : }
    1054                 :            : else
    1055         [ #  # ]:          0 : if
    1056                 :            : ((ILEVELS)==(4))
    1057                 :            : {
    1058         [ #  # ]:          0 : if
    1059         [ #  # ]:          0 : (BP(n2,n4)>(((-5.0)*N)*Vt_T2))
    1060                 :            : {
    1061                 :            : {
    1062 [ #  # ][ #  # ]:          0 : double m00_limexp(d00_limexp0,(BP(n2,n4)/(N*Vt_T2)))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1063                 :            : #if defined(_DERIVATE)
    1064 [ #  # ][ #  # ]:          0 : double m10_limexp(d10_limexp0,d00_limexp0,(BP(n2,n4)/(N*Vt_T2)))
    1065                 :            : #endif
    1066                 :            : #if defined(_DERIVATE)
    1067                 :          0 : Igs1_Vn2_n4=(((Area*Is_T2)*(1/(N*Vt_T2))*d10_limexp0)+(1e-12));
    1068                 :            : #endif
    1069         [ #  # ]:          0 : Igs1=(((Area*Is_T2)*(d00_limexp0-1.0))+(BP(n2,n4)*1e-12));
    1070                 :            : }
    1071                 :            : }
    1072                 :            : else
    1073                 :            : {
    1074                 :            : #if defined(_DERIVATE)
    1075                 :          0 : Igs1_Vn2_n4=0.0;
    1076                 :            : #endif
    1077                 :          0 : Igs1=0;
    1078                 :            : }
    1079   [ #  #  #  # ]:          0 : if
                 [ #  # ]
    1080 [ #  # ][ #  # ]:          0 : (((-Bv)<BP(n2,n4))&&(BP(n2,n4)<(((-5.0)*N)*Vt_T2)))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1081                 :            : {
    1082                 :            : #if defined(_DERIVATE)
    1083                 :          0 : Igs2_Vn2_n4=(1e-12);
    1084                 :            : #endif
    1085         [ #  # ]:          0 : Igs2=(((-Area)*Is_T2)+(BP(n2,n4)*1e-12));
    1086                 :            : }
    1087                 :            : else
    1088                 :            : {
    1089                 :            : #if defined(_DERIVATE)
    1090                 :          0 : Igs2_Vn2_n4=0.0;
    1091                 :            : #endif
    1092                 :          0 : Igs2=0;
    1093                 :            : }
    1094         [ #  # ]:          0 : if
    1095         [ #  # ]:          0 : (BP(n2,n4)==(-Bv))
    1096                 :            : {
    1097                 :          0 : Igs3=(-Ibv);
    1098                 :            : }
    1099                 :            : else
    1100                 :            : {
    1101                 :          0 : Igs3=0;
    1102                 :            : }
    1103         [ #  # ]:          0 : if
    1104         [ #  # ]:          0 : (BP(n2,n4)<(-Bv))
    1105                 :            : {
    1106                 :            : {
    1107 [ #  # ][ #  # ]:          0 : double m00_limexp(d00_limexp0,((-(Bv+BP(n2,n4)))/Vt_T2))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1108                 :            : #if defined(_DERIVATE)
    1109 [ #  # ][ #  # ]:          0 : double m10_limexp(d10_limexp0,d00_limexp0,((-(Bv+BP(n2,n4)))/Vt_T2))
    1110                 :            : #endif
    1111                 :            : #if defined(_DERIVATE)
    1112                 :          0 : Igs4_Vn2_n4=(((-Area)*Is_T2)*((-1.0)/Vt_T2)*d10_limexp0);
    1113                 :            : #endif
    1114                 :          0 : Igs4=(((-Area)*Is_T2)*((d00_limexp0-1.0)+(Bv/Vt_T2)));
    1115                 :            : }
    1116                 :            : }
    1117                 :            : else
    1118                 :            : {
    1119                 :            : #if defined(_DERIVATE)
    1120                 :          0 : Igs4_Vn2_n4=0.0;
    1121                 :            : #endif
    1122                 :          0 : Igs4=0;
    1123                 :            : }
    1124                 :            : #if defined(_DERIVATE)
    1125                 :          0 : Igs_Vn2_n4=((Igs1_Vn2_n4+Igs2_Vn2_n4)+Igs4_Vn2_n4);
    1126                 :            : #endif
    1127                 :          0 : Igs=(((Igs1+Igs2)+Igs3)+Igs4);
    1128                 :            : }
    1129                 :            : else
    1130                 :            : { /* no default */ }
    1131         [ #  # ]:          0 : if
    1132                 :            : ((ILEVELD)==(0))
    1133                 :            : {
    1134                 :            : #if defined(_DERIVATE)
    1135                 :          0 : Igd_Vn2_n3=0.0;
    1136                 :            : #endif
    1137                 :          0 : Igd=0;
    1138                 :            : }
    1139                 :            : else
    1140         [ #  # ]:          0 : if
    1141                 :            : ((ILEVELD)==(1))
    1142                 :            : {
    1143         [ #  # ]:          0 : if
    1144         [ #  # ]:          0 : (BP(n2,n3)>Vbi)
    1145                 :            : {
    1146                 :            : #if defined(_DERIVATE)
    1147                 :          0 : Igd_Vn2_n3=(1/Rf);
    1148                 :            : #endif
    1149         [ #  # ]:          0 : Igd=((BP(n2,n3)-Vbi)/Rf);
    1150                 :            : }
    1151                 :            : else
    1152                 :            : {
    1153                 :            : #if defined(_DERIVATE)
    1154                 :          0 : Igd_Vn2_n3=(1e-12);
    1155                 :            : #endif
    1156         [ #  # ]:          0 : Igd=(((-Area)*Is)+(BP(n2,n3)*1e-12));
    1157                 :            : }
    1158                 :            : }
    1159                 :            : else
    1160         [ #  # ]:          0 : if
    1161                 :            : ((ILEVELD)==(2))
    1162                 :            : {
    1163         [ #  # ]:          0 : if
    1164         [ #  # ]:          0 : (BP(n2,n3)>Vbi)
    1165                 :            : {
    1166                 :            : #if defined(_DERIVATE)
    1167                 :          0 : Igd1_Vn2_n3=(1/Rf);
    1168                 :            : #endif
    1169         [ #  # ]:          0 : Igd1=((BP(n2,n3)-Vbi)/Rf);
    1170                 :            : }
    1171                 :            : else
    1172                 :            : {
    1173                 :            : #if defined(_DERIVATE)
    1174                 :          0 : Igd1_Vn2_n3=(1e-12);
    1175                 :            : #endif
    1176         [ #  # ]:          0 : Igd1=(((-Area)*Is)+(BP(n2,n3)*1e-12));
    1177                 :            : }
    1178         [ #  # ]:          0 : if
    1179         [ #  # ]:          0 : (BP(n2,n3)<(-Bv))
    1180                 :            : {
    1181                 :            : #if defined(_DERIVATE)
    1182                 :          0 : Igd2_Vn2_n3=(1/R1);
    1183                 :            : #endif
    1184         [ #  # ]:          0 : Igd2=((BP(n2,n3)+Bv)/R1);
    1185                 :            : }
    1186                 :            : #if defined(_DERIVATE)
    1187                 :          0 : Igd_Vn2_n3=(Igd1_Vn2_n3+Igd2_Vn2_n3);
    1188                 :            : #endif
    1189                 :          0 : Igd=(Igd1+Igd2);
    1190                 :            : }
    1191                 :            : else
    1192         [ #  # ]:          0 : if
    1193                 :            : ((ILEVELD)==(3))
    1194                 :            : {
    1195         [ #  # ]:          0 : if
    1196         [ #  # ]:          0 : (BP(n2,n3)>(((-5.0)*N)*Vt_T2))
    1197                 :            : {
    1198                 :            : {
    1199 [ #  # ][ #  # ]:          0 : double m00_limexp(d00_limexp0,(BP(n2,n3)/(N*Vt_T2)))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1200                 :            : #if defined(_DERIVATE)
    1201 [ #  # ][ #  # ]:          0 : double m10_limexp(d10_limexp0,d00_limexp0,(BP(n2,n3)/(N*Vt_T2)))
    1202                 :            : #endif
    1203                 :            : #if defined(_DERIVATE)
    1204                 :          0 : Igd_Vn2_n3=(((Area*Is_T2)*(1/(N*Vt_T2))*d10_limexp0)+(1e-12));
    1205                 :            : #endif
    1206         [ #  # ]:          0 : Igd=(((Area*Is_T2)*(d00_limexp0-1.0))+(BP(n2,n3)*1e-12));
    1207                 :            : }
    1208                 :            : }
    1209                 :            : else
    1210                 :            : {
    1211                 :            : #if defined(_DERIVATE)
    1212                 :          0 : Igd_Vn2_n3=(1e-12);
    1213                 :            : #endif
    1214         [ #  # ]:          0 : Igd=((-Is_T2)+(BP(n2,n3)*1e-12));
    1215                 :            : }
    1216                 :            : }
    1217                 :            : else
    1218         [ #  # ]:          0 : if
    1219                 :            : ((ILEVELD)==(4))
    1220                 :            : {
    1221         [ #  # ]:          0 : if
    1222         [ #  # ]:          0 : (BP(n2,n3)>(((-5.0)*N)*Vt_T2))
    1223                 :            : {
    1224                 :            : {
    1225 [ #  # ][ #  # ]:          0 : double m00_limexp(d00_limexp0,(BP(n2,n3)/(N*Vt_T2)))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1226                 :            : #if defined(_DERIVATE)
    1227 [ #  # ][ #  # ]:          0 : double m10_limexp(d10_limexp0,d00_limexp0,(BP(n2,n3)/(N*Vt_T2)))
    1228                 :            : #endif
    1229                 :            : #if defined(_DERIVATE)
    1230                 :          0 : Igd1_Vn2_n3=(((Area*Is_T2)*(1/(N*Vt_T2))*d10_limexp0)+(1e-12));
    1231                 :            : #endif
    1232         [ #  # ]:          0 : Igd1=(((Area*Is_T2)*(d00_limexp0-1.0))+(BP(n2,n3)*1e-12));
    1233                 :            : }
    1234                 :            : }
    1235                 :            : else
    1236                 :            : {
    1237                 :            : #if defined(_DERIVATE)
    1238                 :          0 : Igd1_Vn2_n3=0.0;
    1239                 :            : #endif
    1240                 :          0 : Igd1=0;
    1241                 :            : }
    1242   [ #  #  #  # ]:          0 : if
                 [ #  # ]
    1243 [ #  # ][ #  # ]:          0 : (((-Bv)<BP(n2,n3))&&(BP(n2,n3)<(((-5.0)*N)*Vt_T2)))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1244                 :            : {
    1245                 :            : #if defined(_DERIVATE)
    1246                 :          0 : Igd2_Vn2_n3=(1e-12);
    1247                 :            : #endif
    1248         [ #  # ]:          0 : Igd2=(((-Area)*Is_T2)+(BP(n2,n3)*1e-12));
    1249                 :            : }
    1250                 :            : else
    1251                 :            : {
    1252                 :            : #if defined(_DERIVATE)
    1253                 :          0 : Igd2_Vn2_n3=0.0;
    1254                 :            : #endif
    1255                 :          0 : Igd2=0;
    1256                 :            : }
    1257         [ #  # ]:          0 : if
    1258         [ #  # ]:          0 : (BP(n2,n3)==(-Bv))
    1259                 :            : {
    1260                 :          0 : Igd3=(-Ibv);
    1261                 :            : }
    1262                 :            : else
    1263                 :            : {
    1264                 :          0 : Igd3=0;
    1265                 :            : }
    1266         [ #  # ]:          0 : if
    1267         [ #  # ]:          0 : (BP(n2,n3)<(-Bv))
    1268                 :            : {
    1269                 :            : {
    1270 [ #  # ][ #  # ]:          0 : double m00_limexp(d00_limexp0,((-(Bv+BP(n2,n3)))/Vt_T2))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1271                 :            : #if defined(_DERIVATE)
    1272 [ #  # ][ #  # ]:          0 : double m10_limexp(d10_limexp0,d00_limexp0,((-(Bv+BP(n2,n3)))/Vt_T2))
    1273                 :            : #endif
    1274                 :            : #if defined(_DERIVATE)
    1275                 :          0 : Igd4_Vn2_n3=(((-Area)*Is_T2)*((-1.0)/Vt_T2)*d10_limexp0);
    1276                 :            : #endif
    1277                 :          0 : Igd4=(((-Area)*Is_T2)*((d00_limexp0-1.0)+(Bv/Vt_T2)));
    1278                 :            : }
    1279                 :            : }
    1280                 :            : else
    1281                 :            : {
    1282                 :            : #if defined(_DERIVATE)
    1283                 :          0 : Igd4_Vn2_n3=0.0;
    1284                 :            : #endif
    1285                 :          0 : Igd4=0;
    1286                 :            : }
    1287                 :            : #if defined(_DERIVATE)
    1288                 :          0 : Igd_Vn2_n3=((Igd1_Vn2_n3+Igd2_Vn2_n3)+Igd4_Vn2_n3);
    1289                 :            : #endif
    1290                 :          0 : Igd=(((Igd1+Igd2)+Igd3)+Igd4);
    1291                 :            : }
    1292                 :            : else
    1293                 :            : { /* no default */ }
    1294                 :            : #ifdef _DYNAMIC
    1295         [ #  # ]:          0 : if
    1296                 :            : (QLEVELS==0)
    1297                 :            : {
    1298                 :            : #if defined(_DYNAMIC)
    1299                 :            : #if defined(_DERIVATE)
    1300                 :          0 : Qgs_Vn2_n3=0.0;
    1301                 :          0 : Qgs_Vn2_n1=0.0;
    1302                 :            : #endif
    1303                 :          0 : Qgs=0;
    1304                 :            : #endif
    1305                 :            : }
    1306                 :            : #endif /* if (...) */
    1307                 :            : #ifdef _DYNAMIC
    1308         [ #  # ]:          0 : if
    1309                 :            : (QLEVELS==1)
    1310                 :            : {
    1311                 :            : #if defined(_DYNAMIC)
    1312                 :            : #if defined(_DERIVATE)
    1313                 :          0 : Qgs_Vn2_n3=0.0;
    1314                 :          0 : Qgs_Vn2_n1=((Area*Cgs));
    1315                 :            : #endif
    1316         [ #  # ]:          0 : Qgs=((Area*Cgs)*BP(n2,n1));
    1317                 :            : #endif
    1318                 :            : }
    1319                 :            : #endif /* if (...) */
    1320                 :            : #ifdef _DYNAMIC
    1321         [ #  # ]:          0 : if
    1322                 :            : (QLEVELS==2)
    1323                 :            : {
    1324                 :            : #ifdef _DYNAMIC
    1325         [ #  # ]:          0 : if
    1326         [ #  # ]:          0 : (BP(n2,n1)<(Fc*Vbi))
    1327                 :            : {
    1328                 :            : #if defined(_DYNAMIC)
    1329                 :            : {
    1330         [ #  # ]:          0 : double m00_pow(d00_pow0,(1-(BP(n2,n1)/Vbi_T2)),(1-M))
    1331                 :            : #if defined(_DERIVATE)
    1332 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(1-(BP(n2,n1)/Vbi_T2)),(1-M))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1333                 :            : #endif
    1334                 :            : #if defined(_DERIVATE)
    1335                 :          0 : Qgs1_Vn2_n1=(((Cgs_T2*Vbi_T2)/(1-M))*(-(d10_pow0*(-(1/Vbi_T2)))));
    1336                 :            : #endif
    1337                 :          0 : Qgs1=(((Cgs_T2*Vbi_T2)/(1-M))*(1-d00_pow0));
    1338                 :            : }
    1339                 :            : #endif
    1340                 :            : }
    1341                 :            : else
    1342                 :            : {
    1343                 :            : #if defined(_DYNAMIC)
    1344                 :            : #if defined(_DERIVATE)
    1345                 :          0 : Qgs1_Vn2_n1=0.0;
    1346                 :            : #endif
    1347                 :          0 : Qgs1=0;
    1348                 :            : #endif
    1349                 :            : }
    1350                 :            : #endif /* if (...) */
    1351                 :            : #ifdef _DYNAMIC
    1352         [ #  # ]:          0 : if
    1353         [ #  # ]:          0 : (BP(n2,n1)>=(Fc*Vbi))
    1354                 :            : {
    1355                 :            : #if defined(_DYNAMIC)
    1356                 :            : #if defined(_DERIVATE)
    1357 [ #  # ][ #  # ]:          0 : Qgs2_Vn2_n1=(Cgs_T2*((1/F2)*((F3)+((M/(2*Vbi_T2))*(BP(n2,n1)+BP(n2,n1))))));
                 [ #  # ]
    1358                 :            : #endif
    1359 [ #  # ][ #  # ]:          0 : Qgs2=(Cgs_T2*(F1+((1/F2)*((F3*(BP(n2,n1)-(Fc*Vbi_T2)))+((M/(2*Vbi_T2))*((BP(n2,n1)*BP(n2,n1))-(((Fc*Vbi_T2)*Fc)*Vbi_T2)))))));
         [ #  # ][ #  # ]
                 [ #  # ]
    1360                 :            : #endif
    1361                 :            : }
    1362                 :            : else
    1363                 :            : {
    1364                 :            : #if defined(_DYNAMIC)
    1365                 :            : #if defined(_DERIVATE)
    1366                 :          0 : Qgs2_Vn2_n1=0.0;
    1367                 :            : #endif
    1368                 :          0 : Qgs2=0;
    1369                 :            : #endif
    1370                 :            : }
    1371                 :            : #endif /* if (...) */
    1372                 :            : #if defined(_DYNAMIC)
    1373                 :            : #if defined(_DERIVATE)
    1374                 :          0 : Qgs_Vn2_n3=0.0;
    1375                 :          0 : Qgs_Vn2_n1=(Qgs1_Vn2_n1+Qgs2_Vn2_n1);
    1376                 :            : #endif
    1377                 :          0 : Qgs=(Qgs1+Qgs2);
    1378                 :            : #endif
    1379                 :            : }
    1380                 :            : #endif /* if (...) */
    1381                 :            : #ifdef _DYNAMIC
    1382         [ #  # ]:          0 : if
    1383                 :            : (QLEVELS==3)
    1384                 :            : {
    1385                 :            : #if defined(_DYNAMIC)
    1386                 :            : {
    1387 [ #  # ][ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n1)-BP(n2,n3)),2.0)
                 [ #  # ]
    1388                 :          0 : double m00_sqrt(d00_sqrt1,(d00_pow0+(Vdelta1*Vdelta1)))
    1389                 :            : #if defined(_DERIVATE)
    1390 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n1)-BP(n2,n3)),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1391                 :          0 : double m10_sqrt(d10_sqrt1,d00_sqrt1,(d00_pow0+(Vdelta1*Vdelta1)))
    1392                 :            : #endif
    1393                 :            : #if defined(_DERIVATE)
    1394                 :          0 : Veff1_Vn2_n1=(0.5*(1.0+(d10_pow0*1.0)*d10_sqrt1));
    1395                 :          0 : Veff1_Vn2_n3=(0.5*(1.0+(d10_pow0*(-1.0))*d10_sqrt1));
    1396                 :            : #endif
    1397 [ #  # ][ #  # ]:          0 : Veff1=(0.5*((BP(n2,n1)+BP(n2,n3))+d00_sqrt1));
                 [ #  # ]
    1398                 :            : }
    1399                 :            : #endif
    1400                 :            : #if defined(_DYNAMIC)
    1401                 :            : {
    1402                 :          0 : double m00_pow(d00_pow0,(Veff1-Vto),2.0)
    1403                 :          0 : double m00_sqrt(d00_sqrt1,(d00_pow0+(Vdelta2*Vdelta2)))
    1404                 :            : #if defined(_DERIVATE)
    1405         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(Veff1-Vto),2.0)
    1406                 :          0 : double m10_sqrt(d10_sqrt1,d00_sqrt1,(d00_pow0+(Vdelta2*Vdelta2)))
    1407                 :            : #endif
    1408                 :            : #if defined(_DERIVATE)
    1409                 :          0 : Vnew_Vn2_n1=(0.5*(Veff1_Vn2_n1+(d10_pow0*Veff1_Vn2_n1)*d10_sqrt1));
    1410                 :          0 : Vnew_Vn2_n3=(0.5*(Veff1_Vn2_n3+(d10_pow0*Veff1_Vn2_n3)*d10_sqrt1));
    1411                 :            : #endif
    1412                 :          0 : Vnew=(0.5*((Veff1+Vto_T2)+d00_sqrt1));
    1413                 :            : }
    1414                 :            : #endif
    1415                 :            : #ifdef _DYNAMIC
    1416         [ #  # ]:          0 : if
    1417                 :            : (Vnew>Vmax)
    1418                 :            : {
    1419                 :            : #if defined(_DYNAMIC)
    1420                 :            : {
    1421                 :          0 : double m00_sqrt(d00_sqrt0,(1-(Vmax/Vbi_T2)))
    1422                 :          0 : double m00_sqrt(d00_sqrt1,(1-(Vmax/Vbi)))
    1423                 :            : #if defined(_DERIVATE)
    1424                 :          0 : Qgs_Vn2_n3=(Cgs_T2*(Vnew_Vn2_n3/d00_sqrt1));
    1425                 :          0 : Qgs_Vn2_n1=(Cgs_T2*(Vnew_Vn2_n1/d00_sqrt1));
    1426                 :            : #endif
    1427                 :          0 : Qgs=(Cgs_T2*(((2*Vbi_T2)*(1-d00_sqrt0))+((Vnew-Vmax)/d00_sqrt1)));
    1428                 :            : }
    1429                 :            : #endif
    1430                 :            : }
    1431                 :            : else
    1432                 :            : {
    1433                 :            : #if defined(_DYNAMIC)
    1434                 :            : {
    1435                 :          0 : double m00_sqrt(d00_sqrt0,(1-(Vnew/Vbi)))
    1436                 :            : #if defined(_DERIVATE)
    1437                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,(1-(Vnew/Vbi)))
    1438                 :            : #endif
    1439                 :            : #if defined(_DERIVATE)
    1440                 :          0 : Qgs_Vn2_n3=(((Cgs_T2*2)*Vbi)*(-(-(Vnew_Vn2_n3/Vbi))*d10_sqrt0));
    1441                 :          0 : Qgs_Vn2_n1=(((Cgs_T2*2)*Vbi)*(-(-(Vnew_Vn2_n1/Vbi))*d10_sqrt0));
    1442                 :            : #endif
    1443                 :          0 : Qgs=(((Cgs_T2*2)*Vbi)*(1-d00_sqrt0));
    1444                 :            : }
    1445                 :            : #endif
    1446                 :            : }
    1447                 :            : #endif /* if (...) */
    1448                 :            : }
    1449                 :            : #endif /* if (...) */
    1450                 :            : #ifdef _DYNAMIC
    1451         [ #  # ]:          0 : if
    1452                 :            : (QLEVELD==0)
    1453                 :            : {
    1454                 :            : #if defined(_DYNAMIC)
    1455                 :            : #if defined(_DERIVATE)
    1456                 :          0 : Qgd_Vn2_n1=0.0;
    1457                 :          0 : Qgd_Vn2_n3=0.0;
    1458                 :            : #endif
    1459                 :          0 : Qgd=0;
    1460                 :            : #endif
    1461                 :            : }
    1462                 :            : #endif /* if (...) */
    1463                 :            : #ifdef _DYNAMIC
    1464         [ #  # ]:          0 : if
    1465                 :            : (QLEVELD==1)
    1466                 :            : {
    1467                 :            : #if defined(_DYNAMIC)
    1468                 :            : #if defined(_DERIVATE)
    1469                 :          0 : Qgd_Vn2_n1=0.0;
    1470                 :          0 : Qgd_Vn2_n3=((Area*Cgd));
    1471                 :            : #endif
    1472         [ #  # ]:          0 : Qgd=((Area*Cgd)*BP(n2,n3));
    1473                 :            : #endif
    1474                 :            : }
    1475                 :            : #endif /* if (...) */
    1476                 :            : #ifdef _DYNAMIC
    1477         [ #  # ]:          0 : if
    1478                 :            : (QLEVELD==2)
    1479                 :            : {
    1480                 :            : #ifdef _DYNAMIC
    1481         [ #  # ]:          0 : if
    1482         [ #  # ]:          0 : (BP(n2,n3)<(Fc*Vbi))
    1483                 :            : {
    1484                 :            : #if defined(_DYNAMIC)
    1485                 :            : {
    1486         [ #  # ]:          0 : double m00_pow(d00_pow0,(1-(BP(n2,n3)/Vbi_T2)),(1-M))
    1487                 :            : #if defined(_DERIVATE)
    1488 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(1-(BP(n2,n3)/Vbi_T2)),(1-M))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1489                 :            : #endif
    1490                 :            : #if defined(_DERIVATE)
    1491                 :          0 : Qgd1_Vn2_n3=(((Cgd_T2*Vbi_T2)/(1-M))*(-(d10_pow0*(-(1/Vbi_T2)))));
    1492                 :            : #endif
    1493                 :          0 : Qgd1=(((Cgd_T2*Vbi_T2)/(1-M))*(1-d00_pow0));
    1494                 :            : }
    1495                 :            : #endif
    1496                 :            : }
    1497                 :            : else
    1498                 :            : {
    1499                 :            : #if defined(_DYNAMIC)
    1500                 :            : #if defined(_DERIVATE)
    1501                 :          0 : Qgd1_Vn2_n3=0.0;
    1502                 :            : #endif
    1503                 :          0 : Qgd1=0;
    1504                 :            : #endif
    1505                 :            : }
    1506                 :            : #endif /* if (...) */
    1507                 :            : #ifdef _DYNAMIC
    1508         [ #  # ]:          0 : if
    1509         [ #  # ]:          0 : (BP(n2,n3)>=(Fc*Vbi))
    1510                 :            : {
    1511                 :            : #if defined(_DYNAMIC)
    1512                 :            : #if defined(_DERIVATE)
    1513 [ #  # ][ #  # ]:          0 : Qgd2_Vn2_n3=(Cgd_T2*((1/F2)*((F3)+((M/(2*Vbi_T2))*(BP(n2,n3)+BP(n2,n3))))));
                 [ #  # ]
    1514                 :            : #endif
    1515 [ #  # ][ #  # ]:          0 : Qgd2=(Cgd_T2*(F1+((1/F2)*((F3*(BP(n2,n3)-(Fc*Vbi_T2)))+((M/(2*Vbi_T2))*((BP(n2,n3)*BP(n2,n3))-(((Fc*Vbi_T2)*Fc)*Vbi_T2)))))));
         [ #  # ][ #  # ]
                 [ #  # ]
    1516                 :            : #endif
    1517                 :            : }
    1518                 :            : else
    1519                 :            : {
    1520                 :            : #if defined(_DYNAMIC)
    1521                 :            : #if defined(_DERIVATE)
    1522                 :          0 : Qgd2_Vn2_n3=0.0;
    1523                 :            : #endif
    1524                 :          0 : Qgd2=0;
    1525                 :            : #endif
    1526                 :            : }
    1527                 :            : #endif /* if (...) */
    1528                 :            : #if defined(_DYNAMIC)
    1529                 :            : #if defined(_DERIVATE)
    1530                 :          0 : Qgd_Vn2_n1=0.0;
    1531                 :          0 : Qgd_Vn2_n3=(Qgd1_Vn2_n3+Qgd2_Vn2_n3);
    1532                 :            : #endif
    1533                 :          0 : Qgd=(Qgd1+Qgd2);
    1534                 :            : #endif
    1535                 :            : }
    1536                 :            : #endif /* if (...) */
    1537                 :            : #ifdef _DYNAMIC
    1538         [ #  # ]:          0 : if
    1539                 :            : (QLEVELD==3)
    1540                 :            : {
    1541                 :            : #if defined(_DYNAMIC)
    1542                 :            : {
    1543 [ #  # ][ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n1)-BP(n2,n3)),2.0)
                 [ #  # ]
    1544                 :          0 : double m00_sqrt(d00_sqrt1,(d00_pow0+(Vdelta1*Vdelta1)))
    1545                 :            : #if defined(_DERIVATE)
    1546 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n1)-BP(n2,n3)),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
             #  #  #  # ]
    1547                 :          0 : double m10_sqrt(d10_sqrt1,d00_sqrt1,(d00_pow0+(Vdelta1*Vdelta1)))
    1548                 :            : #endif
    1549                 :            : #if defined(_DERIVATE)
    1550                 :          0 : Veff2_Vn2_n1=(0.5*(1.0-(d10_pow0*1.0)*d10_sqrt1));
    1551                 :          0 : Veff2_Vn2_n3=(0.5*(1.0-(d10_pow0*(-1.0))*d10_sqrt1));
    1552                 :            : #endif
    1553 [ #  # ][ #  # ]:          0 : Veff2=(0.5*((BP(n2,n1)+BP(n2,n3))-d00_sqrt1));
                 [ #  # ]
    1554                 :            : }
    1555                 :            : #endif
    1556                 :            : #if defined(_DYNAMIC)
    1557                 :            : #if defined(_DERIVATE)
    1558                 :          0 : Qgd_Vn2_n1=(Cgd_T2*Veff2_Vn2_n1);
    1559                 :          0 : Qgd_Vn2_n3=(Cgd_T2*Veff2_Vn2_n3);
    1560                 :            : #endif
    1561                 :          0 : Qgd=(Cgd_T2*Veff2);
    1562                 :            : #endif
    1563                 :            : }
    1564                 :            : #endif /* if (...) */
    1565         [ #  # ]:          0 : if
    1566                 :            : ((QLEVELDS)==(0))
    1567                 :            : {
    1568                 :            : #if defined(_DYNAMIC)
    1569                 :            : #if defined(_DERIVATE)
    1570                 :          0 : Qds_Vn2_n4=0.0;
    1571                 :          0 : Qds_Vn3_n4=0.0;
    1572                 :            : #endif
    1573                 :          0 : Qds=0;
    1574                 :            : #endif
    1575                 :            : }
    1576                 :            : else
    1577         [ #  # ]:          0 : if
    1578                 :            : ((QLEVELDS)==(1))
    1579                 :            : {
    1580                 :            : #if defined(_DYNAMIC)
    1581                 :            : #if defined(_DERIVATE)
    1582                 :          0 : Qds_Vn2_n4=0.0;
    1583                 :          0 : Qds_Vn3_n4=((Area*Cds));
    1584                 :            : #endif
    1585         [ #  # ]:          0 : Qds=((Area*Cds)*BP(n3,n4));
    1586                 :            : #endif
    1587                 :            : }
    1588                 :            : else
    1589         [ #  # ]:          0 : if
    1590                 :            : ((QLEVELDS)==(2))
    1591                 :            : {
    1592                 :            : #if defined(_DYNAMIC)
    1593                 :            : #if defined(_DERIVATE)
    1594                 :          0 : Qds_Vn2_n4=(Tau*Ids_Vn2_n4);
    1595                 :          0 : Qds_Vn3_n4=(((Area*Cds))+(Tau*Ids_Vn3_n4));
    1596                 :            : #endif
    1597         [ #  # ]:          0 : Qds=(((Area*Cds)*BP(n3,n4))+(Tau*Ids));
    1598                 :            : #endif
    1599                 :            : }
    1600                 :            : else
    1601                 :            : { /* no default */ }
    1602                 :          0 : _load_static_residual2(n2,n4,Igs);
    1603                 :            : #if defined(_DERIVATE)
    1604 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(n2,n4,n2,n4,Igs_Vn2_n4);
         [ #  # ][ #  # ]
                 [ #  # ]
    1605                 :            : #endif
    1606                 :          0 : _load_static_residual2(n2,n3,Igd);
    1607                 :            : #if defined(_DERIVATE)
    1608 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(n2,n3,n2,n3,Igd_Vn2_n3);
         [ #  # ][ #  # ]
                 [ #  # ]
    1609                 :            : #endif
    1610                 :          0 : _load_static_residual2(n3,n4,Ids);
    1611                 :            : #if defined(_DERIVATE)
    1612 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(n3,n4,n3,n4,Ids_Vn3_n4);
         [ #  # ][ #  # ]
                 [ #  # ]
    1613 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(n3,n4,n2,n4,Ids_Vn2_n4);
         [ #  # ][ #  # ]
                 [ #  # ]
    1614                 :            : #endif
    1615                 :            : #if defined(_DYNAMIC)
    1616 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(n3,n4,_DDT(Qds));
    1617                 :            : #if defined(_DERIVATE)
    1618 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(n3,n4,n3,n4,Qds_Vn3_n4);
         [ #  # ][ #  # ]
                 [ #  # ]
    1619 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(n3,n4,n2,n4,Qds_Vn2_n4);
         [ #  # ][ #  # ]
                 [ #  # ]
    1620                 :            : #endif
    1621                 :            : #endif
    1622                 :            : #if defined(_DYNAMIC)
    1623 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(n2,n1,_DDT(Qgs));
    1624                 :            : #if defined(_DERIVATE)
    1625 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(n2,n1,n2,n1,Qgs_Vn2_n1);
         [ #  # ][ #  # ]
                 [ #  # ]
    1626 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(n2,n1,n2,n3,Qgs_Vn2_n3);
         [ #  # ][ #  # ]
                 [ #  # ]
    1627                 :            : #endif
    1628                 :            : #endif
    1629 [ #  # ][ #  # ]:          0 : _load_static_residual2(n1,n4,((Area*BP(n1,n4))/Rin));
    1630                 :            : #if defined(_DERIVATE)
    1631 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(n1,n4,n1,n4,((Area)/Rin));
         [ #  # ][ #  # ]
                 [ #  # ]
    1632                 :            : #endif
    1633                 :            : #if defined(_DYNAMIC)
    1634 [ #  # ][ #  # ]:          0 : _load_dynamic_residual2(n2,n3,_DDT(Qgd));
    1635                 :            : #if defined(_DERIVATE)
    1636 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(n2,n3,n2,n3,Qgd_Vn2_n3);
         [ #  # ][ #  # ]
                 [ #  # ]
    1637 [ #  # ][ #  # ]:          0 : _load_dynamic_jacobian4(n2,n3,n2,n1,Qgd_Vn2_n1);
         [ #  # ][ #  # ]
                 [ #  # ]
    1638                 :            : #endif
    1639                 :            : #endif
    1640 [ #  # ][ #  # ]:          0 : _load_static_residual2(Gate,n2,(BP(Gate,n2)/Rg_T2));
    1641                 :            : #if defined(_DERIVATE)
    1642 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(Gate,n2,Gate,n2,(1/Rg_T2));
         [ #  # ][ #  # ]
                 [ #  # ]
    1643                 :            : #endif
    1644 [ #  # ][ #  # ]:          0 : _load_static_residual2(Drain,n3,((Area*BP(Drain,n3))/Rd_T2));
    1645                 :            : #if defined(_DERIVATE)
    1646 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(Drain,n3,Drain,n3,((Area)/Rd_T2));
         [ #  # ][ #  # ]
                 [ #  # ]
    1647                 :            : #endif
    1648 [ #  # ][ #  # ]:          0 : _load_static_residual2(n4,Source,((Area*BP(n4,Source))/Rs_T2));
    1649                 :            : #if defined(_DERIVATE)
    1650 [ #  # ][ #  # ]:          0 : _load_static_jacobian4(n4,Source,n4,Source,((Area)/Rs_T2));
         [ #  # ][ #  # ]
                 [ #  # ]
    1651                 :            : #endif
    1652                 :          0 : fourkt=((4.0*1.3806503e-23)*T2);
    1653 [ #  # ][ #  # ]:          0 : if
    1654                 :            : ((LEVEL==1)||(LEVEL==2))
    1655                 :            : {
    1656                 :            : {
    1657         [ #  # ]:          0 : double m00_tanh(d00_tanh0,(Alpha_T2*BP(n3,n4)))
    1658                 :            : #if defined(_DERIVATE)
    1659 [ #  # ][ #  # ]:          0 : double m10_tanh(d10_tanh0,d00_tanh0,(Alpha_T2*BP(n3,n4)))
                 [ #  # ]
    1660                 :            : #endif
    1661                 :            : #if defined(_DERIVATE)
    1662         [ #  # ]:          0 : gm_Vn2_n4=((2*Beta_T2))*(1+(Lambda*BP(n3,n4)))*d00_tanh0;
    1663 [ #  # ][ #  # ]:          0 : gm_Vn3_n4=(((((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(Lambda))*d00_tanh0)+((((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(1+(Lambda*BP(n3,n4))))*(Alpha_T2)*d10_tanh0));
         [ #  # ][ #  # ]
                 [ #  # ]
    1664                 :            : #endif
    1665 [ #  # ][ #  # ]:          0 : gm=((((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(1+(Lambda*BP(n3,n4))))*d00_tanh0);
                 [ #  # ]
    1666                 :            : }
    1667         [ #  # ]:          0 : if
    1668         [ #  # ]:          0 : (BP(n3,n4)<(3/Alpha))
    1669                 :            : {
    1670                 :            : #if defined(_DERIVATE)
    1671         [ #  # ]:          0 : An_Vn3_n4=(-(1/(BP(n2,n4)-Vto_T2)));
    1672 [ #  # ][ #  # ]:          0 : An_Vn2_n4=(-(-BP(n3,n4)/(BP(n2,n4)-Vto_T2)/(BP(n2,n4)-Vto_T2)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1673                 :            : #endif
    1674 [ #  # ][ #  # ]:          0 : An=(1-(BP(n3,n4)/(BP(n2,n4)-Vto_T2)));
                 [ #  # ]
    1675                 :            : #if defined(_DERIVATE)
    1676                 :          0 : thermal_pwr_Vn2_n4=((((((8*1.3806503e-23)*T2)*gm_Vn2_n4)/3)*(((1+An)+(An*An))/(1+An)))+(((((8*1.3806503e-23)*T2)*gm)/3)*(((An_Vn2_n4+((An_Vn2_n4*An)+(An*An_Vn2_n4)))*(1+An)-((1+An)+(An*An))*An_Vn2_n4)/(1+An)/(1+An))))*Gdsnoi;
    1677                 :          0 : thermal_pwr_Vn3_n4=((((((8*1.3806503e-23)*T2)*gm_Vn3_n4)/3)*(((1+An)+(An*An))/(1+An)))+(((((8*1.3806503e-23)*T2)*gm)/3)*(((An_Vn3_n4+((An_Vn3_n4*An)+(An*An_Vn3_n4)))*(1+An)-((1+An)+(An*An))*An_Vn3_n4)/(1+An)/(1+An))))*Gdsnoi;
    1678                 :            : #endif
    1679                 :          0 : thermal_pwr=((((((8*1.3806503e-23)*T2)*gm)/3)*(((1+An)+(An*An))/(1+An)))*Gdsnoi);
    1680                 :            : }
    1681                 :            : else
    1682                 :            : {
    1683                 :            : #if defined(_DERIVATE)
    1684                 :          0 : thermal_pwr_Vn2_n4=((((8*1.3806503e-23)*T2)*gm_Vn2_n4)/3)*Gdsnoi;
    1685                 :          0 : thermal_pwr_Vn3_n4=((((8*1.3806503e-23)*T2)*gm_Vn3_n4)/3)*Gdsnoi;
    1686                 :            : #endif
    1687                 :          0 : thermal_pwr=(((((8*1.3806503e-23)*T2)*gm)/3)*Gdsnoi);
    1688                 :            : }
    1689                 :          0 : _save_whitenoise2(n3,n4,thermal_pwr,"thermal");
    1690                 :            : {
    1691                 :          0 : double m00_pow(d00_pow0,Ids,Af)
    1692                 :            : #if defined(_DERIVATE)
    1693         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Ids,Af)
    1694                 :            : #endif
    1695                 :            : #if defined(_DERIVATE)
    1696                 :          0 : flicker_pwr_Vn2_n4=(Kf*(d10_pow0*Ids_Vn2_n4));
    1697                 :          0 : flicker_pwr_Vn3_n4=(Kf*(d10_pow0*Ids_Vn3_n4));
    1698                 :            : #endif
    1699                 :          0 : flicker_pwr=(Kf*d00_pow0);
    1700                 :            : }
    1701                 :          0 : _save_flickernoise2(n3,n4,flicker_pwr,1.0,"flicker");
    1702                 :            : }
    1703         [ #  # ]:          0 : if
    1704                 :            : (LEVEL==3)
    1705                 :            : {
    1706         [ #  # ]:          0 : if
    1707         [ #  # ]:          0 : (BP(n3,n4)<(3/Alpha))
    1708                 :            : {
    1709                 :            : #if defined(_DERIVATE)
    1710         [ #  # ]:          0 : H1_Vn3_n4=((-(-((Alpha)/3)))/(1+(B*(BP(n2,n4)-Vto_T2))));
    1711 [ #  # ][ #  # ]:          0 : H1_Vn2_n4=(-(1-(1-((Alpha*BP(n3,n4))/3)))*(B)/(1+(B*(BP(n2,n4)-Vto_T2)))/(1+(B*(BP(n2,n4)-Vto_T2))));
         [ #  # ][ #  # ]
                 [ #  # ]
    1712                 :            : #endif
    1713 [ #  # ][ #  # ]:          0 : H1=((1-(1-((Alpha*BP(n3,n4))/3)))/(1+(B*(BP(n2,n4)-Vto_T2))));
                 [ #  # ]
    1714                 :            : {
    1715         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
    1716                 :            : #if defined(_DERIVATE)
    1717 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1718                 :            : #endif
    1719                 :            : #if defined(_DERIVATE)
    1720 [ #  # ][ #  # ]:          0 : gm_Vn2_n4=(((((2*Beta_T2))*(1+(Lambda*BP(n3,n4)))*H1)+((((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(1+(Lambda*BP(n3,n4))))*H1_Vn2_n4))+((((((Beta_T2*(1+(Lambda*BP(n3,n4))))*(d10_pow0*1.0))*B*H1)+((((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*B)*H1_Vn2_n4))*(1+(B*(BP(n2,n4)-Vto_T2)))-((((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*B)*H1)*(B))/(1+(B*(BP(n2,n4)-Vto_T2)))/(1+(B*(BP(n2,n4)-Vto_T2)))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1721 [ #  # ][ #  # ]:          0 : gm_Vn3_n4=((((((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(Lambda))*H1)+((((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(1+(Lambda*BP(n3,n4))))*H1_Vn3_n4))+((((Beta_T2*(Lambda))*d00_pow0*B*H1)+((((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*B)*H1_Vn3_n4))/(1+(B*(BP(n2,n4)-Vto_T2)))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1722                 :            : #endif
    1723 [ #  # ][ #  # ]:          0 : gm=(((((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(1+(Lambda*BP(n3,n4))))*H1)+(((((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*B)*H1)/(1+(B*(BP(n2,n4)-Vto_T2)))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1724                 :            : }
    1725                 :            : #if defined(_DERIVATE)
    1726         [ #  # ]:          0 : An_Vn3_n4=(-(1/(BP(n2,n4)-Vto_T2)));
    1727 [ #  # ][ #  # ]:          0 : An_Vn2_n4=(-(-BP(n3,n4)/(BP(n2,n4)-Vto_T2)/(BP(n2,n4)-Vto_T2)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1728                 :            : #endif
    1729 [ #  # ][ #  # ]:          0 : An=(1-(BP(n3,n4)/(BP(n2,n4)-Vto_T2)));
                 [ #  # ]
    1730                 :            : #if defined(_DERIVATE)
    1731                 :          0 : thermal_pwr_Vn2_n4=((((((8*1.3806503e-23)*T2)*gm_Vn2_n4)/3)*(((1+An)+(An*An))/(1+An)))+(((((8*1.3806503e-23)*T2)*gm)/3)*(((An_Vn2_n4+((An_Vn2_n4*An)+(An*An_Vn2_n4)))*(1+An)-((1+An)+(An*An))*An_Vn2_n4)/(1+An)/(1+An))))*Gdsnoi;
    1732                 :          0 : thermal_pwr_Vn3_n4=((((((8*1.3806503e-23)*T2)*gm_Vn3_n4)/3)*(((1+An)+(An*An))/(1+An)))+(((((8*1.3806503e-23)*T2)*gm)/3)*(((An_Vn3_n4+((An_Vn3_n4*An)+(An*An_Vn3_n4)))*(1+An)-((1+An)+(An*An))*An_Vn3_n4)/(1+An)/(1+An))))*Gdsnoi;
    1733                 :            : #endif
    1734                 :          0 : thermal_pwr=((((((8*1.3806503e-23)*T2)*gm)/3)*(((1+An)+(An*An))/(1+An)))*Gdsnoi);
    1735                 :            : }
    1736                 :            : else
    1737                 :            : {
    1738                 :            : {
    1739         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
    1740         [ #  # ]:          0 : double m00_pow(d00_pow1,(1+(B*(BP(n2,n4)-Vto_T2))),2.0)
    1741                 :            : #if defined(_DERIVATE)
    1742 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1743 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow1,d00_pow1,(1+(B*(BP(n2,n4)-Vto_T2))),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1744                 :            : #endif
    1745                 :            : #if defined(_DERIVATE)
    1746 [ #  # ][ #  # ]:          0 : gm_Vn2_n4=(((((2*Beta_T2))*(1+(Lambda*BP(n3,n4)))*(1+(B*(BP(n2,n4)-Vto_T2)))-(((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(1+(Lambda*BP(n3,n4))))*(B))/(1+(B*(BP(n2,n4)-Vto_T2)))/(1+(B*(BP(n2,n4)-Vto_T2))))+((((Beta_T2*(1+(Lambda*BP(n3,n4))))*(d10_pow0*1.0))*B*d00_pow1-(((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*B)*(d10_pow1*(B)))/d00_pow1/d00_pow1));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1747 [ #  # ][ #  # ]:          0 : gm_Vn3_n4=(((((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(Lambda))/(1+(B*(BP(n2,n4)-Vto_T2))))+((Beta_T2*(Lambda))*d00_pow0*B/d00_pow1));
                 [ #  # ]
    1748                 :            : #endif
    1749 [ #  # ][ #  # ]:          0 : gm=(((((2*Beta_T2)*(BP(n2,n4)-Vto_T2))*(1+(Lambda*BP(n3,n4))))/(1+(B*(BP(n2,n4)-Vto_T2))))+((((Beta_T2*(1+(Lambda*BP(n3,n4))))*d00_pow0)*B)/d00_pow1));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1750                 :            : }
    1751                 :            : #if defined(_DERIVATE)
    1752                 :          0 : thermal_pwr_Vn2_n4=((((8*1.3806503e-23)*T2)*gm_Vn2_n4)/3)*Gdsnoi;
    1753                 :          0 : thermal_pwr_Vn3_n4=((((8*1.3806503e-23)*T2)*gm_Vn3_n4)/3)*Gdsnoi;
    1754                 :            : #endif
    1755                 :          0 : thermal_pwr=(((((8*1.3806503e-23)*T2)*gm)/3)*Gdsnoi);
    1756                 :            : }
    1757                 :          0 : _save_whitenoise2(n3,n4,thermal_pwr,"thermal");
    1758                 :            : {
    1759                 :          0 : double m00_pow(d00_pow0,Ids,Af)
    1760                 :            : #if defined(_DERIVATE)
    1761         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Ids,Af)
    1762                 :            : #endif
    1763                 :            : #if defined(_DERIVATE)
    1764                 :          0 : flicker_pwr_Vn2_n4=(Kf*(d10_pow0*Ids_Vn2_n4));
    1765                 :          0 : flicker_pwr_Vn3_n4=(Kf*(d10_pow0*Ids_Vn3_n4));
    1766                 :            : #endif
    1767                 :          0 : flicker_pwr=(Kf*d00_pow0);
    1768                 :            : }
    1769                 :          0 : _save_flickernoise2(n3,n4,flicker_pwr,1.0,"flicker");
    1770                 :            : }
    1771         [ #  # ]:          0 : if
    1772                 :            : (LEVEL==4)
    1773                 :            : {
    1774         [ #  # ]:          0 : if
    1775         [ #  # ]:          0 : (BP(n3,n4)<(3/Alpha))
    1776                 :            : {
    1777                 :            : {
    1778         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),Qp)
    1779         [ #  # ]:          0 : double m00_pow(d00_pow1,(1-((Alpha*BP(n3,n4))/3)),3.0)
    1780                 :            : #if defined(_DERIVATE)
    1781 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),Qp)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1782 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow1,d00_pow1,(1-((Alpha*BP(n3,n4))/3)),3.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1783                 :            : #endif
    1784                 :            : #if defined(_DERIVATE)
    1785                 :          0 : Ids1_Vn2_n4=(Beta_T2*(d10_pow0*1.0))*(1-d00_pow1);
    1786                 :          0 : Ids1_Vn3_n4=((Beta_T2*d00_pow0)*(-(d10_pow1*(-((Alpha)/3)))));
    1787                 :            : #endif
    1788                 :          0 : Ids1=((Beta_T2*d00_pow0)*(1-d00_pow1));
    1789                 :            : }
    1790                 :            : {
    1791         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),(Qp-1))
    1792         [ #  # ]:          0 : double m00_pow(d00_pow1,((Alpha*BP(n3,n4))/3),3.0)
    1793                 :            : #if defined(_DERIVATE)
    1794 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),(Qp-1))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1795 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow1,d00_pow1,((Alpha*BP(n3,n4))/3),3.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1796                 :            : #endif
    1797                 :            : #if defined(_DERIVATE)
    1798                 :          0 : gm1_Vn2_n4=((Qp*Beta_T2)*(d10_pow0*1.0))*(1-(1-d00_pow1));
    1799                 :          0 : gm1_Vn3_n4=(((Qp*Beta_T2)*d00_pow0)*(-(-(d10_pow1*((Alpha)/3)))));
    1800                 :            : #endif
    1801                 :          0 : gm1=(((Qp*Beta_T2)*d00_pow0)*(1-(1-d00_pow1)));
    1802                 :            : }
    1803                 :            : #if defined(_DERIVATE)
    1804 [ #  # ][ #  # ]:          0 : gm_Vn2_n4=((((gm1_Vn2_n4*(1+(Lambda*BP(n3,n4)))*(1+((Delta*BP(n2,n4))*Ids1))-(gm1*(1+(Lambda*BP(n3,n4))))*(((Delta)*Ids1)+((Delta*BP(n2,n4))*Ids1_Vn2_n4)))/(1+((Delta*BP(n2,n4))*Ids1))/(1+((Delta*BP(n2,n4))*Ids1)))*(1+(((Delta*BP(n3,n4))*Ids1)/(1+((Delta*BP(n3,n4))*Ids1)))))+(((gm1*(1+(Lambda*BP(n3,n4))))/(1+((Delta*BP(n2,n4))*Ids1)))*((((Delta*BP(n3,n4))*Ids1_Vn2_n4)*(1+((Delta*BP(n3,n4))*Ids1))-((Delta*BP(n3,n4))*Ids1)*((Delta*BP(n3,n4))*Ids1_Vn2_n4))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1805 [ #  # ][ #  # ]:          0 : gm_Vn3_n4=((((((gm1_Vn3_n4*(1+(Lambda*BP(n3,n4))))+(gm1*(Lambda)))*(1+((Delta*BP(n2,n4))*Ids1))-(gm1*(1+(Lambda*BP(n3,n4))))*((Delta*BP(n2,n4))*Ids1_Vn3_n4))/(1+((Delta*BP(n2,n4))*Ids1))/(1+((Delta*BP(n2,n4))*Ids1)))*(1+(((Delta*BP(n3,n4))*Ids1)/(1+((Delta*BP(n3,n4))*Ids1)))))+(((gm1*(1+(Lambda*BP(n3,n4))))/(1+((Delta*BP(n2,n4))*Ids1)))*(((((Delta)*Ids1)+((Delta*BP(n3,n4))*Ids1_Vn3_n4))*(1+((Delta*BP(n3,n4))*Ids1))-((Delta*BP(n3,n4))*Ids1)*(((Delta)*Ids1)+((Delta*BP(n3,n4))*Ids1_Vn3_n4)))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1806                 :            : #endif
    1807 [ #  # ][ #  # ]:          0 : gm=(((gm1*(1+(Lambda*BP(n3,n4))))/(1+((Delta*BP(n2,n4))*Ids1)))*(1+(((Delta*BP(n3,n4))*Ids1)/(1+((Delta*BP(n3,n4))*Ids1)))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1808                 :            : #if defined(_DERIVATE)
    1809         [ #  # ]:          0 : An_Vn3_n4=(-(1/(BP(n2,n4)-Vto_T2)));
    1810 [ #  # ][ #  # ]:          0 : An_Vn2_n4=(-(-BP(n3,n4)/(BP(n2,n4)-Vto_T2)/(BP(n2,n4)-Vto_T2)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1811                 :            : #endif
    1812 [ #  # ][ #  # ]:          0 : An=(1-(BP(n3,n4)/(BP(n2,n4)-Vto_T2)));
                 [ #  # ]
    1813                 :            : #if defined(_DERIVATE)
    1814                 :          0 : thermal_pwr_Vn2_n4=((((((8*1.3806503e-23)*T2)*gm_Vn2_n4)/3)*(((1+An)+(An*An))/(1+An)))+(((((8*1.3806503e-23)*T2)*gm)/3)*(((An_Vn2_n4+((An_Vn2_n4*An)+(An*An_Vn2_n4)))*(1+An)-((1+An)+(An*An))*An_Vn2_n4)/(1+An)/(1+An))))*Gdsnoi;
    1815                 :          0 : thermal_pwr_Vn3_n4=((((((8*1.3806503e-23)*T2)*gm_Vn3_n4)/3)*(((1+An)+(An*An))/(1+An)))+(((((8*1.3806503e-23)*T2)*gm)/3)*(((An_Vn3_n4+((An_Vn3_n4*An)+(An*An_Vn3_n4)))*(1+An)-((1+An)+(An*An))*An_Vn3_n4)/(1+An)/(1+An))))*Gdsnoi;
    1816                 :            : #endif
    1817                 :          0 : thermal_pwr=((((((8*1.3806503e-23)*T2)*gm)/3)*(((1+An)+(An*An))/(1+An)))*Gdsnoi);
    1818                 :            : }
    1819                 :            : else
    1820                 :            : {
    1821                 :            : {
    1822         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),Qp)
    1823                 :            : #if defined(_DERIVATE)
    1824 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),Qp)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1825                 :            : #endif
    1826                 :            : #if defined(_DERIVATE)
    1827                 :          0 : Ids1_Vn2_n4=(Beta_T2*(d10_pow0*1.0));
    1828                 :          0 : Ids1_Vn3_n4=0.0;
    1829                 :            : #endif
    1830                 :          0 : Ids1=(Beta_T2*d00_pow0);
    1831                 :            : }
    1832                 :            : {
    1833         [ #  # ]:          0 : double m00_pow(d00_pow0,(BP(n2,n4)-Vto_T2),(Qp-1))
    1834                 :            : #if defined(_DERIVATE)
    1835 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(BP(n2,n4)-Vto_T2),(Qp-1))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1836                 :            : #endif
    1837                 :            : #if defined(_DERIVATE)
    1838                 :          0 : gm1_Vn2_n4=((Qp*Beta_T2)*(d10_pow0*1.0));
    1839                 :          0 : gm1_Vn3_n4=0.0;
    1840                 :            : #endif
    1841                 :          0 : gm1=((Qp*Beta_T2)*d00_pow0);
    1842                 :            : }
    1843                 :            : #if defined(_DERIVATE)
    1844 [ #  # ][ #  # ]:          0 : gm_Vn2_n4=((((gm1_Vn2_n4*(1+(Lambda*BP(n3,n4)))*(1+((Delta*BP(n2,n4))*Ids1))-(gm1*(1+(Lambda*BP(n3,n4))))*(((Delta)*Ids1)+((Delta*BP(n2,n4))*Ids1_Vn2_n4)))/(1+((Delta*BP(n2,n4))*Ids1))/(1+((Delta*BP(n2,n4))*Ids1)))*(1+(((Delta*BP(n3,n4))*Ids1)/(1+((Delta*BP(n3,n4))*Ids1)))))+(((gm1*(1+(Lambda*BP(n3,n4))))/(1+((Delta*BP(n2,n4))*Ids1)))*((((Delta*BP(n3,n4))*Ids1_Vn2_n4)*(1+((Delta*BP(n3,n4))*Ids1))-((Delta*BP(n3,n4))*Ids1)*((Delta*BP(n3,n4))*Ids1_Vn2_n4))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1845 [ #  # ][ #  # ]:          0 : gm_Vn3_n4=((((((gm1_Vn3_n4*(1+(Lambda*BP(n3,n4))))+(gm1*(Lambda)))*(1+((Delta*BP(n2,n4))*Ids1))-(gm1*(1+(Lambda*BP(n3,n4))))*((Delta*BP(n2,n4))*Ids1_Vn3_n4))/(1+((Delta*BP(n2,n4))*Ids1))/(1+((Delta*BP(n2,n4))*Ids1)))*(1+(((Delta*BP(n3,n4))*Ids1)/(1+((Delta*BP(n3,n4))*Ids1)))))+(((gm1*(1+(Lambda*BP(n3,n4))))/(1+((Delta*BP(n2,n4))*Ids1)))*(((((Delta)*Ids1)+((Delta*BP(n3,n4))*Ids1_Vn3_n4))*(1+((Delta*BP(n3,n4))*Ids1))-((Delta*BP(n3,n4))*Ids1)*(((Delta)*Ids1)+((Delta*BP(n3,n4))*Ids1_Vn3_n4)))/(1+((Delta*BP(n3,n4))*Ids1))/(1+((Delta*BP(n3,n4))*Ids1)))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1846                 :            : #endif
    1847 [ #  # ][ #  # ]:          0 : gm=(((gm1*(1+(Lambda*BP(n3,n4))))/(1+((Delta*BP(n2,n4))*Ids1)))*(1+(((Delta*BP(n3,n4))*Ids1)/(1+((Delta*BP(n3,n4))*Ids1)))));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1848                 :            : #if defined(_DERIVATE)
    1849                 :          0 : thermal_pwr_Vn2_n4=((((8*1.3806503e-23)*T2)*gm_Vn2_n4)/3)*Gdsnoi;
    1850                 :          0 : thermal_pwr_Vn3_n4=((((8*1.3806503e-23)*T2)*gm_Vn3_n4)/3)*Gdsnoi;
    1851                 :            : #endif
    1852                 :          0 : thermal_pwr=(((((8*1.3806503e-23)*T2)*gm)/3)*Gdsnoi);
    1853                 :            : }
    1854                 :          0 : _save_whitenoise2(n3,n4,thermal_pwr,"thermal");
    1855                 :            : {
    1856                 :          0 : double m00_pow(d00_pow0,Ids,Af)
    1857                 :            : #if defined(_DERIVATE)
    1858         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Ids,Af)
    1859                 :            : #endif
    1860                 :            : #if defined(_DERIVATE)
    1861                 :          0 : flicker_pwr_Vn2_n4=(Kf*(d10_pow0*Ids_Vn2_n4));
    1862                 :          0 : flicker_pwr_Vn3_n4=(Kf*(d10_pow0*Ids_Vn3_n4));
    1863                 :            : #endif
    1864                 :          0 : flicker_pwr=(Kf*d00_pow0);
    1865                 :            : }
    1866                 :          0 : _save_flickernoise2(n3,n4,flicker_pwr,1.0,"flicker");
    1867                 :            : }
    1868         [ #  # ]:          0 : if
    1869                 :            : (LEVEL==5)
    1870                 :            : {
    1871         [ #  # ]:          0 : if
    1872         [ #  # ]:          0 : (BP(n3,n4)<(3/Alpha))
    1873                 :            : {
    1874                 :            : #if defined(_DERIVATE)
    1875                 :          0 : Nst_Vn3_n4=(Nd);
    1876                 :            : #endif
    1877         [ #  # ]:          0 : Nst=(Ng+(Nd*BP(n3,n4)));
    1878         [ #  # ]:          0 : if
    1879                 :            : (Nst<1.0)
    1880                 :            : {
    1881                 :            : #if defined(_DERIVATE)
    1882                 :          0 : Nst_Vn3_n4=0.0;
    1883                 :            : #endif
    1884                 :          0 : Nst=1.0;
    1885                 :            : }
    1886                 :            : #if defined(_DERIVATE)
    1887                 :          0 : Vst_Vn3_n4=Nst_Vn3_n4*Vt_T2;
    1888                 :            : #endif
    1889                 :          0 : Vst=(Nst*Vt_T2);
    1890                 :            : {
    1891 [ #  # ][ #  # ]:          0 : double m00_exp(d00_exp0,(((BP(n2,n4)-Vto_T2)+(Gamma_T2*BP(n3,n4)))/(Qp*Vst)))
                 [ #  # ]
    1892                 :          0 : double m00_logE(d00_logE1,(d00_exp0+1))
    1893                 :            : #if defined(_DERIVATE)
    1894                 :            : #define d10_exp0 d00_exp0
    1895                 :          0 : double m10_logE(d10_logE1,d00_logE1,(d00_exp0+1))
    1896                 :            : #endif
    1897                 :            : #if defined(_DERIVATE)
    1898 [ #  # ][ #  # ]:          0 : Vg_Vn3_n4=(((Qp*Vst_Vn3_n4)*d00_logE1)+((Qp*Vst)*(((Gamma_T2)*(Qp*Vst)-((BP(n2,n4)-Vto_T2)+(Gamma_T2*BP(n3,n4)))*(Qp*Vst_Vn3_n4))/(Qp*Vst)/(Qp*Vst))*d10_exp0*d10_logE1));
                 [ #  # ]
    1899                 :          0 : Vg_Vn2_n4=((Qp*Vst)*(1/(Qp*Vst))*d10_exp0*d10_logE1);
    1900                 :            : #endif
    1901                 :          0 : Vg=((Qp*Vst)*d00_logE1);
    1902                 :            : }
    1903                 :            : #if defined(_DERIVATE)
    1904                 :          0 : Al_Vn3_n4=(Alpha_T2);
    1905                 :            : #endif
    1906         [ #  # ]:          0 : Al=(Alpha_T2*BP(n3,n4));
    1907                 :            : {
    1908                 :          0 : double m00_sqrt(d00_sqrt0,(1.0+(Al*Al)))
    1909                 :            : #if defined(_DERIVATE)
    1910                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,(1.0+(Al*Al)))
    1911                 :            : #endif
    1912                 :            : #if defined(_DERIVATE)
    1913                 :          0 : Fd_Vn3_n4=((Al_Vn3_n4*d00_sqrt0-Al*((Al_Vn3_n4*Al)+(Al*Al_Vn3_n4))*d10_sqrt0)/d00_sqrt0/d00_sqrt0);
    1914                 :            : #endif
    1915                 :          0 : Fd=(Al/d00_sqrt0);
    1916                 :            : }
    1917                 :            : {
    1918                 :          0 : double m00_pow(d00_pow0,Vg,Qp)
    1919                 :            : #if defined(_DERIVATE)
    1920         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Vg,Qp)
    1921                 :            : #endif
    1922                 :            : #if defined(_DERIVATE)
    1923                 :          0 : Ids1_Vn2_n4=(Beta_T2*(d10_pow0*Vg_Vn2_n4))*Fd;
    1924                 :          0 : Ids1_Vn3_n4=(((Beta_T2*(d10_pow0*Vg_Vn3_n4))*Fd)+((Beta_T2*d00_pow0)*Fd_Vn3_n4));
    1925                 :            : #endif
    1926                 :          0 : Ids1=((Beta_T2*d00_pow0)*Fd);
    1927                 :            : }
    1928                 :            : {
    1929 [ #  # ][ #  # ]:          0 : double m00_exp(d00_exp0,(-(((BP(n2,n4)-Vto_T2)+(Delta*BP(n3,n4)))/(Qp*Vst))))
                 [ #  # ]
    1930                 :            : #if defined(_DERIVATE)
    1931                 :            : #define d10_exp0 d00_exp0
    1932                 :            : #endif
    1933                 :            : #if defined(_DERIVATE)
    1934                 :          0 : gm1_Vn2_n4=((((Ids1_Vn2_n4*Vg-Ids1*Vg_Vn2_n4)/Vg/Vg)*Qp*(d00_exp0+1)-((Ids1/Vg)*Qp)*(-(1/(Qp*Vst)))*d10_exp0)/(d00_exp0+1)/(d00_exp0+1));
    1935 [ #  # ][ #  # ]:          0 : gm1_Vn3_n4=((((Ids1_Vn3_n4*Vg-Ids1*Vg_Vn3_n4)/Vg/Vg)*Qp*(d00_exp0+1)-((Ids1/Vg)*Qp)*(-(((Delta)*(Qp*Vst)-((BP(n2,n4)-Vto_T2)+(Delta*BP(n3,n4)))*(Qp*Vst_Vn3_n4))/(Qp*Vst)/(Qp*Vst)))*d10_exp0)/(d00_exp0+1)/(d00_exp0+1));
                 [ #  # ]
    1936                 :            : #endif
    1937                 :          0 : gm1=(((Ids1/Vg)*Qp)/(d00_exp0+1));
    1938                 :            : }
    1939                 :            : {
    1940         [ #  # ]:          0 : double m00_pow(d00_pow0,(1+((Delta*BP(n3,n4))*Ids1)),2.0)
    1941                 :            : #if defined(_DERIVATE)
    1942 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(1+((Delta*BP(n3,n4))*Ids1)),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1943                 :            : #endif
    1944                 :            : #if defined(_DERIVATE)
    1945         [ #  # ]:          0 : gm_Vn2_n4=((gm1_Vn2_n4*d00_pow0-gm1*(d10_pow0*((Delta*BP(n3,n4))*Ids1_Vn2_n4)))/d00_pow0/d00_pow0);
    1946         [ #  # ]:          0 : gm_Vn3_n4=((gm1_Vn3_n4*d00_pow0-gm1*(d10_pow0*(((Delta)*Ids1)+((Delta*BP(n3,n4))*Ids1_Vn3_n4))))/d00_pow0/d00_pow0);
    1947                 :            : #endif
    1948                 :          0 : gm=(gm1/d00_pow0);
    1949                 :            : }
    1950                 :            : #if defined(_DERIVATE)
    1951         [ #  # ]:          0 : An_Vn3_n4=(-(1/(BP(n2,n4)-Vto_T2)));
    1952 [ #  # ][ #  # ]:          0 : An_Vn2_n4=(-(-BP(n3,n4)/(BP(n2,n4)-Vto_T2)/(BP(n2,n4)-Vto_T2)));
         [ #  # ][ #  # ]
                 [ #  # ]
    1953                 :            : #endif
    1954 [ #  # ][ #  # ]:          0 : An=(1-(BP(n3,n4)/(BP(n2,n4)-Vto_T2)));
                 [ #  # ]
    1955                 :            : #if defined(_DERIVATE)
    1956                 :          0 : thermal_pwr_Vn2_n4=((((((8*1.3806503e-23)*T2)*gm_Vn2_n4)/3)*(((1+An)+(An*An))/(1+An)))+(((((8*1.3806503e-23)*T2)*gm)/3)*(((An_Vn2_n4+((An_Vn2_n4*An)+(An*An_Vn2_n4)))*(1+An)-((1+An)+(An*An))*An_Vn2_n4)/(1+An)/(1+An))))*Gdsnoi;
    1957                 :          0 : thermal_pwr_Vn3_n4=((((((8*1.3806503e-23)*T2)*gm_Vn3_n4)/3)*(((1+An)+(An*An))/(1+An)))+(((((8*1.3806503e-23)*T2)*gm)/3)*(((An_Vn3_n4+((An_Vn3_n4*An)+(An*An_Vn3_n4)))*(1+An)-((1+An)+(An*An))*An_Vn3_n4)/(1+An)/(1+An))))*Gdsnoi;
    1958                 :            : #endif
    1959                 :          0 : thermal_pwr=((((((8*1.3806503e-23)*T2)*gm)/3)*(((1+An)+(An*An))/(1+An)))*Gdsnoi);
    1960                 :            : }
    1961                 :            : else
    1962                 :            : {
    1963                 :            : #if defined(_DERIVATE)
    1964                 :          0 : Nst_Vn3_n4=(Nd);
    1965                 :            : #endif
    1966         [ #  # ]:          0 : Nst=(Ng+(Nd*BP(n3,n4)));
    1967         [ #  # ]:          0 : if
    1968                 :            : (Nst<1.0)
    1969                 :            : {
    1970                 :            : #if defined(_DERIVATE)
    1971                 :          0 : Nst_Vn3_n4=0.0;
    1972                 :            : #endif
    1973                 :          0 : Nst=1.0;
    1974                 :            : }
    1975                 :            : #if defined(_DERIVATE)
    1976                 :          0 : Vst_Vn3_n4=Nst_Vn3_n4*Vt_T2;
    1977                 :            : #endif
    1978                 :          0 : Vst=(Nst*Vt_T2);
    1979                 :            : {
    1980 [ #  # ][ #  # ]:          0 : double m00_exp(d00_exp0,(((BP(n2,n4)-Vto_T2)+(Gamma_T2*BP(n3,n4)))/(Qp*Vst)))
                 [ #  # ]
    1981                 :          0 : double m00_logE(d00_logE1,(d00_exp0+1))
    1982                 :            : #if defined(_DERIVATE)
    1983                 :            : #define d10_exp0 d00_exp0
    1984                 :          0 : double m10_logE(d10_logE1,d00_logE1,(d00_exp0+1))
    1985                 :            : #endif
    1986                 :            : #if defined(_DERIVATE)
    1987 [ #  # ][ #  # ]:          0 : Vg_Vn3_n4=(((Qp*Vst_Vn3_n4)*d00_logE1)+((Qp*Vst)*(((Gamma_T2)*(Qp*Vst)-((BP(n2,n4)-Vto_T2)+(Gamma_T2*BP(n3,n4)))*(Qp*Vst_Vn3_n4))/(Qp*Vst)/(Qp*Vst))*d10_exp0*d10_logE1));
                 [ #  # ]
    1988                 :          0 : Vg_Vn2_n4=((Qp*Vst)*(1/(Qp*Vst))*d10_exp0*d10_logE1);
    1989                 :            : #endif
    1990                 :          0 : Vg=((Qp*Vst)*d00_logE1);
    1991                 :            : }
    1992                 :            : #if defined(_DERIVATE)
    1993                 :          0 : Al_Vn3_n4=(Alpha_T2);
    1994                 :            : #endif
    1995         [ #  # ]:          0 : Al=(Alpha_T2*BP(n3,n4));
    1996                 :            : {
    1997                 :          0 : double m00_sqrt(d00_sqrt0,(1.0+(Al*Al)))
    1998                 :            : #if defined(_DERIVATE)
    1999                 :          0 : double m10_sqrt(d10_sqrt0,d00_sqrt0,(1.0+(Al*Al)))
    2000                 :            : #endif
    2001                 :            : #if defined(_DERIVATE)
    2002                 :          0 : Fd_Vn3_n4=((Al_Vn3_n4*d00_sqrt0-Al*((Al_Vn3_n4*Al)+(Al*Al_Vn3_n4))*d10_sqrt0)/d00_sqrt0/d00_sqrt0);
    2003                 :            : #endif
    2004                 :          0 : Fd=(Al/d00_sqrt0);
    2005                 :            : }
    2006                 :            : {
    2007                 :          0 : double m00_pow(d00_pow0,Vg,Qp)
    2008                 :            : #if defined(_DERIVATE)
    2009         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Vg,Qp)
    2010                 :            : #endif
    2011                 :            : #if defined(_DERIVATE)
    2012                 :          0 : Ids1_Vn2_n4=(Beta_T2*(d10_pow0*Vg_Vn2_n4))*Fd;
    2013                 :          0 : Ids1_Vn3_n4=(((Beta_T2*(d10_pow0*Vg_Vn3_n4))*Fd)+((Beta_T2*d00_pow0)*Fd_Vn3_n4));
    2014                 :            : #endif
    2015                 :          0 : Ids1=((Beta_T2*d00_pow0)*Fd);
    2016                 :            : }
    2017                 :            : {
    2018 [ #  # ][ #  # ]:          0 : double m00_exp(d00_exp0,(-(((BP(n2,n4)-Vto_T2)+(Delta*BP(n3,n4)))/(Qp*Vst))))
                 [ #  # ]
    2019                 :            : #if defined(_DERIVATE)
    2020                 :            : #define d10_exp0 d00_exp0
    2021                 :            : #endif
    2022                 :            : #if defined(_DERIVATE)
    2023                 :          0 : gm1_Vn2_n4=((((Ids1_Vn2_n4*Vg-Ids1*Vg_Vn2_n4)/Vg/Vg)*Qp*(d00_exp0+1)-((Ids1/Vg)*Qp)*(-(1/(Qp*Vst)))*d10_exp0)/(d00_exp0+1)/(d00_exp0+1));
    2024 [ #  # ][ #  # ]:          0 : gm1_Vn3_n4=((((Ids1_Vn3_n4*Vg-Ids1*Vg_Vn3_n4)/Vg/Vg)*Qp*(d00_exp0+1)-((Ids1/Vg)*Qp)*(-(((Delta)*(Qp*Vst)-((BP(n2,n4)-Vto_T2)+(Delta*BP(n3,n4)))*(Qp*Vst_Vn3_n4))/(Qp*Vst)/(Qp*Vst)))*d10_exp0)/(d00_exp0+1)/(d00_exp0+1));
                 [ #  # ]
    2025                 :            : #endif
    2026                 :          0 : gm1=(((Ids1/Vg)*Qp)/(d00_exp0+1));
    2027                 :            : }
    2028                 :            : {
    2029         [ #  # ]:          0 : double m00_pow(d00_pow0,(1+((Delta*BP(n3,n4))*Ids1)),2.0)
    2030                 :            : #if defined(_DERIVATE)
    2031 [ #  # ][ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,(1+((Delta*BP(n3,n4))*Ids1)),2.0)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    2032                 :            : #endif
    2033                 :            : #if defined(_DERIVATE)
    2034         [ #  # ]:          0 : gm_Vn2_n4=((gm1_Vn2_n4*d00_pow0-gm1*(d10_pow0*((Delta*BP(n3,n4))*Ids1_Vn2_n4)))/d00_pow0/d00_pow0);
    2035         [ #  # ]:          0 : gm_Vn3_n4=((gm1_Vn3_n4*d00_pow0-gm1*(d10_pow0*(((Delta)*Ids1)+((Delta*BP(n3,n4))*Ids1_Vn3_n4))))/d00_pow0/d00_pow0);
    2036                 :            : #endif
    2037                 :          0 : gm=(gm1/d00_pow0);
    2038                 :            : }
    2039                 :            : #if defined(_DERIVATE)
    2040                 :          0 : thermal_pwr_Vn2_n4=((((8*1.3806503e-23)*T2)*gm_Vn2_n4)/3)*Gdsnoi;
    2041                 :          0 : thermal_pwr_Vn3_n4=((((8*1.3806503e-23)*T2)*gm_Vn3_n4)/3)*Gdsnoi;
    2042                 :            : #endif
    2043                 :          0 : thermal_pwr=(((((8*1.3806503e-23)*T2)*gm)/3)*Gdsnoi);
    2044                 :            : }
    2045                 :          0 : _save_whitenoise2(n3,n4,thermal_pwr,"thermal");
    2046                 :            : {
    2047                 :          0 : double m00_pow(d00_pow0,Ids,Af)
    2048                 :            : #if defined(_DERIVATE)
    2049         [ #  # ]:          0 : double m10_pow(d10_pow0,d00_pow0,Ids,Af)
    2050                 :            : #endif
    2051                 :            : #if defined(_DERIVATE)
    2052                 :          0 : flicker_pwr_Vn2_n4=(Kf*(d10_pow0*Ids_Vn2_n4));
    2053                 :          0 : flicker_pwr_Vn3_n4=(Kf*(d10_pow0*Ids_Vn3_n4));
    2054                 :            : #endif
    2055                 :          0 : flicker_pwr=(Kf*d00_pow0);
    2056                 :            : }
    2057                 :          0 : _save_flickernoise2(n3,n4,flicker_pwr,1.0,"flicker");
    2058                 :            : }
    2059                 :          0 : _save_whitenoise2(Drain,n3,((Area*fourkt)/Rd_T2),"thermal");
    2060                 :          0 : _save_whitenoise2(Gate,n2,((Area*fourkt)/Rg_T2),"thermal");
    2061                 :          0 : _save_whitenoise2(n4,Source,((Area*fourkt)/Rs_T2),"thermal");
    2062                 :            : 
    2063                 :            : /* ------------------ end of verilog analog equations --------------------- */
    2064                 :            : 
    2065                 :            : /* ------------------ evaluate verilog noise equations -------------------- */
    2066                 :            : 
    2067                 :            : /* ------------------- end of verilog noise equations --------------------- */
    2068                 :          0 : }
    2069                 :            : 
    2070                 :            : /* Perform DC iteration. */
    2071                 :          0 : void MESFET::calcDC (void)
    2072                 :            : {
    2073                 :            :   // evaluate Verilog code
    2074                 :          0 :   initVerilog ();
    2075                 :          0 :   calcVerilog ();
    2076                 :            : 
    2077                 :            :   // fill right hand side and static jacobian
    2078         [ #  # ]:          0 :   for (int i1 = 0; i1 < 7; i1++) {
    2079         [ #  # ]:          0 :     setI (i1, _rhs[i1]);
    2080         [ #  # ]:          0 :     for (int i2 = 0; i2 < 7; i2++) {
    2081         [ #  # ]:          0 :       setY (i1, i2, _jstat[i1][i2]);
    2082                 :            :     }
    2083                 :            :   }
    2084                 :          0 : }
    2085                 :            : 
    2086                 :            : /* Save operating points. */
    2087                 :          0 : void MESFET::saveOperatingPoints (void)
    2088                 :            : {
    2089                 :            :   // save global instance operating points
    2090                 :          0 : }
    2091                 :            : 
    2092                 :            : /* Load operating points. */
    2093                 :          0 : void MESFET::loadOperatingPoints (void)
    2094                 :            : {
    2095                 :          0 : }
    2096                 :            : 
    2097                 :            : /* Calculate operating points. */
    2098                 :          0 : void MESFET::calcOperatingPoints (void)
    2099                 :            : {
    2100                 :          0 : }
    2101                 :            : 
    2102                 :            : /* Initialization of AC analysis. */
    2103                 :          0 : void MESFET::initAC (void)
    2104                 :            : {
    2105                 :          0 :   allocMatrixMNA ();
    2106                 :          0 : }
    2107                 :            : 
    2108                 :            : /* Perform AC calculations. */
    2109                 :          0 : void MESFET::calcAC (nr_double_t frequency)
    2110                 :            : {
    2111         [ #  # ]:          0 :   setMatrixY (calcMatrixY (frequency));
    2112                 :          0 : }
    2113                 :            : 
    2114                 :            : /* Compute Y-matrix for AC analysis. */
    2115                 :          0 : matrix MESFET::calcMatrixY (nr_double_t frequency)
    2116                 :            : {
    2117                 :          0 :   _freq = frequency;
    2118                 :          0 :   saveOperatingPoints ();
    2119                 :          0 :   matrix y (7);
    2120                 :            : 
    2121         [ #  # ]:          0 :   for (int i1 = 0; i1 < 7; i1++) {
    2122         [ #  # ]:          0 :     for (int i2 = 0; i2 < 7; i2++) {
    2123                 :          0 :       y (i1,i2) = nr_complex_t (_jstat[i1][i2], _jdyna[i1][i2] * 2 * M_PI * _freq);
    2124                 :            :     }
    2125                 :            :   }
    2126                 :            : 
    2127                 :          0 :   return y;
    2128                 :            : }
    2129                 :            : 
    2130                 :            : /* Initialization of S-parameter analysis. */
    2131                 :          0 : void MESFET::initSP (void)
    2132                 :            : {
    2133                 :          0 :   allocMatrixS ();
    2134                 :          0 : }
    2135                 :            : 
    2136                 :            : /* Perform S-parameter calculations. */
    2137                 :          0 : void MESFET::calcSP (nr_double_t frequency)
    2138                 :            : {
    2139 [ #  # ][ #  # ]:          0 :   setMatrixS (ytos (calcMatrixY (frequency)));
         [ #  # ][ #  # ]
                 [ #  # ]
    2140                 :          0 : }
    2141                 :            : 
    2142                 :            : /* Initialization of transient analysis. */
    2143                 :          0 : void MESFET::initTR (void)
    2144                 :            : {
    2145                 :          0 :   setStates (2 * 7 * 7);
    2146                 :          0 :   initDC ();
    2147                 :          0 : }
    2148                 :            : 
    2149                 :            : /* Perform transient analysis iteration step. */
    2150                 :          0 : void MESFET::calcTR (nr_double_t)
    2151                 :            : {
    2152                 :          0 :   doHB = 0;
    2153                 :          0 :   doAC = 1;
    2154                 :          0 :   doTR = 1;
    2155                 :          0 :   calcDC ();
    2156                 :            : 
    2157                 :            :   int i1, i2, i3, i4, state;
    2158                 :            : 
    2159                 :            :   // 2-node charge integrations
    2160         [ #  # ]:          0 :   for (i1 = 0; i1 < 7; i1++) {
    2161         [ #  # ]:          0 :   for (i2 = 0; i2 < 7; i2++) {
    2162                 :          0 :     state = 2 * (i2 + 7 * i1);
    2163         [ #  # ]:          0 :     if (i1 != i2)
    2164         [ #  # ]:          0 :     if (_charges[i1][i2] != 0.0)
    2165                 :          0 :       transientCapacitanceQ (state, i1, i2, _charges[i1][i2]);
    2166                 :            :   } }
    2167                 :            : 
    2168                 :            :   // 1-node charge integrations
    2169         [ #  # ]:          0 :   for (i1 = 0; i1 < 7; i1++) {
    2170                 :          0 :     state = 2 * (i1 + 7 * i1);
    2171         [ #  # ]:          0 :     if (_charges[i1][i1] != 0.0)
    2172                 :          0 :       transientCapacitanceQ (state, i1, _charges[i1][i1]);
    2173                 :            :   }
    2174                 :            : 
    2175                 :            :   // charge: 2-node, voltage: 2-node
    2176         [ #  # ]:          0 :   for (i1 = 0; i1 < 7; i1++) {
    2177         [ #  # ]:          0 :   for (i2 = 0; i2 < 7; i2++) {
    2178         [ #  # ]:          0 :   if (i1 != i2)
    2179         [ #  # ]:          0 :   for (i3 = 0; i3 < 7; i3++) {
    2180         [ #  # ]:          0 :   for (i4 = 0; i4 < 7; i4++) {
    2181         [ #  # ]:          0 :     if (i3 != i4)
    2182         [ #  # ]:          0 :     if (_caps[i1][i2][i3][i4] != 0.0)
    2183 [ #  # ][ #  # ]:          0 :       transientCapacitanceC (i1, i2, i3, i4, _caps[i1][i2][i3][i4], BP(i3,i4));
    2184                 :            :   } } } }
    2185                 :            : 
    2186                 :            :   // charge: 2-node, voltage: 1-node
    2187         [ #  # ]:          0 :   for (i1 = 0; i1 < 7; i1++) {
    2188         [ #  # ]:          0 :   for (i2 = 0; i2 < 7; i2++) {
    2189         [ #  # ]:          0 :   if (i1 != i2)
    2190         [ #  # ]:          0 :   for (i3 = 0; i3 < 7; i3++) {
    2191         [ #  # ]:          0 :     if (_caps[i1][i2][i3][i3] != 0.0)
    2192         [ #  # ]:          0 :       transientCapacitanceC2Q (i1, i2, i3, _caps[i1][i2][i3][i3], NP(i3));
    2193                 :            :   } } }
    2194                 :            : 
    2195                 :            :   // charge: 1-node, voltage: 2-node
    2196         [ #  # ]:          0 :   for (i1 = 0; i1 < 7; i1++) {
    2197         [ #  # ]:          0 :   for (i3 = 0; i3 < 7; i3++) {
    2198         [ #  # ]:          0 :   for (i4 = 0; i4 < 7; i4++) {
    2199         [ #  # ]:          0 :     if (i3 != i4)
    2200         [ #  # ]:          0 :     if (_caps[i1][i1][i3][i4] != 0.0)
    2201 [ #  # ][ #  # ]:          0 :       transientCapacitanceC2V (i1, i3, i4, _caps[i1][i1][i3][i4], BP(i3,i4));
    2202                 :            :   } } }
    2203                 :            : 
    2204                 :            :   // charge: 1-node, voltage: 1-node
    2205         [ #  # ]:          0 :   for (i1 = 0; i1 < 7; i1++) {
    2206         [ #  # ]:          0 :   for (i3 = 0; i3 < 7; i3++) {
    2207         [ #  # ]:          0 :     if (_caps[i1][i1][i3][i3] != 0.0)
    2208         [ #  # ]:          0 :       transientCapacitanceC (i1, i3, _caps[i1][i1][i3][i3], NP(i3));
    2209                 :            :   } }
    2210                 :          0 : }
    2211                 :            : 
    2212                 :            : /* Compute Cy-matrix for AC noise analysis. */
    2213                 :          0 : matrix MESFET::calcMatrixCy (nr_double_t frequency) 
    2214                 :            : {
    2215                 :          0 :   _freq = frequency;
    2216                 :          0 :   matrix cy (7);
    2217                 :            : 
    2218                 :          0 :   _load_flickernoise2 (n3,n4,_flicker_pwr[n3][n4],_flicker_exp[n3][n4]);
    2219                 :          0 :   _load_whitenoise2 (n4,Source,_white_pwr[n4][Source]);
    2220                 :          0 :   _load_whitenoise2 (Drain,n3,_white_pwr[Drain][n3]);
    2221                 :          0 :   _load_whitenoise2 (Gate,n2,_white_pwr[Gate][n2]);
    2222                 :          0 :   _load_whitenoise2 (n3,n4,_white_pwr[n3][n4]);
    2223                 :            : 
    2224                 :          0 :   return cy;
    2225                 :            : }
    2226                 :            : 
    2227                 :            : /* Perform AC noise computations. */
    2228                 :          0 : void MESFET::calcNoiseAC (nr_double_t frequency) 
    2229                 :            : {
    2230         [ #  # ]:          0 :   setMatrixN (calcMatrixCy (frequency));
    2231                 :          0 : }
    2232                 :            : 
    2233                 :            : /* Perform S-parameter noise computations. */
    2234                 :          0 : void MESFET::calcNoiseSP (nr_double_t frequency) 
    2235                 :            : {
    2236 [ #  # ][ #  # ]:          0 :   setMatrixN (cytocs (calcMatrixCy (frequency) * z0, getMatrixS ()));
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2237                 :          0 : }
    2238                 :            : 
    2239                 :            : /* Initialization of HB analysis. */
    2240                 :          0 : void MESFET::initHB (int)
    2241                 :            : {
    2242                 :          0 :   initDC ();
    2243                 :          0 :   allocMatrixHB ();
    2244                 :          0 : }
    2245                 :            : 
    2246                 :            : /* Perform HB analysis. */
    2247                 :          0 : void MESFET::calcHB (int)
    2248                 :            : {
    2249                 :          0 :   doHB = 1;
    2250                 :          0 :   doAC = 1;
    2251                 :          0 :   doTR = 0;
    2252                 :            : 
    2253                 :            :   // jacobian dI/dV and currents get filled
    2254                 :          0 :   calcDC ();
    2255                 :          0 :   saveOperatingPoints ();
    2256                 :            : 
    2257                 :            :   // fill in HB matrices
    2258         [ #  # ]:          0 :   for (int i1 = 0; i1 < 7; i1++) {
    2259         [ #  # ]:          0 :     setQ  (i1, _qhs[i1]); // charges
    2260         [ #  # ]:          0 :     setCV (i1, _chs[i1]); // jacobian dQ/dV * V
    2261         [ #  # ]:          0 :     setGV (i1, _ghs[i1]); // jacobian dI/dV * V
    2262         [ #  # ]:          0 :     for (int i2 = 0; i2 < 7; i2++) {
    2263         [ #  # ]:          0 :       setQV (i1, i2, _jdyna[i1][i2]); // jacobian dQ/dV
    2264                 :            :     }
    2265                 :            :   }
    2266                 :          0 : }
    2267                 :            : 
    2268                 :            : #include "MESFET.defs.h"
    2269                 :            : 

Generated by: LCOV version 1.11