シミュレーションの演習のコード
GS15.BGSのコードを以下に示します。このコードは BGSP用です。第1行の
BOND SYMBOL EXPR OUT DEFIN PARM INIT
はコードの一部ですから省略してはいけません。また、BGSPではカラム指定が厳格で1カラムでもずれるとエラーになります。また、許される文字は英数字、コロン(:)、スラッシュ(/)、加減乗算記号(+-*)、半角空白のみであり、制御文字が入るとエラーになります。倍角の空白はエラーを生じますが、ソースをプリントしても気づきにくいので注意が必要です。
GS15のコード
BOND SYMBOL EXPR OUT DEFIN PARM INIT SF1 11 ZJ -11 13 14 142 143 144 OJ -142 232 242 222 148 RE6 13 CI4 14 RE3 232 CI2 242 II1 222 TF1 143 271 OJ -271 231 241 221 149 OJ -144 230 220 150 RE4 231 CI3 241 II2 221 RE5 230 II3 220 ZJ -148 -149 -150 28 25 24 RE1 28 RE2 25 CI1 24 / BC: Q25 FL25 BC: P14 EF14 BC: P24 EF24 BC: F1 FL150 BC: F2 FL149 BC: F3 FL148 / SF1 PA: PSF1 1.600D+04 F=PSF1 EOD CI4 PA: PC1 1.3000D+00 PA: PC2 1.7130D+00 C=Z/PC1+PC2 EOD RE6 PA: PC136 1.000D+00 PA: PC000 0.000D+00 PA: PC100 1.000D+00 PA: PC200 2.000D+00 PA: PC160 1.600D+04 R=Z/PC136 IF(R.LE.PC100)THEN R=PC000 ELSE R=PC160*(R-PC100) ENDIF EOD CI1 PA: PC110 1.300D+00 PA: PC111 6.9674 C=Z/PC110+PC111 EOD RE2 PA: PC250 0.1500D+00 PA: PC251 1.6000D+04 PA: PC000 0.0000D+00 PA: PC252 0.2000D+00 PA: PC253 0.3000D+00 PA: PC100 1.0000D+00 PA: PC254 1.0667D+05 PA: PC255 3.2000D+05 PA: PC256 6.4000D+04 R=Z/PC100 IF(R.LE.PC250)THEN R=PC254*R ELSEIF(R.LE.PC252)THEN R=-PC255*R+PC256 ELSE R=PC000 ENDIF EOD RE1 PA: PC000 0.0000D+00 PA: PC301 6.0000D+00 PA: PC302 8.0000D+00 PA: PC303 1.0000D+04 PA: PC100 1.0000D+00 PA: PC304 2.0000D+00 R=Z/PC100 IF(R.LE.PC301)THEN R=PC000 ELSE R=PC303/PC304*(R-PC301) ENDIF EOD RE3 PA: PC401 3.6000D-06 R=Z*PC401 EOD RE4 PA: PC401 3.6000D-06 R=Z*PC401 EOD RE5 PA: PC501 7.2000D-06 R=PC501*Z EOD CI2 PA: PC601 0.37000D+00 PA: PC602 -0.267019D+00 C=Z/PC601+PC602 EOD CI3 PA: PC701 1.5000D+00 PA: PC702 -1.3341D+01 C=Z/PC701+PC702 EOD II1 PA: PC801 8.3000D-07 PA: PC802 1.0110D+03 L=Z/PC801+PC802 EOD II2 PA: PC801 8.3000D-07 PA: PC803 -1.218D+03 L=Z/PC801+PC803 EOD II3 PA: PC804 1.6500D-06 PA: PC805 4.374D+03 L=Z/PC804+PC805 EOD TF1 PA: PT0001 -1.0000D+00 TF=PT0001 EOD / 0.00 5.00D-02 1.000D-08 4000 /
20-Simによるコード
Sf11 parameters real flow = 1.6e4; variables real effort; equations p.f = flow; effort = p.e; C14 parameters real c = 1.3e0; real pc2=1.713e0; equations state = int(p.f); p.e = state / c+pc2; R131 parameters real pc136=1.000e+00; real pc000=0.000e+00; real pc100=1.000e+00; real pc200=2.000e+00; real pc160=1.600e+04; variables real zz; equations zz=p.e/pc136; p.f=if zz <=pc100 then pc000 else pc160*(zz-pc100) end; R230 parameters real pc501 = 7.2000e-06; equations p.e = pc501* p.f; I220 parameters real pc804=1.6500e-06; real pc805=4.374e+03; equations state = int(p.e); p.f = state /pc804+pc805; R231 parameters real pc401=3.6000e-06; equations p.e = pc401 * p.f; C241 parameters real pc701=1.500e+00; real pc702=-1.3341e+01; equations state = int(p.f); p.e = state / pc701+pc702; I221 parameters real pc801=8.300e-07; real pc803=-1.218e+03; equations state = int(p.e); p.f = state / pc801+pc803; TF2627 parameters real pt001=-1.000e+00; equations p1.e = pt001* p2.e; p2.f = pt001* p1.f; R271 parameters real pc401=3.600e-06; equations p.e = pc401 * p.f; C242 parameters real pc601=0.3700e+00; real pc602=-0.267011e+00; equations state = int(p.f); p.e = state / pc601+pc602; I1222 parameters real pc801=8.300e-07; real pc802=1.0110e+03; equations state = int(p.e); p.f = state / pc801+pc802; R281 parameters real pc301=6.000e+00; real pc000=0.000e+00; real pc100=1.000e+00; real pc303=1.000e+04; real pc304=2.000e+00; variables real zz; equations zz=p.e/pc100; p.f=if zz <=pc301 then pc000 else pc303/pc304*(zz-pc301) end; C24 parameters real pc110 = 1.300e+00; real pc111=6.9674 {Pa}; equations state = int(p.f); p.e = state / pc110+pc111; R251 parameters real pc250=0.15000e+00;// real pc252=0.2000e+00;// real pc000=0.000e+00;// real pc100=1.000e+00;// real pc254=1.0667e+05;// real pc255=3.2000e+05;// real pc256=6.4000e+04;// variables real zz; equations zz=p.e/pc100; p.f= if zz <= pc250 then pc254*zz else if zz <= pc252 then -pc255*zz+pc256 else pc000 end end;