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