シミュレーションの演習のコード
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;