Show
Ignore:
Timestamp:
10/29/07 14:06:47 (10 months ago)
Author:
clauss
Message:

in NPN and PNP model noEvent added

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/maintenance/2.2.2/Modelica/Electrical/Analog/Semiconductors.mo

    r550 r742  
    473473    qbk = 1 - vbc*Vak; 
    474474     
    475     ibc = if (vbc/Vt < EMin) then Is*(ExMin*(vbc/Vt - EMin + 1) - 1) + vbc*Gbc else  
     475    ibc = noEvent(if (vbc/Vt < EMin) then Is*(ExMin*(vbc/Vt - EMin + 1) - 1) + vbc*Gbc else  
    476476            if (vbc/Vt > EMax) then Is*(ExMax*(vbc/Vt - EMax + 1) - 1) + vbc* 
    477       Gbc else Is*(exp(vbc/Vt) - 1) + vbc*Gbc; 
    478     ibe = if (vbe/Vt < EMin) then Is*(ExMin*(vbe/Vt - EMin + 1) - 1) + vbe*Gbe else  
     477      Gbc else Is*(exp(vbc/Vt) - 1) + vbc*Gbc); 
     478    ibe = noEvent(if (vbe/Vt < EMin) then Is*(ExMin*(vbe/Vt - EMin + 1) - 1) + vbe*Gbe else  
    479479            if (vbe/Vt > EMax) then Is*(ExMax*(vbe/Vt - EMax + 1) - 1) + vbe* 
    480       Gbe else Is*(exp(vbe/Vt) - 1) + vbe*Gbe; 
    481     Capcjc = if (vbc/Phic > 0) then Cjc*(1 + Mc*vbc/Phic) else Cjc*pow(1 - vbc 
    482       /Phic, -Mc); 
    483     Capcje = if (vbe/Phie > 0) then Cje*(1 + Me*vbe/Phie) else Cje*pow(1 - vbe 
    484       /Phie, -Me); 
    485     cbc = if (vbc/Vt < EMin) then Taur*Is/Vt*ExMin*(vbc/Vt - EMin + 1) + 
     480      Gbe else Is*(exp(vbe/Vt) - 1) + vbe*Gbe); 
     481    Capcjc = noEvent(if (vbc/Phic > 0) then Cjc*(1 + Mc*vbc/Phic) else Cjc*pow(1 - vbc 
     482      /Phic, -Mc)); 
     483    Capcje = noEvent(if (vbe/Phie > 0) then Cje*(1 + Me*vbe/Phie) else Cje*pow(1 - vbe 
     484      /Phie, -Me)); 
     485    cbc = noEvent(if (vbc/Vt < EMin) then Taur*Is/Vt*ExMin*(vbc/Vt - EMin + 1) + 
    486486      Capcjc else if (vbc/Vt > EMax) then Taur*Is/Vt*ExMax*(vbc/Vt - EMax + 1) 
    487        + Capcjc else Taur*Is/Vt*exp(vbc/Vt) + Capcjc; 
    488     cbe = if (vbe/Vt < EMin) then Tauf*Is/Vt*ExMin*(vbe/Vt - EMin + 1) + 
     487       + Capcjc else Taur*Is/Vt*exp(vbc/Vt) + Capcjc); 
     488    cbe = noEvent(if (vbe/Vt < EMin) then Tauf*Is/Vt*ExMin*(vbe/Vt - EMin + 1) + 
    489489      Capcje else if (vbe/Vt > EMax) then Tauf*Is/Vt*ExMax*(vbe/Vt - EMax + 1) 
    490        + Capcje else Tauf*Is/Vt*exp(vbe/Vt) + Capcje; 
     490       + Capcje else Tauf*Is/Vt*exp(vbe/Vt) + Capcje); 
    491491    C.i = (ibe - ibc)*qbk - ibc/Br - cbc*der(vbc) + Ccs*der(C.v); 
    492492    B.i = ibe/Bf + ibc/Br + cbc*der(vbc) + cbe*der(vbe); 
     
    604604    qbk = 1 - vbc*Vak; 
    605605     
    606     ibc = if (vbc/Vt < EMin) then Is*(ExMin*(vbc/Vt - EMin + 1) - 1) + vbc*Gbc else  
     606    ibc = noEvent(if (vbc/Vt < EMin) then Is*(ExMin*(vbc/Vt - EMin + 1) - 1) + vbc*Gbc else  
    607607            if (vbc/Vt > EMax) then Is*(ExMax*(vbc/Vt - EMax + 1) - 1) + vbc* 
    608       Gbc else Is*(exp(vbc/Vt) - 1) + vbc*Gbc; 
    609      
    610     ibe = if (vbe/Vt < EMin) then Is*(ExMin*(vbe/Vt - EMin + 1) - 1) + vbe*Gbe else  
     608      Gbc else Is*(exp(vbc/Vt) - 1) + vbc*Gbc); 
     609     
     610    ibe = noEvent(if (vbe/Vt < EMin) then Is*(ExMin*(vbe/Vt - EMin + 1) - 1) + vbe*Gbe else  
    611611            if (vbe/Vt > EMax) then Is*(ExMax*(vbe/Vt - EMax + 1) - 1) + vbe* 
    612       Gbe else Is*(exp(vbe/Vt) - 1) + vbe*Gbe; 
    613      
    614     Capcjc = if (vbc/Phic > 0) then Cjc*(1 + Mc*vbc/Phic) else Cjc*pow(1 - vbc 
    615       /Phic, -Mc); 
    616     Capcje = if (vbe/Phie > 0) then Cje*(1 + Me*vbe/Phie) else Cje*pow(1 - vbe 
    617       /Phie, -Me); 
    618     cbc = if (vbc/Vt < EMin) then Taur*Is/Vt*ExMin*(vbc/Vt - EMin + 1) + 
     612      Gbe else Is*(exp(vbe/Vt) - 1) + vbe*Gbe); 
     613     
     614    Capcjc = noEvent(if (vbc/Phic > 0) then Cjc*(1 + Mc*vbc/Phic) else Cjc*pow(1 - vbc 
     615      /Phic, -Mc)); 
     616    Capcje = noEvent(if (vbe/Phie > 0) then Cje*(1 + Me*vbe/Phie) else Cje*pow(1 - vbe 
     617      /Phie, -Me)); 
     618    cbc = noEvent(if (vbc/Vt < EMin) then Taur*Is/Vt*ExMin*(vbc/Vt - EMin + 1) + 
    619619      Capcjc else if (vbc/Vt > EMax) then Taur*Is/Vt*ExMax*(vbc/Vt - EMax + 1) 
    620        + Capcjc else Taur*Is/Vt*exp(vbc/Vt) + Capcjc; 
    621     cbe = if (vbe/Vt < EMin) then Tauf*Is/Vt*ExMin*(vbe/Vt - EMin + 1) + 
     620       + Capcjc else Taur*Is/Vt*exp(vbc/Vt) + Capcjc); 
     621    cbe = noEvent(if (vbe/Vt < EMin) then Tauf*Is/Vt*ExMin*(vbe/Vt - EMin + 1) + 
    622622      Capcje else if (vbe/Vt > EMax) then Tauf*Is/Vt*ExMax*(vbe/Vt - EMax + 1) 
    623        + Capcje else Tauf*Is/Vt*exp(vbe/Vt) + Capcje; 
     623       + Capcje else Tauf*Is/Vt*exp(vbe/Vt) + Capcje); 
    624624    C.i = -((ibe - ibc)*qbk - ibc/Br - cbc*der(vbc) - Ccs*der(C.v)); 
    625625    B.i = -(ibe/Bf + ibc/Br + cbe*der(vbe) + cbc*der(vbc)); 
     
    11751175          vt_t = (K/q)*heatPort.T; 
    11761176     
    1177           ibc = if (vbc/(NR*vt_t) < EMin) then is_t*(ExMin*(vbc/(NR*vt_t) - 
     1177          ibc = noEvent(if (vbc/(NR*vt_t) < EMin) then is_t*(ExMin*(vbc/(NR*vt_t) - 
    11781178            EMin + 1) - 1) + vbc*Gbc else if (vbc/(NR*vt_t) > EMax) then is_t*( 
    11791179            ExMax*(vbc/(NR*vt_t) - EMax + 1) - 1) + vbc*Gbc else is_t*(exp(vbc/ 
    1180             (NR*vt_t)) - 1) + vbc*Gbc; 
    1181           ibe = if (vbe/(NF*vt_t) < EMin) then is_t*(ExMin*(vbe/(NF*vt_t) - 
     1180            (NR*vt_t)) - 1) + vbc*Gbc); 
     1181          ibe = noEvent(if (vbe/(NF*vt_t) < EMin) then is_t*(ExMin*(vbe/(NF*vt_t) - 
    11821182            EMin + 1) - 1) + vbe*Gbe else if (vbe/(NF*vt_t) > EMax) then is_t*( 
    11831183            ExMax*(vbe/(NF*vt_t) - EMax + 1) - 1) + vbe*Gbe else is_t*(exp(vbe/ 
    1184             (NF*vt_t)) - 1) + vbe*Gbe; 
    1185           Capcjc = if (vbc/Phic > 0) then Cjc*(1 + Mc*vbc/Phic) else Cjc*pow(1 
    1186              - vbc/Phic, -Mc); 
    1187           Capcje = if (vbe/Phie > 0) then Cje*(1 + Me*vbe/Phie) else Cje*pow(1 
    1188              - vbe/Phie, -Me); 
    1189           cbc = if (vbc/(NR*vt_t) < EMin) then Taur*is_t/(NR*vt_t)*ExMin*(vbc/( 
     1184            (NF*vt_t)) - 1) + vbe*Gbe); 
     1185          Capcjc = noEvent(if (vbc/Phic > 0) then Cjc*(1 + Mc*vbc/Phic) else Cjc*pow(1 
     1186             - vbc/Phic, -Mc)); 
     1187          Capcje = noEvent(if (vbe/Phie > 0) then Cje*(1 + Me*vbe/Phie) else Cje*pow(1 
     1188             - vbe/Phie, -Me)); 
     1189          cbc = noEvent(if (vbc/(NR*vt_t) < EMin) then Taur*is_t/(NR*vt_t)*ExMin*(vbc/( 
    11901190            NR*vt_t) - EMin + 1) + Capcjc else if (vbc/(NR*vt_t) > EMax) then  
    11911191            Taur*is_t/(NR*vt_t)*ExMax*(vbc/(NR*vt_t) - EMax + 1) + Capcjc else  
    1192             Taur*is_t/(NR*vt_t)*exp(vbc/(NR*vt_t)) + Capcjc; 
    1193           cbe = if (vbe/(NF*vt_t) < EMin) then Tauf*is_t/(NF*vt_t)*ExMin*(vbe/( 
     1192            Taur*is_t/(NR*vt_t)*exp(vbc/(NR*vt_t)) + Capcjc); 
     1193          cbe = noEvent(if (vbe/(NF*vt_t) < EMin) then Tauf*is_t/(NF*vt_t)*ExMin*(vbe/( 
    11941194            NF*vt_t) - EMin + 1) + Capcje else if (vbe/(NF*vt_t) > EMax) then  
    11951195            Tauf*is_t/(NF*vt_t)*ExMax*(vbe/(NF*vt_t) - EMax + 1) + Capcje else  
    1196             Tauf*is_t/(NF*vt_t)*exp(vbe/(NF*vt_t)) + Capcje; 
     1196            Tauf*is_t/(NF*vt_t)*exp(vbe/(NF*vt_t)) + Capcje); 
    11971197          C.i = (ibe - ibc)*qbk - ibc/br_t - cbc*der(vbc) + Ccs*der(C.v); 
    11981198          B.i = ibe/bf_t + ibc/br_t + cbc*der(vbc) + cbe*der(vbe); 
     
    13481348          vt_t = (K/q)*heatPort.T; 
    13491349     
    1350           icb = if (vcb/(NR*vt_t) < EMin) then is_t*(ExMin*(vcb/(NR*vt_t) - 
     1350          icb = noEvent(if (vcb/(NR*vt_t) < EMin) then is_t*(ExMin*(vcb/(NR*vt_t) - 
    13511351            EMin + 1) - 1) + vcb*Gbc else if (vcb/(NR*vt_t) > EMax) then is_t*( 
    13521352            ExMax*(vcb/(NR*vt_t) - EMax + 1) - 1) + vcb*Gbc else is_t*(exp(vcb/ 
    1353             (NR*vt_t)) - 1) + vcb*Gbc; 
    1354      
    1355           ieb = if (veb/(NF*vt_t) < EMin) then is_t*(ExMin*(veb/(NF*vt_t) - 
     1353            (NR*vt_t)) - 1) + vcb*Gbc); 
     1354     
     1355          ieb = noEvent(if (veb/(NF*vt_t) < EMin) then is_t*(ExMin*(veb/(NF*vt_t) - 
    13561356            EMin + 1) - 1) + veb*Gbe else if (veb/(NF*vt_t) > EMax) then is_t*( 
    13571357            ExMax*(veb/(NF*vt_t) - EMax + 1) - 1) + veb*Gbe else is_t*(exp(veb/ 
    1358             (NF*vt_t)) - 1) + veb*Gbe; 
    1359      
    1360           Capcjc = if (vcb/Phic > 0) then Cjc*(1 + Mc*vcb/Phic) else Cjc*pow(1 
    1361              - vcb/Phic, -Mc); 
    1362           Capcje = if (veb/Phie > 0) then Cje*(1 + Me*veb/Phie) else Cje*pow(1 
    1363              - veb/Phie, -Me); 
    1364           ccb = if (vcb/(NR*vt_t) < EMin) then Taur*is_t/(NR*vt_t)*ExMin*(vcb/( 
     1358            (NF*vt_t)) - 1) + veb*Gbe); 
     1359     
     1360          Capcjc = noEvent(if (vcb/Phic > 0) then Cjc*(1 + Mc*vcb/Phic) else Cjc*pow(1 
     1361             - vcb/Phic, -Mc)); 
     1362          Capcje = noEvent(if (veb/Phie > 0) then Cje*(1 + Me*veb/Phie) else Cje*pow(1 
     1363             - veb/Phie, -Me)); 
     1364          ccb = noEvent(if (vcb/(NR*vt_t) < EMin) then Taur*is_t/(NR*vt_t)*ExMin*(vcb/( 
    13651365            NR*vt_t) - EMin + 1) + Capcjc else if (vcb/(NR*vt_t) > EMax) then  
    13661366            Taur*is_t/(NR*vt_t)*ExMax*(vcb/(NR*vt_t) - EMax + 1) + Capcjc else  
    1367             Taur*is_t/(NR*vt_t)*exp(vcb/(NR*vt_t)) + Capcjc; 
    1368           ceb = if (veb/(NF*vt_t) < EMin) then Tauf*is_t/(NF*vt_t)*ExMin*(veb/( 
     1367            Taur*is_t/(NR*vt_t)*exp(vcb/(NR*vt_t)) + Capcjc); 
     1368          ceb = noEvent(if (veb/(NF*vt_t) < EMin) then Tauf*is_t/(NF*vt_t)*ExMin*(veb/( 
    13691369            NF*vt_t) - EMin + 1) + Capcje else if (veb/(NF*vt_t) > EMax) then  
    13701370            Tauf*is_t/(NF*vt_t)*ExMax*(veb/(NF*vt_t) - EMax + 1) + Capcje else  
    1371             Tauf*is_t/(NF*vt_t)*exp(veb/(NF*vt_t)) + Capcje; 
     1371            Tauf*is_t/(NF*vt_t)*exp(veb/(NF*vt_t)) + Capcje); 
    13721372          C.i = icb/br_t + ccb*der(vcb) + Ccs*der(C.v) + (icb - ieb)*qbk; 
    13731373          B.i = -ieb/bf_t - icb/br_t - ceb*der(veb) - ccb*der(vcb);