Description
Test functionality of the GAMS embedded code facility for GAMS during compilation time Contributor: Michael Bussieck, January 2023
Small Model of Type : GAMS
Category : GAMS Test library
Main file : embgms01.gms
$title 'Test for embedded code facility' (EMBGMS01,SEQ=925)
$onText
Test functionality of the GAMS embedded code facility for GAMS during compilation time
Contributor: Michael Bussieck, January 2023
$offText
Set i / i1 text for i1
i2 text for i2 /
iout(i)
j / j1*j3 /
ij(i,j) / #i.#j /
i_want(i) / i1, i2 /
i_want_ex(i) / i1 text 1, i2 text 2 /
ij_want(i,j) / i1.j1, i1.j2 /
ij_want_merge(i,j) / i1.j1, i1.j2, i1.j3 /
ij_want_ex(i,j) / i1.j1 text 1, i1.j2 text 2/;
Scalar p0 /3.14/
p0_want / 3.14 /;
Parameter p1(i) / #i 3.14 /
p2(i,j) / #i.#j 3.14 /
p1_want(i) / #i 3.14 /
p2_want(i,j) / i1.j1 3.14, i1.j2 3.14 /
p2_want_merge(i,j) / i1.j1 3.14, i1.j2 3.14, i1.j3 3.14 /;
Variable v0 / fx 3.14 /
v1(i) / #i.fx 3.14 /
v2(i,j) / #i.#j.fx 3.14 /
v0_want / l 3.14, m 0, lo 0, up 10, scale 1 /
v1_want(i) / i1.(l 3.14, m 0, lo 0, up 10, scale 1),
i2.(l 3.14, m 0, lo 0, up 10, scale 1) /
v2_want(i,j) / i1.j1.(l 3.14, m 0, lo 0, up 10, scale 1),
i1.j2.(l 3.14, m 0, lo 0, up 10, scale 1) /
v2_want_merge(i,j) / i1.j1.(l 3.14, m 0, lo 0, up 10, scale 1),
i1.j2.(l 3.14, m 0, lo 0, up 10, scale 1),
i1.j3.(l 3.14, m 0, lo 0, up 10, scale 1) /;
equation e0 / fx 3.14 /
e1(i) / #i.fx 3.14 /
e2(i,j) / #i.#j.fx 3.14 /
e0_want / l 3.14, m 0, lo 0, up 10, scale 1 /
e1_want(i) / i1.(l 3.14, m 0, lo 0, up 10, scale 1),
i2.(l 3.14, m 0, lo 0, up 10, scale 1) /
e2_want(i,j) / i1.j1.(l 3.14, m 0, lo 0, up 10, scale 1),
i1.j2.(l 3.14, m 0, lo 0, up 10, scale 1) /
e2_want_merge(i,j) / i1.j1.(l 3.14, m 0, lo 0, up 10, scale 1),
i1.j2.(l 3.14, m 0, lo 0, up 10, scale 1),
i1.j3.(l 3.14, m 0, lo 0, up 10, scale 1) /;
$call rm -f embgms01_log.txt
$onEchoV > checkData
$gdxOut have.gdx
$unLoad %1
$gdxOut
$call gdxdiff wanted.gdx have.gdx >> embgms01_log.txt
$if errorlevel 1 $abort %2
$offEcho
$save embgms01
*** Test default list behavior ***
*Test 1.1: Test default list behavior of scalars
*Test 1.2: Test default list behavior of one dimensional parameters
*Test 1.3: Test default list behavior of multi dimensional parameters
*Test 1.4: Test default list behavior of one dimensional sets
*Test 1.5: Test default list behavior of multi dimensional sets
*Test 1.6: Test default list behavior of scalar variables
*Test 1.7: Test default list behavior of one dimensional variables
*Test 1.8: Test default list behavior of multi dimensional variables
*Test 1.9: Test default list behavior of scalar equations
*Test 1.10: Test default list behavior of one dimensional equations
*Test 1.11: Test default list behavior of multi dimensional equations
*** Test writing symbol data using labels ***
$onMultiR
*Test 4.1: Test writing of scalars
$gdxOut wanted.gdx
$unLoad p0_want=p0
$gdxOut
$clear p0
$save embgms01
$batInclude checkData p0 'Test 4.1 failed in GAMS'
*Test 4.2: Test writing of one dimensional parameters
$gdxOut wanted.gdx
$unLoad p1_want=p1
$gdxOut
$clear p1
$save embgms01
$batInclude checkData p1 'Test 4.2 failed in GAMS'
*Test 4.3: Test writing of multi dimensional parameters
$gdxOut wanted.gdx
$unLoad p2_want=p2
$gdxOut
$clear p2
$save embgms01
$batInclude checkData p2 'Test 4.3 failed in GAMS'
*Test 4.4: Test writing of one dimensional sets
$gdxOut wanted.gdx
$unLoad i_want=iout
$gdxOut
$clear iout
$save embgms01
$batInclude checkData iout 'Test 4.4a failed in GAMS'
$gdxOut wanted.gdx
$unLoad i_want_ex=iout
$gdxOut
$clear iout
$batInclude checkData iout 'Test 4.4b failed in GAMS'
*Test 4.5: Test writing of multi dimensional sets
$gdxOut wanted.gdx
$unLoad ij_want=ij
$gdxOut
$clear ij
$save embgms01
$batInclude checkData ij 'Test 4.5a failed in GAMS'
$gdxOut wanted.gdx
$unLoad ij_want_ex=ij
$gdxOut
$clear ij
$batInclude checkData ij 'Test 4.5b failed in GAMS'
*Test 4.6: Test writing of scalar variable
$gdxOut wanted.gdx
$unLoad v0_want=v0
$gdxOut
$clear v0
$save embgms01
$batInclude checkData v0 'Test 4.6 failed in GAMS'
*Test 4.7: Test writing of one dimensonal variables
$gdxOut wanted.gdx
$unLoad v1_want=v1
$gdxOut
$clear v1
$save embgms01
$batInclude checkData v1 'Test 4.7 failed in GAMS'
*Test 4.8: Test writing of multi dimensonal variables
$gdxOut wanted.gdx
$unLoad v2_want=v2
$gdxOut
$clear v2
$save embgms01
$batInclude checkData v2 'Test 4.8 failed in GAMS'
*Test 4.9: Test writing of scalar equations
$gdxOut wanted.gdx
$unLoad e0_want=e0
$gdxOut
$clear e0
$save embgms01
$batInclude checkData e0 'Test 4.9 failed in GAMS'
*Test 4.10: Test writing of one dimensonal equations
$gdxOut wanted.gdx
$unLoad e1_want=e1
$gdxOut
$clear e1
$save embgms01
$batInclude checkData e1 'Test 4.10 failed in GAMS'
*Test 4.11: Test writing of multi dimensonal equations
$gdxOut wanted.gdx
$unLoad e2_want=e2
$gdxOut
$clear e2
$save embgms01
$batInclude checkData e2 'Test 4.11 failed in GAMS'