37272fac3942d263e6832b78294c8e3a7e62a045
[scilab.git] / scilab / modules / scicos_blocks / macros / Electrical / NPN.sci
1 //  Scicos
2 //
3 //  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 //
19 // See the file ../license.txt
20 //
21
22 function [x,y,typ]=NPN(job,arg1,arg2)
23     // the automatically generated interface block for Modelica NPN.mo model
24     //   - avec un dialogue de saisie de parametre
25     x=[];
26     y=[];
27     typ=[];
28     select job
29     case "set" then
30         x=arg1;
31         graphics=arg1.graphics;
32         exprs=graphics.exprs
33         model=arg1.model;
34         x=arg1
35         exprs=x.graphics.exprs
36         while %t do
37             [ok,Bf,Br,Is,Vak,Tauf,Taur,Ccs,Cje,Cjc,Phie,Me,Phic,Mc,Gbc,Gbe,Vt,EMinMax,exprs]=scicos_getvalue(["Set NPN block parameters:";""],["Bf  : Forward beta";"Br  : Reverse beta";"Is  : Transport saturation current";"Vak : Early voltage (inverse), 1/Volt";"Tauf: Ideal forward transit time";"Taur: Ideal reverse transit time";"Ccs : Collector-substrat(ground) cap.";"Cje : Base-emitter zero bias depletion cap.";"Cjc : Base-coll. zero bias depletion cap.";"Phie: Base-emitter diffusion voltage";"Me  : Base-emitter gradation exponent";"Phic: Base-collector diffusion voltage";"Mc  : Base-collector gradation exponent";"Gbc : Base-collector conductance";"Gbe : Base-emitter conductance";"Vt  : Voltage equivalent of temperature";"EMinmax: if x > EMinMax, the exp(x) is linearized"],list("vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",1),exprs)
38             if ~ok then break,end
39             x.model.equations.parameters(2)=list(Bf,Br,Is,Vak,Tauf,Taur,Ccs,Cje,Cjc,Phie,Me,Phic,Mc,Gbc,Gbe,Vt,EMinMax)
40             x.graphics.exprs=exprs
41             break
42         end
43     case "define" then
44         ModelName="NPN"
45         PrametersValue=[50;0.1;0;0.02;1.200D-10;5.000D-09;1.000D-12;4.000D-13;5.000D-13;0.8;0.4;0.8;0.333;1.000D-15;1.000D-15;0.02585;40]
46         ParametersName=["Bf";"Br";"Is";"Vak";"Tauf";"Taur";"Ccs";"Cje";"Cjc";"Phie";"Me";"Phic";"Mc";"Gbc";"Gbe";"Vt";"EMinMax"]
47         model=scicos_model()
48         Typein=[];
49         Typeout=[];
50         MI=[];
51         MO=[]
52         P=[100,90,-2,0; 0,50,2,0; 100,10,-2,0]
53         PortName=["C";"B";"E"]
54         for i=1:size(P,"r")
55             if P(i,3)==1  then
56                 Typein= [Typein; "E"];
57                 MI=[MI;PortName(i)];
58             end
59             if P(i,3)==2  then
60                 Typein= [Typein; "I"];
61                 MI=[MI;PortName(i)];
62             end
63             if P(i,3)==-1 then
64                 Typeout=[Typeout;"E"];
65                 MO=[MO;PortName(i)];
66             end
67             if P(i,3)==-2 then
68                 Typeout=[Typeout;"I"];
69                 MO=[MO;PortName(i)];
70             end
71         end
72         model=scicos_model()
73         mo=modelica()
74         model.sim=ModelName;
75         mo.inputs=MI;
76         mo.outputs=MO;
77         model.rpar=PrametersValue;
78         mo.parameters=list(ParametersName,PrametersValue,zeros(ParametersName));
79         exprs=["50";"0.1";"1.e-16";"0.02";"0.12e-9";"5e-9";"1e-12";"0.4e-12";"0.5e-12";"0.8";"0.4";"0.8";"0.333";"1e-15";"1e-15";"0.02585";"40"]
80         gr_i=[]
81         model.blocktype="c"
82         model.dep_ut=[%f %t]
83         mo.model=ModelName
84         model.equations=mo
85         model.in=ones(size(MI,"*"),1)
86         model.out=ones(size(MO,"*"),1)
87         x=standard_define([2,2],model,exprs,list(gr_i,0))
88         x.graphics.in_implicit=Typein;
89         x.graphics.out_implicit=Typeout;
90     end
91 endfunction