シミュレーションの演習のコード
GS20.BGSのコードを以下に示します。このコードは BGSP用です。第1行の
BOND SYMBOL EXPR OUT DEFIN PARM INIT
はコードの一部ですから省略してはいけません。また、BGSPではカラム指定が厳格で1カラムでもずれるとエラーになります。また、許される文字は英数字、コロン(:)、スラッシュ(/)、加減乗算記号(+-*)、半角空白のみであり、制御文字が入るとエラーになります。倍角の空白はエラーを生じますが、ソースをプリントしても気づきにくいので注意が必要です。
GS20のコード
BOND SYMBOL EXPR OUT DEFIN PARM INIT
SE11 11
OJ -11 12 121
ZJ -121 19 32 33
RE32 32
CI33 33
RE12 12
TF19 19 21
OJ -21 24 22 23 234
II24 24
SE234 234
RE22 22
CI23 23
/
BC: P33 EF33
BC: Q12 FL12
BC: PL EF33
BC: PL2 EF12
BC: FL FL32
OP: X231
RV: XXRR
OP=XXRR
EOD
OP: X232
RV: XXR2
OP=XXR2
EOD
/
SE11
PA: PSE1 1.000D+00
E=PSE1
EOD
RE32
PA: PRE1 1.0000D+03
PA: PT01 5.0000D-01
IF(T.LE.PT01)THEN
R=Z*PRE1
ELSE
R=Z*PRE1*0.3
ENDIF
EOD
CI33
PA: PCE1 2.0000D+02
C=Z/PCE1
EOD
TF19
PA: PT1 3.14
TF=1/PT1
EOD
II24
PA: PI1 3.0000D-05
L=Z/PI1
EOD
RE22
PA: PRE2 5.0000D-03
R=PRE2*Z
EOD
SE234
PA: PSE2 1.8800D+00
E=PSE2
EOD
CI23
PA: PCE2 1.0000D+00
PA: POP1 -5.000D-01
PA: POP2 6.2800D+00
PA: POP3 0.0000D+00
PA: POP4 5.0000D-01
PA: POP5 -5.000D-01
PA: POP6 1.5700D-01
PA: POP7 1.2560D+01
PA: POP8 3.1400D-01
PA: POP9 1.2246D+01
PA: PO10 -5.9660D+00
RV: XXRR
C=Z/PCE2
ZZ=C
XXRR=ZZ
IF(ZZ.LE.POP5)THEN
C=-POP2
ELSEIF(ZZ.LE.POP3)THEN
C=POP7*ZZ
ELSEIF(ZZ.LE.POP4)THEN
C=POP8*ZZ
ELSEIF(ZZ.LE.1.0)THEN
C=POP9*ZZ+PO10
ELSE
C=POP2
ENDIF
EOD
RE12
PA: PRE5 8.000D+03
PA: PRX1 -0.5000D+00
PA: PRX2 0.50000D+00
PA: PRX3 0.00000D+00
PA: PRX4 1.00000D+00
RV: XXRR
RV: XXR2
IF(XXRR.LE.PRX3)THEN
XXR2=PRX2
ELSEIF(XXRR.LE.PRX2)THEN
XXR2=-XXRR+PRX2
ELSE
XXR2=PRX3
ENDIF
R=Z*PRE5*XXR2
EOD
/
0.0000 1.000D-00 1.000D-8 4000
/
20-Simによるシミュレーションのコード
Se11
parameters
real effort = 1.0000;
variables
real flow;
equations
p.e = effort;
flow = p.f;
Time
equations
output = time;
R32
parameters
real pre1=1.000e+03;
real pt01=5.000e-01;
equations
p.f =if output <= pt01 then
pre1* p.e
else
p.e*pre1*0.3
end;
CI33
parameters
real pce1 = 2.000e+02;
equations
state = int(p.f);
p.e = state / pce1;
TF1921
parameters
real pt1= 3.14;
equations
p1.e = p2.e/pt1;
p2.f = p1.f/pt1;
R22
parameters
real pre22=5.000e-03;
equations
p.e = pre22 * p.f;
I24
parameters
real pi1=3.000e-05;
equations
state = int(p.e);
p.f = state / pi1;
Se234
parameters
real pse2=-1.8800e+00;
equations
p.e = pse2;
C23
parameters
real pcp1=1.0000;
real pcp2=6.2800e+00;
real pcp3=0.000e+00;
real pcp4=5.000e-01;
real pcp5=-5.000e-01;
real pcp6=1.5700e-01;
real pcp7=1.2560e+01;
real pcp8=3.1400e-01;
real pcp9=1.22460e+01;
real pcp10=-5.9660e+00;
variables
real zz;
equations
state = int(p.f);
zz=state/pcp1;
port1=zz;
p.e = if zz <= pcp5 then
-pcp2
else if zz <= pcp3 then
pcp7*zz
else if zz <=pcp4 then
pcp8*zz
else if zz <=pcp2 then
pcp9*zz+pcp10
else
pcp2
end
end
end
end;
R12
parameters
real pre5=8.000e+03;
real prx2=0.5000e+00;
real prx3=0.000e+00;
variables
real zz;
equations
zz=if port1 <= prx3 then
prx2
else if port1 <= prx2 then
-port1+prx2
else
prx3
end
end;
p.f=p.e*pre5*zz;
