[scicos_blocks] Capacitor Inductor Resistor: issue with ยต unit on icons
[scilab.git] / scilab / modules / scicos_blocks / macros / Electrical / Capacitor.sci
1 //  Scicos
2 //
3 // Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
4 // Copyright (C) 2018 - Samuel GOUGEON
5 //
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
10 //
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 //
20 // See the file ../license.txt
21 //
22
23 function [x,y,typ]=Capacitor(job,arg1,arg2)
24     // exemple d'un bloc implicit,
25     //   -  sans entree ni sortie de conditionnement
26     //   -  avec une entree et une sortie de type implicit et de dimension 1
27     //   - avec un dialogue de saisie de parametre
28     x=[];
29     y=[];
30     typ=[];
31     select job
32     case "set" then
33         x=arg1;
34         graphics=arg1.graphics;
35         exprs=graphics.exprs
36         model=arg1.model;
37         while %t do
38             [ok,C,v,exprs]=scicos_getvalue("Set Capacitor block parameter",..
39             ["C (F)";"Initial Voltage"],list("vec",1,"vec",1),exprs)
40             if ~ok then
41                 break,
42             end
43             model.rpar=C
44             model.equations.parameters(2)=list(C,v)
45             graphics.exprs=exprs
46
47             // Updating the icon according to the Capacity value:
48             v = evstr(exprs(1));
49             if v>=1e-11 & v<1e-8
50                 sv = msprintf("%d\\:p\n",v*1e12)
51             elseif v>=1e-8 & v<1e-5
52                 sv = msprintf("%d\\:n\n",v*1e9)
53             elseif v>=1e-5 & v<1e-2
54                 sv = msprintf("%d\\:\\mu \n",v*1e6)
55             elseif v>=1e-2 & v<10
56                 sv = msprintf("%d\\:m\n",v*1000)
57             elseif v>=10 & v<10000
58                 sv = msprintf("%d\\:\n",v)
59             elseif v>=1e4 & v<1e7
60                 sv = msprintf("%d\\:k\n",v/1000)
61             else
62                 p = floor(log10(v));
63                 v = v/(10^p);
64                 sv = msprintf("%3.1f\\,10^{%d}\\,\n",v,p)
65             end
66             lab = "Capacitor;displayedLabel=" + ..
67             "$\mathsf{\,\\\,\\\,\\\,\\\,\\\,\\\,\,\\\tiny{\!"+sv+"F}}$"
68             graphics.style = lab;
69             x.graphics=graphics;
70
71             x.model=model
72             break
73         end
74     case "define" then
75         model=scicos_model()
76         C=0.01,v=0
77         model.rpar=[C;v]
78         model.sim="Capacitor"
79         model.blocktype="c"
80         model.dep_ut=[%t %f]
81         mo=modelica()
82         mo.model="Capacitor"
83         mo.inputs="p";
84         mo.outputs="n";
85         mo.parameters=list(["C","v"],list(C,v),[0,1])
86         model.equations=mo
87         model.in=ones(size(mo.inputs,"*"),1)
88         model.out=ones(size(mo.outputs,"*"),1)
89
90         exprs=string([C;v])
91         gr_i=[];
92         x=standard_define([2 2],model,exprs,list(gr_i,0))
93         x.graphics.in_implicit=["I"]
94         x.graphics.out_implicit=["I"]
95     end
96 endfunction