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

GS5.BGSのコードを以下に示します。このコードは BGSP用です。第1行の

BOND SYMBOL EXPR OUT DEFIN PARM INIT

はコードの一部ですから省略してはいけません。また、BGSPではカラム指定が厳格で1カラムでもずれるとエラーになります。また、許される文字は英数字、コロン(:)、スラッシュ(/)、加減乗算記号(+-*)、半角空白のみであり、制御文字が入るとエラーになります。倍角の空白はエラーを生じますが、ソースをプリントしても気づきにくいので注意が必要です。

GS5のコード

BOND SYMBOL EXPR OUT DEFIN PARM INIT
SF1    12
ZJ     -12   14    13
RE1    14
OJ     -13   25    23
II1    23
RE2    25
/
BC: W23   FL23
BC: M14   EF14
BC: F14   FL14
/
SF1
PA: PF1    1.57D+02
       F=PF1
EOD
II1
PA: PI1    2.6700D-01
        L=Z/PI1
EOD
RE2
PA: PR5    5.000D-02
        R=PR5*Z
EOD
RE1
PA: PR61   1.3333D-00
PA: PR62   9.3333D-01
PA: PR63   3.0000D+00
PA: PR64   2.4000D+01
PA: PR65   2.1444D+00
PA: PR66   -2.000D-01
PA: PR67   3.2000D+01
PA: PR68   -3.3333D-01
PA: PR69   4.00000D+01
PA: PR70   -1.0000D-01
PA: PR71   1.90000D+01
PA: PR72   5.00000D-00
PA: PR73   1.00000D+00
        IF(Z.LE.-7.5)THEN
         RR=-10.0
        ELSEIF(Z.LE.7.5)THEN
         RR=PR61*Z
        ELSEIF(Z.LE.22.5)THEN
         RR=PR62*Z+PR63
        ELSEIF(Z.LE.40.0)THEN
         RR=PR64
        ELSEIF(Z.LE.60.0)THEN
         RR=PR66*Z+PR67
        ELSEIF(Z.LE.90.0)THEN
         RR=PR68*Z+PR69
        ELSEIF(Z.LE.140.0)THEN
         RR=PR70*Z+PR71
        ELSE
         RR=PR72
        ENDIF
        R=RR
EOD
/
0.0000            1.000D+01         1.000D-05         2000
/


20-Simによるコード:ブロックボンドグラフを要素内に包含した場合

Sf12
parameters
	real flow = 1.57e2;
variables
	real effort;
equations
	p.f = flow;
	effort = p.e;

R14

parameters
	real pr61=1.333e-0;
	real pr62=9.3333e-1;
	real pr63=3.0e0;
	real pr64=2.4e1;
	real pr66=-2.0e-1;
	real pr67=3.2e1;
	real pr68=-3.3333e-1;
	real pr69=4.0e1;
	real pr70=-1.0e-1;
	real pr71=1.9e1;
	real pr72=5.0e0;
	
equations
	p.e=if p.f <= -7.5  then
		-10.0
		else
		if p.f <= 7.5 then
		pr61*p.f
		else
		if p.f <= 22.5 then
		pr62*p.f+pr63
		else
		if  p.f <= 40.0 then
		pr64
		else
	        if p.f <= 60.0 then
	   	pr66*p.f + pr67
		else
		if p.f <= 90.0 then
		pr68*p.f + pr69
		else
	        p.f <= 140.0 then
                pr70*p.f + pr71
		else
		pr72
		end
		end
		end
		end

		end
		end
		end;

R25
parameters
	real r = 5.0e-2;
equations
	p.e=p.f*r;

I23
parameters
	real i = 2.67e-1;
equations
    state = int(p.e);
    p.f = state / i;


20-Simによるコード:ブロックボンドグラフを要素外にある場合

Sf12
parameters
	real flow = 1.57e2;
variables
	real effort;
equations
	p.f = flow;
	effort = p.e;

MR14

equations
	port1=p.f;
	p.e = r;


R25
parameters
	real r = 5.0e-2;
equations
	p.e=p.f*r;

I23
parameters
	real i = 2.67e-1;
equations
    state = int(p.e);
    p.f = state / i;

Table
parameters					
	string filename= 'd:\20-sim\Simtec\GS5.txt';
equations					
	r = table (filename, input);
   

GS5.txt

-7.5        -10.0
0.0         0.0
7.5         10.0
22.5        24.0
40.0        24.0
60.0        20.0
90.0        10.0
140.0       5.0
157.0       5.0