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

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;