シミュレーションの演習のコード

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