Skip to content

Commit

Permalink
added new test diff array crefs
Browse files Browse the repository at this point in the history
  • Loading branch information
Willi Braun authored and OpenModelica-Hudson committed Oct 11, 2017
1 parent 988a898 commit 12ed59f
Show file tree
Hide file tree
Showing 11 changed files with 1,205 additions and 978 deletions.
176 changes: 88 additions & 88 deletions openmodelica/debugDumps/optdaedump.mos

Large diffs are not rendered by default.

1,584 changes: 792 additions & 792 deletions openmodelica/debugDumps/symjacdump.mos

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions openmodelica/linearization/Makefile
Expand Up @@ -22,6 +22,7 @@ test_04.mos \
test_05.mos \
test_06.mos \
test_07.mos \
testArrayAlg.mos \
testDrumBoiler.mos \
testknownvar.mos \
testMathFuncs.mos \
Expand Down
80 changes: 80 additions & 0 deletions openmodelica/linearization/testArrayAlg.mos
@@ -0,0 +1,80 @@
// name: testArrayAlgDiff
// keywords: differentiation linearization array algorithm
// status: correct
// teardown_command: rm -rf ticket4545* output.log linear_ticket4545*
//
//

loadString("
package ticket4545
model Test_vector
Real x[2](each start = 0, each fixed = true);
discrete Real u[2](each start = 0, each fixed = true);
Real y[2];
equation
for i in 1:2 loop
der(x[i]) = u[i]+y[i];
y[i] = 0.5*x[i];
end for;
algorithm
when sample(0,1) then
for i in 1:2 loop
u[i] := 1 - y[i];
end for;
end when;
annotation(experiment(StopTime = 10));
end Test_vector;
end ticket4545;
");
getErrorString();

setCommandLineOptions("--generateSymbolicLinearization");
getErrorString();
linearize(ticket4545.Test_vector, stopTime=0);
getErrorString();
loadFile("linear_ticket4545.Test_vector.mo");
list(linear_ticket4545_Test__vector);
getErrorString();



// Result:
// true
// ""
// true
// ""
// record SimulationResult
// resultFile = "ticket4545.Test_vector_res.mat",
// simulationOptions = "startTime = 0.0, stopTime = 0.0, numberOfIntervals = 500, tolerance = 1e-06, method = 'dassl', fileNamePrefix = 'ticket4545.Test_vector', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
// messages = "stdout | info | Linearization will performed at point of time: 0.000000
// stdout | info | The initialization finished successfully without homotopy method.
// stdout | info | The simulation finished successfully.
// stdout | info | Linear model is created!
// "
// end SimulationResult;
// ""
// true
// "model linear_ticket4545_Test__vector
// parameter Integer n = 2;
// // states
// parameter Integer k = 0;
// // top-level inputs
// parameter Integer l = 0;
// // top-level outputs
// parameter Real x0[2] = {0, 0};
// parameter Real u0[0] = {i for i in 1:0};
// parameter Real A[2, 2] = [0.5, 0; 0, 0.5];
// parameter Real B[2, 0] = zeros(2, 0);
// parameter Real C[0, 2] = zeros(0, 2);
// parameter Real D[0, 0] = zeros(0, 0);
// Real x[2](start = x0);
// input Real u[0];
// output Real y[0];
// Real 'x_x[1]' = x[1];
// Real 'x_x[2]' = x[2];
// equation
// der(x) = A * x + B * u;
// y = C * x + D * u;
// end linear_ticket4545_Test__vector;"
// ""
// endResult
52 changes: 26 additions & 26 deletions simulation/modelica/commonSubExp/cse1.mos
Expand Up @@ -46,18 +46,18 @@ simulate(Tearing15); getErrorString();
//
// ########### Updated Variable List (jacobian) (6)
// ========================================
// 1: v7.$pDERNLSJac0.dummyVarNLSJac0:VARIABLE() type: Real
// 2: v2.$pDERNLSJac0.dummyVarNLSJac0:VARIABLE() type: Real
// 3: $res.2.$pDERNLSJac0.dummyVarNLSJac0:STATE_DER() type: Real unreplaceable
// 4: $res.1.$pDERNLSJac0.dummyVarNLSJac0:STATE_DER() type: Real unreplaceable
// 1: v7.$pDERNLSJac0.dummyVarNLSJac0:VARIABLE(start = 3.0 ) type: Real
// 2: v2.$pDERNLSJac0.dummyVarNLSJac0:VARIABLE(start = 1.0 ) type: Real
// 3: $res2.$pDERNLSJac0.dummyVarNLSJac0:VARIABLE() type: Real unreplaceable
// 4: $res1.$pDERNLSJac0.dummyVarNLSJac0:VARIABLE() type: Real unreplaceable
// 5: $cse2:VARIABLE() type: Real unreplaceable
// 6: $cse1:VARIABLE() type: Real unreplaceable
//
//
// ########### Updated Equation List (jacobian) (6, 6)
// ========================================
// 1/1 (1): $res.2.$pDERNLSJac0.dummyVarNLSJac0 = 2.0 * (v1 * $cse1 * v1SeedNLSJac0 + v1SeedNLSJac0 * $cse2) + v2.$pDERNLSJac0.dummyVarNLSJac0 + v7.$pDERNLSJac0.dummyVarNLSJac0 - v3SeedNLSJac0 [dynamic]
// 2/2 (1): $res.1.$pDERNLSJac0.dummyVarNLSJac0 = 3.0 * (v1 * $cse1 * v1SeedNLSJac0 + v1SeedNLSJac0 * $cse2) + -7.0 * v2.$pDERNLSJac0.dummyVarNLSJac0 + -2.0 * v3SeedNLSJac0 + 3.0 * source * v7.$pDERNLSJac0.dummyVarNLSJac0 [dynamic]
// 1/1 (1): $res2.$pDERNLSJac0.dummyVarNLSJac0 = 2.0 * (v1 * $cse1 * v1SeedNLSJac0 + v1SeedNLSJac0 * $cse2) + v2.$pDERNLSJac0.dummyVarNLSJac0 + v7.$pDERNLSJac0.dummyVarNLSJac0 - v3SeedNLSJac0 [dynamic]
// 2/2 (1): $res1.$pDERNLSJac0.dummyVarNLSJac0 = 3.0 * (v1 * $cse1 * v1SeedNLSJac0 + v1SeedNLSJac0 * $cse2) + -7.0 * v2.$pDERNLSJac0.dummyVarNLSJac0 + -2.0 * v3SeedNLSJac0 + 3.0 * source * v7.$pDERNLSJac0.dummyVarNLSJac0 [dynamic]
// 3/3 (1): v1 * $cse1 * v1SeedNLSJac0 + v1SeedNLSJac0 * $cse2 + v2.$pDERNLSJac0.dummyVarNLSJac0 + (-v3SeedNLSJac0) * source - v7.$pDERNLSJac0.dummyVarNLSJac0 = 0.0 [dynamic]
// 4/4 (1): v1 * $cse1 * v1SeedNLSJac0 + v1SeedNLSJac0 * $cse2 + v2.$pDERNLSJac0.dummyVarNLSJac0 = 0.0 [dynamic]
// 5/5 (1): $cse2 = sin(v1) [unknown]
Expand All @@ -66,11 +66,11 @@ simulate(Tearing15); getErrorString();
//
// ########### Updated globalKnownVars (jacobian) (7)
// ========================================
// 1: input v1SeedNLSJac0:STATE_DER() type: Real
// 2: input v3SeedNLSJac0:STATE_DER() type: Real
// 1: input v1SeedNLSJac0:STATE_DER() type: Real unreplaceable
// 2: input v3SeedNLSJac0:STATE_DER() type: Real unreplaceable
// 3: input source:VARIABLE() type: Real
// 4: input $res[1]:VARIABLE() type: Real
// 5: input $res[2]:VARIABLE() type: Real
// 4: input $res1:VARIABLE() type: Real
// 5: input $res2:VARIABLE() type: Real
// 6: input v2:VARIABLE(start = 1.0 ) type: Real
// 7: input v7:VARIABLE(start = 3.0 ) type: Real
//
Expand All @@ -88,26 +88,26 @@ simulate(Tearing15); getErrorString();
//
// ########### Updated Variable List (jacobian) (4)
// ========================================
// 1: v5.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE() type: Real
// 2: $res.1.$pDERNLSJac1.dummyVarNLSJac1:STATE_DER() type: Real unreplaceable
// 1: v5.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE(start = 1.0 ) type: Real
// 2: $res1.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE() type: Real unreplaceable
// 3: $cse4:VARIABLE() type: Real unreplaceable
// 4: $cse3:VARIABLE() type: Real unreplaceable
//
//
// ########### Updated Equation List (jacobian) (4, 4)
// ========================================
// 1/1 (1): $res.1.$pDERNLSJac1.dummyVarNLSJac1 = v5.$pDERNLSJac1.dummyVarNLSJac1 + v6 * $cse3 * v6SeedNLSJac1 * source + v6SeedNLSJac1 * $cse4 * source [dynamic]
// 1/1 (1): $res1.$pDERNLSJac1.dummyVarNLSJac1 = v5.$pDERNLSJac1.dummyVarNLSJac1 + v6 * $cse3 * v6SeedNLSJac1 * source + v6SeedNLSJac1 * $cse4 * source [dynamic]
// 2/2 (1): 3.0 * v5.$pDERNLSJac1.dummyVarNLSJac1 + (-v6) * $cse3 * v6SeedNLSJac1 - v6SeedNLSJac1 * $cse4 = 0.0 [dynamic]
// 3/3 (1): $cse4 = sin(v6) [unknown]
// 4/4 (1): $cse3 = cos(v6) [unknown]
//
//
// ########### Updated globalKnownVars (jacobian) (5)
// ========================================
// 1: input v6SeedNLSJac1:STATE_DER() type: Real
// 1: input v6SeedNLSJac1:STATE_DER() type: Real unreplaceable
// 2: input v3:VARIABLE(start = 1.0 ) type: Real
// 3: input source:VARIABLE() type: Real
// 4: input $res[1]:VARIABLE() type: Real
// 4: input $res1:VARIABLE() type: Real
// 5: input v5:VARIABLE(start = 1.0 ) type: Real
//
//
Expand Down Expand Up @@ -200,23 +200,23 @@ simulate(Tearing15); getErrorString();
//
// ########### Updated Variable List (jacobian) (3)
// ========================================
// 1: $cse5.$pDERNLSJac3.dummyVarNLSJac3:VARIABLE() type: Real
// 2: $res.1.$pDERNLSJac3.dummyVarNLSJac3:STATE_DER() type: Real unreplaceable
// 1: $cse5.$pDERNLSJac3.dummyVarNLSJac3:VARIABLE() type: Real unreplaceable
// 2: $res1.$pDERNLSJac3.dummyVarNLSJac3:VARIABLE() type: Real unreplaceable
// 3: $cse7:VARIABLE() type: Real unreplaceable
//
//
// ########### Updated Equation List (jacobian) (3, 3)
// ========================================
// 1/1 (1): $res.1.$pDERNLSJac3.dummyVarNLSJac3 = v1 * $cse5.$pDERNLSJac3.dummyVarNLSJac3 + v1SeedNLSJac3 * $cse5 [binding]
// 1/1 (1): $res1.$pDERNLSJac3.dummyVarNLSJac3 = v1 * $cse5.$pDERNLSJac3.dummyVarNLSJac3 + v1SeedNLSJac3 * $cse5 [binding]
// 2/2 (1): $cse5.$pDERNLSJac3.dummyVarNLSJac3 = $cse7 * v1SeedNLSJac3 [unknown]
// 3/3 (1): $cse7 = cos(v1) [unknown]
//
//
// ########### Updated globalKnownVars (jacobian) (4)
// ========================================
// 1: input v1SeedNLSJac3:STATE_DER() type: Real
// 1: input v1SeedNLSJac3:STATE_DER() type: Real unreplaceable
// 2: input $cseb3:VARIABLE() type: Real unreplaceable
// 3: input $res[1]:VARIABLE() type: Real
// 3: input $res1:VARIABLE() type: Real
// 4: input $cse5:VARIABLE() type: Real unreplaceable
//
//
Expand All @@ -232,26 +232,26 @@ simulate(Tearing15); getErrorString();
//
// ########### Updated Variable List (jacobian) (4)
// ========================================
// 1: v5.$pDERNLSJac4.dummyVarNLSJac4:VARIABLE() type: Real
// 2: $cse6.$pDERNLSJac4.dummyVarNLSJac4:VARIABLE() type: Real
// 3: $res.1.$pDERNLSJac4.dummyVarNLSJac4:STATE_DER() type: Real unreplaceable
// 1: v5.$pDERNLSJac4.dummyVarNLSJac4:VARIABLE(start = 1.0 ) type: Real
// 2: $cse6.$pDERNLSJac4.dummyVarNLSJac4:VARIABLE() type: Real unreplaceable
// 3: $res1.$pDERNLSJac4.dummyVarNLSJac4:VARIABLE() type: Real unreplaceable
// 4: $cse8:VARIABLE() type: Real unreplaceable
//
//
// ########### Updated Equation List (jacobian) (4, 4)
// ========================================
// 1/1 (1): $res.1.$pDERNLSJac4.dummyVarNLSJac4 = v5.$pDERNLSJac4.dummyVarNLSJac4 + v6 * $cse6.$pDERNLSJac4.dummyVarNLSJac4 * source + v6SeedNLSJac4 * $cse6 * source [dynamic]
// 1/1 (1): $res1.$pDERNLSJac4.dummyVarNLSJac4 = v5.$pDERNLSJac4.dummyVarNLSJac4 + v6 * $cse6.$pDERNLSJac4.dummyVarNLSJac4 * source + v6SeedNLSJac4 * $cse6 * source [dynamic]
// 2/2 (1): 3.0 * v5.$pDERNLSJac4.dummyVarNLSJac4 + (-v6) * $cse6.$pDERNLSJac4.dummyVarNLSJac4 - v6SeedNLSJac4 * $cse6 = 0.0 [dynamic]
// 3/3 (1): $cse6.$pDERNLSJac4.dummyVarNLSJac4 = $cse8 * v6SeedNLSJac4 [unknown]
// 4/4 (1): $cse8 = cos(v6) [unknown]
//
//
// ########### Updated globalKnownVars (jacobian) (6)
// ========================================
// 1: input v6SeedNLSJac4:STATE_DER() type: Real
// 1: input v6SeedNLSJac4:STATE_DER() type: Real unreplaceable
// 2: input v3:VARIABLE(start = 1.0 ) type: Real
// 3: input source:VARIABLE() type: Real
// 4: input $res[1]:VARIABLE() type: Real
// 4: input $res1:VARIABLE() type: Real
// 5: input $cse6:VARIABLE() type: Real unreplaceable
// 6: input v5:VARIABLE(start = 1.0 ) type: Real
//
Expand Down
20 changes: 10 additions & 10 deletions simulation/modelica/commonSubExp/cse3.mos
Expand Up @@ -145,18 +145,18 @@ simulate(testCSE); getErrorString();
//
// ########### Updated Variable List (jacobian) (6)
// ========================================
// 1: $cse5.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE() type: Real
// 2: $cse3.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE() type: Real
// 3: $res.2.$pDERNLSJac1.dummyVarNLSJac1:STATE_DER() type: Real unreplaceable
// 4: $res.1.$pDERNLSJac1.dummyVarNLSJac1:STATE_DER() type: Real unreplaceable
// 1: $cse5.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE() type: Real unreplaceable
// 2: $cse3.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE() type: Real unreplaceable
// 3: $res2.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE() type: Real unreplaceable
// 4: $res1.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE() type: Real unreplaceable
// 5: $cse7:VARIABLE() type: Real unreplaceable
// 6: $cse6:VARIABLE() type: Real unreplaceable
//
//
// ########### Updated Equation List (jacobian) (6, 6)
// ========================================
// 1/1 (1): $res.2.$pDERNLSJac1.dummyVarNLSJac1 = 1.1 * $cse2 * $cse3.$pDERNLSJac1.dummyVarNLSJac1 + $cse1 * ySeedNLSJac1 [dynamic]
// 2/2 (1): $res.1.$pDERNLSJac1.dummyVarNLSJac1 = (-$cse4) * (1.1 * zSeedNLSJac1 + $cse5.$pDERNLSJac1.dummyVarNLSJac1) [dynamic]
// 1/1 (1): $res2.$pDERNLSJac1.dummyVarNLSJac1 = 1.1 * $cse2 * $cse3.$pDERNLSJac1.dummyVarNLSJac1 + $cse1 * ySeedNLSJac1 [dynamic]
// 2/2 (1): $res1.$pDERNLSJac1.dummyVarNLSJac1 = (-$cse4) * (1.1 * zSeedNLSJac1 + $cse5.$pDERNLSJac1.dummyVarNLSJac1) [dynamic]
// 3/3 (1): $cse5.$pDERNLSJac1.dummyVarNLSJac1 = ySeedNLSJac1 * $cse6 [unknown]
// 4/4 (1): $cse3.$pDERNLSJac1.dummyVarNLSJac1 = zSeedNLSJac1 * $cse7 [unknown]
// 5/5 (1): $cse7 = cosh(z) [unknown]
Expand All @@ -165,13 +165,13 @@ simulate(testCSE); getErrorString();
//
// ########### Updated globalKnownVars (jacobian) (9)
// ========================================
// 1: input ySeedNLSJac1:STATE_DER() type: Real
// 2: input zSeedNLSJac1:STATE_DER() type: Real
// 1: input ySeedNLSJac1:STATE_DER() type: Real unreplaceable
// 2: input zSeedNLSJac1:STATE_DER() type: Real unreplaceable
// 3: input $cse4:VARIABLE() type: Real unreplaceable
// 4: input $cse2:VARIABLE() type: Real unreplaceable
// 5: input $cse1:VARIABLE() type: Real unreplaceable
// 6: input $res[1]:VARIABLE() type: Real
// 7: input $res[2]:VARIABLE() type: Real
// 6: input $res1:VARIABLE() type: Real
// 7: input $res2:VARIABLE() type: Real
// 8: input $cse3:VARIABLE() type: Real unreplaceable
// 9: input $cse5:VARIABLE() type: Real unreplaceable
//
Expand Down
10 changes: 5 additions & 5 deletions simulation/modelica/commonSubExp/cseFunctionCall8.mos
Expand Up @@ -77,15 +77,15 @@ simulate(CSE.FunctionCallTest8); getErrorString();
// ########### Updated Variable List (jacobian) (5)
// ========================================
// 1: i.$pDERLSJac0.dummyVarLSJac0:VARIABLE() type: Real
// 2: $DER.u2.$pDERLSJac0.dummyVarLSJac0:VARIABLE() type: Real
// 3: $res.1.$pDERLSJac0.dummyVarLSJac0:STATE_DER() type: Real unreplaceable
// 2: $DER.u2.$pDERLSJac0.dummyVarLSJac0:VARIABLE(fixed = false ) type: Real
// 3: $res1.$pDERLSJac0.dummyVarLSJac0:VARIABLE() type: Real unreplaceable
// 4: $cse2:VARIABLE() type: Real unreplaceable
// 5: $cse1:VARIABLE() type: Real unreplaceable
//
//
// ########### Updated Equation List (jacobian) (5, 5)
// ========================================
// 1/1 (1): $res.1.$pDERLSJac0.dummyVarLSJac0 = C * $DER.u2.$pDERLSJac0.dummyVarLSJac0 - i.$pDERLSJac0.dummyVarLSJac0 [dynamic]
// 1/1 (1): $res1.$pDERLSJac0.dummyVarLSJac0 = C * $DER.u2.$pDERLSJac0.dummyVarLSJac0 - i.$pDERLSJac0.dummyVarLSJac0 [dynamic]
// 2/2 (1): i.$pDERLSJac0.dummyVarLSJac0 = C * $DER_u1SeedLSJac0 [dynamic]
// 3/3 (1): 0.0 = $cse1 * $DER_u1SeedLSJac0 + $DER.u2.$pDERLSJac0.dummyVarLSJac0 [dynamic]
// 4/4 (1): $cse2 = CSE.FunctionCallTest8.g(time ^ 2.0) [unknown]
Expand All @@ -94,10 +94,10 @@ simulate(CSE.FunctionCallTest8); getErrorString();
//
// ########### Updated globalKnownVars (jacobian) (6)
// ========================================
// 1: input $DER_u1SeedLSJac0:STATE_DER() type: Real
// 1: input $DER_u1SeedLSJac0:STATE_DER() type: Real unreplaceable
// 2: input u1:VARIABLE() type: Real
// 3: input C:PARAM() = 1.0 type: Real
// 4: input $res[1]:VARIABLE() type: Real
// 4: input $res1:VARIABLE() type: Real
// 5: input $DER.u2:DUMMY_DER(fixed = false ) type: Real
// 6: input i:VARIABLE() type: Real
//
Expand Down
16 changes: 8 additions & 8 deletions simulation/modelica/commonSubExp/wrapFunctionCalls11.mos
Expand Up @@ -36,21 +36,21 @@ simulate(CSE.wrapFunctionCalls11); getErrorString();
//
// ########### Updated Variable List (jacobian) (2)
// ========================================
// 1: $res.1.$pDERNLSJac0.dummyVarNLSJac0:STATE_DER() type: Real unreplaceable
// 1: $res1.$pDERNLSJac0.dummyVarNLSJac0:VARIABLE() type: Real unreplaceable
// 2: $cse1:VARIABLE() type: Real unreplaceable
//
//
// ########### Updated Equation List (jacobian) (2, 2)
// ========================================
// 1/1 (1): $res.1.$pDERNLSJac0.dummyVarNLSJac0 = (-$cse1) * ySeedNLSJac0 [dynamic]
// 1/1 (1): $res1.$pDERNLSJac0.dummyVarNLSJac0 = (-$cse1) * ySeedNLSJac0 [dynamic]
// 2/2 (1): $cse1 = cos(y) [unknown]
//
//
// ########### Updated globalKnownVars (jacobian) (3)
// ========================================
// 1: input ySeedNLSJac0:STATE_DER() type: Real
// 1: input ySeedNLSJac0:STATE_DER() type: Real unreplaceable
// 2: input x:VARIABLE() type: Real
// 3: input $res[1]:VARIABLE() type: Real
// 3: input $res1:VARIABLE() type: Real
//
//
// ########### CSE Replacements (1/43)
Expand Down Expand Up @@ -98,21 +98,21 @@ simulate(CSE.wrapFunctionCalls11); getErrorString();
//
// ########### Updated Variable List (jacobian) (2)
// ========================================
// 1: $res.1.$pDERNLSJac1.dummyVarNLSJac1:STATE_DER() type: Real unreplaceable
// 1: $res1.$pDERNLSJac1.dummyVarNLSJac1:VARIABLE() type: Real unreplaceable
// 2: $cse2:VARIABLE() type: Real unreplaceable
//
//
// ########### Updated Equation List (jacobian) (2, 2)
// ========================================
// 1/1 (1): $res.1.$pDERNLSJac1.dummyVarNLSJac1 = (-$cse2) * ySeedNLSJac1 [unknown]
// 1/1 (1): $res1.$pDERNLSJac1.dummyVarNLSJac1 = (-$cse2) * ySeedNLSJac1 [unknown]
// 2/2 (1): $cse2 = cos(y) [unknown]
//
//
// ########### Updated globalKnownVars (jacobian) (3)
// ========================================
// 1: input ySeedNLSJac1:STATE_DER() type: Real
// 1: input ySeedNLSJac1:STATE_DER() type: Real unreplaceable
// 2: input x:VARIABLE(fixed = true ) = cos(z) type: Real
// 3: input $res[1]:VARIABLE() type: Real
// 3: input $res1:VARIABLE() type: Real
//
//
// ########### CSE Replacements (1/43)
Expand Down

0 comments on commit 12ed59f

Please sign in to comment.