From 537c57ea0015d85e2404848ab1203becd2880b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20=C3=96stlund?= Date: Mon, 10 Feb 2014 17:32:39 +0100 Subject: [PATCH] - Fixed various balance issues. --- .../Classes/Specialized/BlockInputOutput.mo | 5 ++++- .../Conditional/CompRemovalBalanced.mo | 13 +++++------ .../Conditional/CompRemovalBalancedParam.mo | 10 ++++----- .../Conditional/CompRemovalUnbalanced.mo | 22 +++++++++++++------ .../Conditional/CompRemovalUnbalancedParam.mo | 22 +++++++++++++------ .../Prefixes/DiscreteValidClassType.mo | 13 ++++++----- .../Components/Prefixes/FlowValidClassType.mo | 9 +++++--- .../Declarations/ArrayEquations.mo | 7 +++--- .../Connections/Declarations/ConnectArrays.mo | 12 +++++----- .../Declarations/ConnectParamSubscript.mo | 5 +++-- .../Declarations/ConnectWholeDim.mo | 7 +++--- .../Declarations/OperatorRecordEquations.mo | 5 +++-- .../Declarations/SimpleEquations.mo | 7 +++--- .../Connections/Expandable/AugmentComplex.mo | 3 ++- .../Expandable/FlowInConnectorInExpandable.mo | 3 ++- .../Restrictions/ConnectConstants.mo | 5 +++-- .../Restrictions/ConnectParameters.mo | 5 +++-- .../Connections/Stream/InStreamTwoInside.mo | 22 +++++++++++++------ .../Operators/Special/Cardinality.mo | 11 +++++----- .../Scoping/MemberAccess/AccessAlgorithm.mo | 7 ++++-- .../Scoping/MemberAccess/AccessEquation.mo | 7 ++++-- .../MemberAccess/AccessNestedAlgorithm.mo | 7 ++++-- .../MemberAccess/AccessNestedEquation.mo | 7 ++++-- 23 files changed, 131 insertions(+), 83 deletions(-) diff --git a/ModelicaCompliance/Classes/Specialized/BlockInputOutput.mo b/ModelicaCompliance/Classes/Specialized/BlockInputOutput.mo index edfb0a3..982f20d 100644 --- a/ModelicaCompliance/Classes/Specialized/BlockInputOutput.mo +++ b/ModelicaCompliance/Classes/Specialized/BlockInputOutput.mo @@ -4,13 +4,16 @@ model BlockInputOutput extends Icons.TestCase; connector C - Real e = 1.0; + Real e; flow Real f; end C; block B input C c1; output C c2; + equation + c2.e = 1.0; + c2.f = c1.e; end B; B b; diff --git a/ModelicaCompliance/Components/Conditional/CompRemovalBalanced.mo b/ModelicaCompliance/Components/Conditional/CompRemovalBalanced.mo index d2f80a6..ae83780 100644 --- a/ModelicaCompliance/Components/Conditional/CompRemovalBalanced.mo +++ b/ModelicaCompliance/Components/Conditional/CompRemovalBalanced.mo @@ -1,7 +1,6 @@ within ModelicaCompliance.Components.Conditional; model CompRemovalBalanced - extends Icons.TestCase; connector C Real e; @@ -10,22 +9,20 @@ model CompRemovalBalanced model A C c; + equation + c.e = 2.0; end A; A a1; A a2 if false; - A a3; equation - a1.c.e = 2.0; - a1.c.f = 4.0; connect(a1.c, a2.c); - connect(a1.c, a3.c); - + annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"4.4.5"})), experiment(StopTime = 0.01), Documentation( info = "Tests that a component declared with a condition that is - false is removed from the DAE. The model becomes unbalanced if a2 is not - removed along with the connection to it.")); + false is removed from the DAE. The model becomes structurally singular + if a2 is not removed along with the connection to it.")); end CompRemovalBalanced; diff --git a/ModelicaCompliance/Components/Conditional/CompRemovalBalancedParam.mo b/ModelicaCompliance/Components/Conditional/CompRemovalBalancedParam.mo index 94f9a91..2d74a74 100644 --- a/ModelicaCompliance/Components/Conditional/CompRemovalBalancedParam.mo +++ b/ModelicaCompliance/Components/Conditional/CompRemovalBalancedParam.mo @@ -10,23 +10,21 @@ model CompRemovalBalancedParam model A C c; + equation + c.e = 2.0; end A; parameter Boolean b = false; A a1; A a2 if b; - A a3; equation - a1.c.e = 2.0; - a1.c.f = 4.0; connect(a1.c, a2.c); - connect(a1.c, a3.c); - + annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"4.4.5"})), experiment(StopTime = 0.01), Documentation( info = "Tests that a component declared with a condition that is a parameter with value false is removed from the DAE. The model becomes - unbalanced if a2 is not removed along with the connection to it.")); + structurally singular if a2 is not removed along with the connection to it.")); end CompRemovalBalancedParam; diff --git a/ModelicaCompliance/Components/Conditional/CompRemovalUnbalanced.mo b/ModelicaCompliance/Components/Conditional/CompRemovalUnbalanced.mo index 8427c83..300a1e9 100644 --- a/ModelicaCompliance/Components/Conditional/CompRemovalUnbalanced.mo +++ b/ModelicaCompliance/Components/Conditional/CompRemovalUnbalanced.mo @@ -10,14 +10,22 @@ model CompRemovalUnbalanced model A C c; + equation + c.e = 2.0; end A; - A a1; - A a2 if false; -equation - a1.c.e = 2.0; - a1.c.f = 4.0; - connect(a1.c, a2.c); + model B + C c; + equation + c.f = 1.0; + end B; + + A a; + B b1 if false; + B b2; +equation + connect(a.c, b1.c); + connect(b1.c, b2.c); annotation ( __ModelicaAssociation(TestCase(shouldPass = false, section = {"4.4.5"})), @@ -25,5 +33,5 @@ equation Documentation( info = "Tests that a component declared with a condition that is false is removed from the DAE. The test should fail since the model - becomes unbalanced if a2 is removed.")); + becomes structurally singular if b1 is removed.")); end CompRemovalUnbalanced; diff --git a/ModelicaCompliance/Components/Conditional/CompRemovalUnbalancedParam.mo b/ModelicaCompliance/Components/Conditional/CompRemovalUnbalancedParam.mo index 3ee9214..cbdeffe 100644 --- a/ModelicaCompliance/Components/Conditional/CompRemovalUnbalancedParam.mo +++ b/ModelicaCompliance/Components/Conditional/CompRemovalUnbalancedParam.mo @@ -10,15 +10,23 @@ model CompRemovalUnbalancedParam model A C c; + equation + c.e = 2.0; end A; + model B + C c; + equation + c.f = 1.0; + end B; + parameter Boolean b = false; - A a1; - A a2 if b; -equation - a1.c.e = 2.0; - a1.c.f = 4.0; - connect(a1.c, a2.c); + A a; + B b1 if b; + B b2; +equation + connect(a.c, b1.c); + connect(b1.c, b2.c); annotation ( __ModelicaAssociation(TestCase(shouldPass = false, section = {"4.4.5"})), @@ -26,5 +34,5 @@ equation Documentation( info = "Tests that a component declared with a condition that is a parameter with value false is removed from the DAE. The test should fail - since the model becomes unbalanced if a2 is removed.")); + since the model becomes structurally singular if b1 is removed.")); end CompRemovalUnbalancedParam; diff --git a/ModelicaCompliance/Components/Prefixes/DiscreteValidClassType.mo b/ModelicaCompliance/Components/Prefixes/DiscreteValidClassType.mo index 439a6c5..7a43a09 100644 --- a/ModelicaCompliance/Components/Prefixes/DiscreteValidClassType.mo +++ b/ModelicaCompliance/Components/Prefixes/DiscreteValidClassType.mo @@ -13,20 +13,23 @@ model DiscreteValidClassType end R; model M - discrete C c1; + discrete C c1(f(fixed = true), d(fixed = true)); C c2; + equation + when true then + c1.d = 4.0; + c1.f = 5.0; + end when; end M; - discrete Real x; + discrete Real x(fixed = true); M m; - discrete R r; + discrete R r(x(fixed = true)); equation connect(m.c1, m.c2); when true then x = 2.0; - m.c1.d = 4.0; - m.c1.f = 5.0; r.x = 6.0; end when; diff --git a/ModelicaCompliance/Components/Prefixes/FlowValidClassType.mo b/ModelicaCompliance/Components/Prefixes/FlowValidClassType.mo index 58e112f..cd392d8 100644 --- a/ModelicaCompliance/Components/Prefixes/FlowValidClassType.mo +++ b/ModelicaCompliance/Components/Prefixes/FlowValidClassType.mo @@ -1,7 +1,7 @@ within ModelicaCompliance.Components.Prefixes; model FlowValidClassType - extends Icons.TestCase; + //extends Icons.TestCase; record R Real f; @@ -22,8 +22,11 @@ model FlowValidClassType end CC; model M - CR cr(e = 1.0); - CC cc(e = 2.0); + CR cr; + CC cc; + equation + cr.e = 1.0; + cc.e = 2.0; end M; M m; diff --git a/ModelicaCompliance/Connections/Declarations/ArrayEquations.mo b/ModelicaCompliance/Connections/Declarations/ArrayEquations.mo index 7357b1c..26275fe 100644 --- a/ModelicaCompliance/Connections/Declarations/ArrayEquations.mo +++ b/ModelicaCompliance/Connections/Declarations/ArrayEquations.mo @@ -10,15 +10,16 @@ model ArrayEquations model M C c1, c2, c3; + equation + c1.e = {1.0, 2.0, 3.0}; + c1.f = {4.0, 5.0, 6.0}; + c2.f = {7.0, 8.0, 9.0}; end M; M m; equation connect(m.c1, m.c2); connect(m.c2, m.c3); - m.c1.e = {1.0, 2.0, 3.0}; - m.c1.f = {4.0, 5.0, 6.0}; - m.c2.f = {7.0, 8.0, 9.0}; assert(Util.compareReal(m.c1.e[1], 1.0), "m.c1.e[1] was not set correctly."); assert(Util.compareReal(m.c1.e[2], 2.0), "m.c1.e[2] was not set correctly."); diff --git a/ModelicaCompliance/Connections/Declarations/ConnectArrays.mo b/ModelicaCompliance/Connections/Declarations/ConnectArrays.mo index 362ffd1..07ed41e 100644 --- a/ModelicaCompliance/Connections/Declarations/ConnectArrays.mo +++ b/ModelicaCompliance/Connections/Declarations/ConnectArrays.mo @@ -10,20 +10,20 @@ model ConnectArrays model M C c[2]; + parameter Integer n = 1; + equation + c[n].e = 1.0; + c[n].f = 2.0; end M; - M m1, m2; + M m1(n = 1), m2(n = 2); equation - m1.c[1].e = 1.0; - m1.c[1].f = 2.0; - m1.c[2].e = 1.0; - m1.c[2].f = 2.0; connect(m1.c, m2.c); assert(Util.compareReal(m2.c[1].e, 1.0), "m2.c[1].e was given an incorrect value."); assert(Util.compareReal(m2.c[1].f, -2.0), "m2.c[1].f was given an incorrect value."); assert(Util.compareReal(m2.c[2].e, 1.0), "m2.c[2].e was given an incorrect value."); - assert(Util.compareReal(m2.c[2].f, -2.0), "m2.c[2].f was given an incorrect value."); + assert(Util.compareReal(m2.c[2].f, 2.0), "m2.c[2].f was given an incorrect value."); annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"9.1"})), experiment(StopTime = 0.01), diff --git a/ModelicaCompliance/Connections/Declarations/ConnectParamSubscript.mo b/ModelicaCompliance/Connections/Declarations/ConnectParamSubscript.mo index 3829369..e95e842 100644 --- a/ModelicaCompliance/Connections/Declarations/ConnectParamSubscript.mo +++ b/ModelicaCompliance/Connections/Declarations/ConnectParamSubscript.mo @@ -10,13 +10,14 @@ model ConnectParamSubscript model M C c[2]; + equation + c[1].e = 1.0; + c[1].f = 2.0; end M; parameter Integer n = 2; M m; equation - m.c[1].e = 1.0; - m.c[2].f = 2.0; connect(m.c[1], m.c[n]); annotation ( diff --git a/ModelicaCompliance/Connections/Declarations/ConnectWholeDim.mo b/ModelicaCompliance/Connections/Declarations/ConnectWholeDim.mo index 5413b61..0afed98 100644 --- a/ModelicaCompliance/Connections/Declarations/ConnectWholeDim.mo +++ b/ModelicaCompliance/Connections/Declarations/ConnectWholeDim.mo @@ -10,15 +10,14 @@ model ConnectWholeDim model M C c[2]; + equation + c[1].e = c[1].f; + c[2].e = c[2].f; end M; parameter Integer n = 2; M m1, m2; equation - m1.c[1].e = 1.0; - m1.c[1].f = 2.0; - m1.c[2].e = 1.0; - m1.c[2].f = 2.0; connect(m1.c[:], m2.c[1:2]); annotation ( diff --git a/ModelicaCompliance/Connections/Declarations/OperatorRecordEquations.mo b/ModelicaCompliance/Connections/Declarations/OperatorRecordEquations.mo index 4290d20..e34689a 100644 --- a/ModelicaCompliance/Connections/Declarations/OperatorRecordEquations.mo +++ b/ModelicaCompliance/Connections/Declarations/OperatorRecordEquations.mo @@ -43,13 +43,14 @@ model OperatorRecordEquations model M C c1; C c2; + equation + c1.e = Complex(1.0, 2.0); + c1.f = Complex(3.0, 4.0); end M; M m; equation connect(m.c1, m.c2); - m.c1.e = Complex(1.0, 2.0); - m.c1.f = Complex(3.0, 4.0); assert(Util.compareReal(m.c1.e.re, 1.0), "m.c1.e.re has incorrect value."); assert(Util.compareReal(m.c1.e.im, 2.0), "m.c1.e.im has incorrect value."); diff --git a/ModelicaCompliance/Connections/Declarations/SimpleEquations.mo b/ModelicaCompliance/Connections/Declarations/SimpleEquations.mo index 630c72f..2bd6e22 100644 --- a/ModelicaCompliance/Connections/Declarations/SimpleEquations.mo +++ b/ModelicaCompliance/Connections/Declarations/SimpleEquations.mo @@ -10,15 +10,16 @@ model SimpleEquations model M C c1, c2, c3; + equation + c1.e = 2.0; + c1.f = 3.0; + c2.f = 4.0; end M; M m; equation connect(m.c1, m.c2); connect(m.c2, m.c3); - m.c1.e = 2.0; - m.c1.f = 3.0; - m.c2.f = 4.0; assert(Util.compareReal(m.c1.e, 2.0), "m.c1.e was not set correctly."); assert(Util.compareReal(m.c2.e, 2.0), "m.c2.e was not set correctly."); diff --git a/ModelicaCompliance/Connections/Expandable/AugmentComplex.mo b/ModelicaCompliance/Connections/Expandable/AugmentComplex.mo index e3c4405..ffe3f32 100644 --- a/ModelicaCompliance/Connections/Expandable/AugmentComplex.mo +++ b/ModelicaCompliance/Connections/Expandable/AugmentComplex.mo @@ -13,13 +13,14 @@ model AugmentComplex model M C c; + equation + c.e = 1.0; end M; EC ec; M m; equation connect(m.c, ec.c); - m.c.e = 1.0; annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"9.1.3"})), diff --git a/ModelicaCompliance/Connections/Expandable/FlowInConnectorInExpandable.mo b/ModelicaCompliance/Connections/Expandable/FlowInConnectorInExpandable.mo index 0a0e004..4746adc 100644 --- a/ModelicaCompliance/Connections/Expandable/FlowInConnectorInExpandable.mo +++ b/ModelicaCompliance/Connections/Expandable/FlowInConnectorInExpandable.mo @@ -14,13 +14,14 @@ model FlowInConnectorInExpandable model M C c; + equation + c.e = 1.0; end M; M m; EC ec; equation connect(m.c, ec.c); - m.c.e = 1.0; annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"9.1.3"})), diff --git a/ModelicaCompliance/Connections/Restrictions/ConnectConstants.mo b/ModelicaCompliance/Connections/Restrictions/ConnectConstants.mo index 962d2ca..41d4221 100644 --- a/ModelicaCompliance/Connections/Restrictions/ConnectConstants.mo +++ b/ModelicaCompliance/Connections/Restrictions/ConnectConstants.mo @@ -11,13 +11,14 @@ model ConnectConstants model M C c1, c2; + equation + c1.e = 1.0; + c1.f = 3.0; end M; M m; equation connect(m.c1, m.c2); - m.c1.e = 1.0; - m.c1.f = 3.0; annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"9.3"})), diff --git a/ModelicaCompliance/Connections/Restrictions/ConnectParameters.mo b/ModelicaCompliance/Connections/Restrictions/ConnectParameters.mo index e7f72df..8068a50 100644 --- a/ModelicaCompliance/Connections/Restrictions/ConnectParameters.mo +++ b/ModelicaCompliance/Connections/Restrictions/ConnectParameters.mo @@ -11,13 +11,14 @@ model ConnectParameters model M C c1, c2; + equation + c1.e = 1.0; + c1.f = 3.0; end M; M m; equation connect(m.c1, m.c2); - m.c1.e = 1.0; - m.c1.f = 3.0; annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"9.3"})), diff --git a/ModelicaCompliance/Connections/Stream/InStreamTwoInside.mo b/ModelicaCompliance/Connections/Stream/InStreamTwoInside.mo index 14c4759..1aef519 100644 --- a/ModelicaCompliance/Connections/Stream/InStreamTwoInside.mo +++ b/ModelicaCompliance/Connections/Stream/InStreamTwoInside.mo @@ -12,21 +12,29 @@ model InStreamTwoInside model A S s; Real instream_s; - equation + equation instream_s = inStream(s.s); + s.r = 1.0; + s.s = 3.0; end A; - A a1, a2; + model B + S s; + Real instream_s; + equation + instream_s = inStream(s.s); + s.f = 2.0; + s.s = 4.0; + end B; + + A a1; + B a2; Real instream_s_a1; Real instream_s_a2; -equation +equation connect(a1.s, a2.s); instream_s_a1 = inStream(a1.s.s); instream_s_a2 = inStream(a2.s.s); - a1.s.r = 1.0; - a1.s.f = 2.0; - a1.s.s = 3.0; - a2.s.s = 4.0; assert(Util.compareReal(a1.instream_s, a2.s.s), "a1.instream_s was not set correctly."); assert(Util.compareReal(a2.instream_s, a1.s.s), "a2.instream_s was not set correctly."); diff --git a/ModelicaCompliance/Operators/Special/Cardinality.mo b/ModelicaCompliance/Operators/Special/Cardinality.mo index 7a0f7b5..240104b 100644 --- a/ModelicaCompliance/Operators/Special/Cardinality.mo +++ b/ModelicaCompliance/Operators/Special/Cardinality.mo @@ -13,6 +13,12 @@ model Cardinality Integer n1 = cardinality(c1); Integer n2 = cardinality(c2); Integer n3 = cardinality(c4); + equation + c1.e = 1.0; + c1.f = 1.0; + c2.f = 2.0; + c3.f = 3.0; + c4.f = 4.0; end M; M m; @@ -21,11 +27,6 @@ equation connect(m.c2, m.c3); connect(m.c2, m.c4); connect(m.c4, m.c5); - m.c1.e = 1.0; - m.c1.f = 1.0; - m.c2.f = 2.0; - m.c3.f = 3.0; - m.c4.f = 4.0; assert(m.n1 == 1, "cardinality(c1) was incorrectly evaluated."); assert(m.n2 == 3, "cardinality(c2) was incorrectly evaluated."); diff --git a/ModelicaCompliance/Scoping/MemberAccess/AccessAlgorithm.mo b/ModelicaCompliance/Scoping/MemberAccess/AccessAlgorithm.mo index 642f756..ad22a2a 100644 --- a/ModelicaCompliance/Scoping/MemberAccess/AccessAlgorithm.mo +++ b/ModelicaCompliance/Scoping/MemberAccess/AccessAlgorithm.mo @@ -4,12 +4,15 @@ model AccessAlgorithm extends Icons.TestCase; model A - Real x; + Real x = 1.0; end A; A a; + Real y; algorithm - a.x := 1.0; + y := a.x; + + assert(Util.compareReal(y, 1.0), "y was not correctly set."); annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"3.6.6"})), diff --git a/ModelicaCompliance/Scoping/MemberAccess/AccessEquation.mo b/ModelicaCompliance/Scoping/MemberAccess/AccessEquation.mo index a85bdea..2b4e3c7 100644 --- a/ModelicaCompliance/Scoping/MemberAccess/AccessEquation.mo +++ b/ModelicaCompliance/Scoping/MemberAccess/AccessEquation.mo @@ -4,12 +4,15 @@ model AccessEquation extends Icons.TestCase; model A - Real x; + Real x = 1.0; end A; A a; + Real y; equation - a.x = 1.0; + y = a.x; + + assert(Util.compareReal(y, 1.0), "y was not set correctly."); annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"3.6.6"})), diff --git a/ModelicaCompliance/Scoping/MemberAccess/AccessNestedAlgorithm.mo b/ModelicaCompliance/Scoping/MemberAccess/AccessNestedAlgorithm.mo index 52f05f8..f0d042f 100644 --- a/ModelicaCompliance/Scoping/MemberAccess/AccessNestedAlgorithm.mo +++ b/ModelicaCompliance/Scoping/MemberAccess/AccessNestedAlgorithm.mo @@ -6,7 +6,7 @@ model AccessNestedAlgorithm model A model B model C - Real x; + Real x = 1.0; end C; C c; @@ -16,8 +16,11 @@ model AccessNestedAlgorithm end A; A a; + Real y; algorithm - a.b.c.x := 1.0; + y := a.b.c.x; + + assert(Util.compareReal(y, 1.0), "y was not set correctly."); annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"3.6.6"})), diff --git a/ModelicaCompliance/Scoping/MemberAccess/AccessNestedEquation.mo b/ModelicaCompliance/Scoping/MemberAccess/AccessNestedEquation.mo index ffd9500..850534a 100644 --- a/ModelicaCompliance/Scoping/MemberAccess/AccessNestedEquation.mo +++ b/ModelicaCompliance/Scoping/MemberAccess/AccessNestedEquation.mo @@ -6,7 +6,7 @@ model AccessNestedEquation model A model B model C - Real x; + Real x = 1.0; end C; C c; @@ -16,8 +16,11 @@ model AccessNestedEquation end A; A a; + Real y; equation - a.b.c.x = 1.0; + y = a.b.c.x; + + assert(Util.compareReal(y, 1.0), "y was not set correctly."); annotation ( __ModelicaAssociation(TestCase(shouldPass = true, section = {"3.6.6"})),