シミュレーションの演習のコード
GS10.BGSのコードを以下に示します。このコードは BGSP用です。第1行の
BOND SYMBOL EXPR OUT DEFIN PARM INIT
はコードの一部ですから省略してはいけません。また、BGSPではカラム指定が厳格で1カラムでもずれるとエラーになります。また、許される文字は英数字、コロン(:)、スラッシュ(/)、加減乗算記号(+-*)、半角空白のみであり、制御文字が入るとエラーになります。倍角の空白はエラーを生じますが、ソースをプリントしても気づきにくいので注意が必要です。
GS10のコード
BOND SYMBOL EXPR OUT DEFIN PARM INIT
SE1 10
OJ -10 12 11
RE1 12
ZJ -11 13 15 19
CI1 13
RE2 15
TF1 19 21
OJ -21 23 22 24 25
RE3 22
II1 24
CI2 23
SE2 25
/
BC: P10 EF10
BC: P13 EF13
BC: X245 DP24
/
SE1
PA: PSLW 6.000D-01
F=PSLW
EOD
CI1
PA: PC1 4.300D-01
C=Z/PC1
EOD
RE1
PA: PR1 4.000D-06
R=Z/PCLR
EOD
RE2
PA: PR2 1.000D+36
R=Z/PR2
EOD
TF1
PA: PTF1 9.000D+01
TF=PTF1
EOD
RE3
PA: PR3 3.0000D-01
R=Z*PR2
EOD
CI2
PA: PC21 2.300D+36
PA: PC22 8.333D-01
PA: PC23 7.000D+01
PA: PC24 -2.260D+01
PA: PC25 4.500D+02
PA: PC26 -1.556D+02
IF(C.LE.0.0)THEN
ZZ=0.0
ELSEIF(C.LE.1.000D-36)THEN
ZZ=C*PC21
ELSEIF(C.LE.0.36)THEN
ZZ=PC22*C
ELSEIF(C.LE.0.38)THEN
ZZ=PC23*C+PC24
ELSEIF(C.LE.0.41)THEN
ZZ=PC25*C+PC26
ELSE
ZZ=16.6
ENDIF
C=ZZ
EOD
II1
PA: PI1 1.000D+00
L=Z/PI1
EOD
SE2
PA: PS2 4.000D-01
PA: PS3 0.000D+00
FB: XPI DP24
FB: XPI2 MN24
FB: XP2 EF23
FB: XP3 EF22
FB: XP4 EF21
XPX=XP4-XP2-XP3
IF(XPI.LT.PS3)THEN
XPI=PS3
XPI2=PS3
E=-XPX
ELSEIF(XPI.GT.PS2)THEN
XPI=PS2
XPI2=PS3
E=-XPX
ELSE
E=PS3
ENDIF
EOD
/
0.00 5.00D-00 1.000D-05 3000
/
20-Simによるシミュレーション
Se10
parameters
real effort = 6.0e-1;
real t1=0.1;
variables
real flow;
equations
if time >=t1 then
p.e = effort;
flow = p.f;
else
p.e=0.0;
flow=0.0;
end;
R12
parameters
real r1 = 4.0e-5;
equations
p.f = p.e/r1;
C13
parameters
real c = 4.3e-1;
equations
state = int(p.f);
p.e = state / c;
R15
parameters
real r2 = 1.0e36;
equations
p.f = p.e/r2;
TF1921
parameters
real r = 9.0e1;
equations
p1.e = p2.e/r;
p2.f = p1.f/r;
R22
parameters
real r = 0.3;
equations
p.e = r * p.f;
Integrate
parameters
real initial = 0; // initial value
equations
output = int (input, initial);
I241
parameters
real i = 1;
real lm=1.0e36;
real lm2=0.4;
equations
state = int(p.e);
if port1 > lm2 then
p.f=state/i/lm;
else
p.f=state/i;
end;
C231
parameters
real c = 1 {N/m};
variables
real zx;
equations
zx= int(p.f)/c;//ZX:Effort
input=zx;
p.e= port2;
Table
parameters
string filename= 'J:\20-Sim\Simtec\GS10.txt';
equations
output = table (filename, input);
GS10.txt
-10.000e36 0.000
0.0000 0.000
1.0000e-36 2.300
0.3600000 2.600
0.380000 4.000
0.410000 16.6000
1.000e36 16.6000
