シミュレーションの演習のコード
BGSPによるコード
GS1.BGSのコードを以下に示します。このコードは BGSP用です。第1行の
BOND SYMBOL EXPR OUT DEFIN PARM INIT
はコードの一部ですから省略してはいけません。また、BGSPではカラム指定が厳格で1カラムでもずれるとエラーになります。また、許される文字は英数字、コロン(:)、スラッシュ(/)、加減乗算記号(+-*)、半角空白のみであり、制御文字が入るとエラーになります。倍角の空白はエラーを生じますが、ソースをプリントしても気づきにくいので注意が必要です。
GS1のコード
BOND SYMBOL EXPR OUT DEFIN PARM INIT
SF1 11
ZJ -11 8 13
RE1 13
OJ -8 12 17 9
II1 12
RE2 17
ZJ -9 10 14 15
CI1 14
RE3 15
OJ -10 16 18 19
II2 16
RE4 18
TF1 19 21
ZJ -21 24 22
CI2 24
OJ -22 26 23
II3 26
RE5 23
/
BC: FL1 FL11
BC: XI EF11
BC: W12 FL12
BC: W16 FL16
BC: F17 FL17
BC: M13 EF13
BC: M14 EF14
BC: F13 FL13
BC: E15 EF15
BC: F15 FL15
BC: F16 FL16
BC: V26 FL26
/
SF1
PA: PF1 1.57D+02
F=PF1
EOD
II1
PA: PI1 4.8000D-02
L=Z/PI1
EOD
II2
PA: PI2 6.000D-03
L=Z/PI2
EOD
II3
PA: PI3 7.8000D+03
L=Z/PI3
EOD
RE3
PA: PR1 1.000D+00
PA: PR2 1.4933D+01
PA: PR3 2.2300D+02
PA: PR4 1.4933D+01
PA: PRX1 6.6667D-02
PA: PRX2 1.4933D+01
PA: PRX3 -2.230D+02
IF(Z.LE.-30)THEN
GZ=-225.0
ELSEIF(Z.LE.-15.0)THEN
GZ=Z*PR2+PR3
ELSEIF(Z.LE.15.0)THEN
GZ=PRX1*Z
ELSEIF(Z.LE.30.0)THEN
GZ=Z*PRX2+PRX3
ELSE
GZ=225.0
ENDIF
R=GZ
EOD
RE2
PA: PR5 3.1800D-03
R=PR5*Z
EOD
RE1
PA: PR61 1.333D-01
PA: PR62 9.0323D-02
PA: PR63 3.2258D-01
PA: PR64 1.1111D-02
PA: PR65 2.1444D+00
PA: PR66 -1.000D-02
PA: PR67 2.8200D+00
PA: PR68 -2.222D-02
PA: PR69 3.33333D+00
PA: PR70 -3.2258D-02
PA: PR71 3.93548D+00
PA: PR72 -8.16327D-03
PA: PR73 1.74286D+00
PA: PR80 1.00000D+01
IF(Z.LE.-7.5)THEN
RR=-1.0
ELSEIF(Z.LE.7.5)THEN
RR=PR61*Z
ELSEIF(Z.LE.23.0)THEN
RR=PR62*Z+PR63
ELSEIF(Z.LE.32.0)THEN
RR=PR64*Z+PR65
ELSEIF(Z.LE.42.0)THEN
RR=PR66*Z+PR67
ELSEIF(Z.LE.60.0)THEN
RR=PR68*Z+PR69
ELSEIF(Z.LE.91.0)THEN
RR=PR70*Z+PR71
ELSEIF(Z.LE.140.0)THEN
RR=PR72*Z+PR73
ELSE
RR=0.6
ENDIF
R=RR*PR80
EOD
RE4
PA: PR74 3.1800D-03
R=PR74*Z
EOD
RE5
PA: PR75 6.9000D+02
R=PR75*Z
EOD
CI1
PA: PC1 1.000D-02
C=Z/PC1
EOD
CI2
PA: PC2 2.660D-05
C=Z/PC2
EOD
TF1
PA: PT1 4.1800D-03
TF=PT1
EOD
/
0.0000 4.000D+00 1.000D-05 2000
/
20-Simによるコード
Sf
parameters
real flow = 1.5e2;
variables
real effort;
equations
p.f = flow;
effort = p.e;
R131
parameters
real pr61 = 1.333e-1;
real pr62=9.0323e-2;
real pr63=3.2258e-1;
real pr64=1.1111e-2;
real pr65=2.1444e0;
real pr66=-1.000e-2;
real pr67=2.82e0;
real pr68=-2.222e-2;
real pr69=3.3333e0;
real pr70=-3.32258e-2;
real pr71=3.93548e0;
real pr72=-8.16327e-3;
real pr73=1.74286e0;
real pr80=1.0e1;
variables
real rr;
equations
rr=if p.f <= -7.5 then
-1.0
else if p.f <= 7.5 then
p.f*pr61
else if p.f <= 23.0 then
pr62*p.f+pr63
else if p.f <=32.0 then
p.f*pr64+pr65
else if p.f <= 42.0 then
pr66*p.f+pr67
else if p.f <= 60.0 then
pr68*p.f+pr69
else if p.f <=91.0 then
pr70*p.f +pr71
else if p.f <=140.0 then
pr72*p.f+pr73
else
0.6
end
end
end
end
end
end
end
end;
p.e=rr*pr80;
I12
parameters
real m1= 4.8e-2;
equations
state = int(p.e);
p.f = state / m1;
R17
parameters
real pr5= 3.18e-3;
equations
p.e = pr5* p.f;
C14
parameters
real pc1= 1.0e-2;
equations
state = int(p.f);
p.e = state / pc1;
R151
parameters
real pr2=1.4933e1;
real pr3=2.23e2;
real pr4=1.4933e1;
real prx1=6.667e-2;
real prx2=1.4933e1;
real prx3=-2.23e2;
equations
p.f=if p.e <= -30 then
-225.0
else if p.e <= -15 then
p.e *pr2+pr3
else if p.e <= 15 then
prx1*p.e
else if p.e <= 30 then
p.e*prx2+prx3
else
225.0
end
end
end
end;
I16
parameters
real m2 = 6.0e-3;
equations
state = int(p.e);
p.f = state / m2;
R18
parameters
real pr74= 3.18e-3;
equations
p.e =pr74 * p.f;
TF
parameters
real pt1 = 4.13e-3;
equations
p1.e = pt1 * p2.e;
p2.f = pt1 * p1.f;
C24
parameters
real pc2 = 2.66e-5;
equations
state = int(p.f);
p.e = state / pc2;
I26
parameters
real m3 = 7.8e3;
equations
state = int(p.e);
p.f = state / m3;
R23
parameters
real pr75= 6.9e2;
equations
p.e = pr75 * p.f;
20-Simによるブロックボンドグラフのコード
BlockBond131
parameters
string filename= 'J:\20-sim\Simtec\GS1A.txt';
equations
r = table (filename, input);
parameters
string filename= 'J:\20-sim\Simtec\GS1A1.txt';
equations
r2= table (filename, input);
C14
parameters
real pc1= 1.0e-2;
equations
state = int(p.f);
p.e = state / pc1;
C24
parameters
real pc2 = 2.66e-5;
equations
state = int(p.f);
p.e = state / pc2;
I12
parameters
real m1= 4.8e-2;
equations
state = int(p.e);
p.f = state / m1;
I15
parameters
real m2 = 6.0e-3;
equations
state = int(p.e);
p.f = state / m2;
I25
parameters
real m3 = 7.8e3;
equations
state = int(p.e);
p.f = state / m3;
MR131
equations
port1=p.f;
p.e = r*10.0 ;;
MR151
equations
p.f=r2;;
R17
parameters
real pr5= 3.18e-3;
equations
p.e = pr5* p.f;
R18
parameters
real pr74= 3.18e-3;
equations
p.e =pr74 * p.f;
R23
parameters
real pr75= 6.9e2;
equations
p.e = pr75 * p.f;
Sf
parameters
real flow = 1.5e2;
variables
real effort;
equations
p.f = flow;
effort = p.e;
TF
parameters
real pt1 = 4.13e-3;
equations
p1.e = pt1 * p2.e;
p2.f = pt1 * p1.f;
BlockBond131
GS1A.txt
-7.5 -1.0
0.0 0.0
7.5 1.000
23.0 2.400
32.0 2.500
42.0 2.400
60.0 2.000
91.0 1.000
140.0 0.6000
157.0 0.6000
BlockBond151
GS1A1.txt
-30.0 -225.0
-15.0 -1.00
15.00 1.000
30.000 226.000
