From fac042699b8bb8a5a1ab7954a6a0cfa2d0a1f3cb Mon Sep 17 00:00:00 2001 From: kabdelhak Date: Mon, 15 Jul 2019 11:52:29 +0200 Subject: [PATCH] [BE] update InlineAfterIndexReduction - inline function calls with InlineAfterIndexReduction only for matching - ticket 5170 - fixup testuite --- OMCompiler/Compiler/BackEnd/BackendDAEUtil.mo | 11 ++- OMCompiler/Compiler/BackEnd/BackendInline.mo | 2 +- .../fmu/modelExchange/1.0/Crane_FMU1_CPP.mos | 10 +-- testsuite/openmodelica/xml/XmlDumpComment.mos | 52 +++++++------- ...nics.MultiBody.Examples.Loops.EngineV6.mos | 2 +- ...iBody.Examples.Loops.EngineV6_analytic.mos | 8 +-- .../indexreduction/SingularPlanarLoop.mos | 71 +++++++++---------- .../modelica/others/EngineV6_output.mos | 4 +- .../modelica/parameters/Engine1a_output.mos | 2 +- .../modelica/resolveLoops/NPendulum2.mos | 12 ++-- .../modelica/resolveLoops/NPendulum3.mos | 12 ++-- .../modelica/tearing/Tearing12-cel.mos | 8 +-- .../modelica/tearing/Tearing12-celMC3.mos | 12 ++-- .../modelica/tearing/Tearing12-omc.mos | 12 ++-- 14 files changed, 113 insertions(+), 105 deletions(-) diff --git a/OMCompiler/Compiler/BackEnd/BackendDAEUtil.mo b/OMCompiler/Compiler/BackEnd/BackendDAEUtil.mo index f815f5d84d8..5f1a664d0fe 100644 --- a/OMCompiler/Compiler/BackEnd/BackendDAEUtil.mo +++ b/OMCompiler/Compiler/BackEnd/BackendDAEUtil.mo @@ -2519,6 +2519,7 @@ public function incidenceRow output Integer rowSize; protected list whenIntegerLst; + BackendDAE.Equation inlinedEquation; algorithm whenIntegerLst := matchcontinue inIndexType local @@ -2543,7 +2544,15 @@ algorithm else {}; end matchcontinue; - (outIntegerLst,rowSize) := matchcontinue (inEquation) + /* Fix for ticket #5170 + Functions with the annotation "InlineAfterIndexReduction" can contain dependencies which are only + used for differentiation purposes and should not be part of the adjacency matrix. Therefore these + are inlined before constructing the adjacency row. + E.g. func(a,b) = a --d/dt--> func_der(a,b) = b + */ + (inlinedEquation,_) := BackendInline.inlineEq(inEquation,(functionTree,{DAE.AFTER_INDEX_RED_INLINE()})); + + (outIntegerLst,rowSize) := matchcontinue (inlinedEquation) local AvlSetInt.Tree lst1,lst2,res; list dimsize; diff --git a/OMCompiler/Compiler/BackEnd/BackendInline.mo b/OMCompiler/Compiler/BackEnd/BackendInline.mo index b753a34065d..2a444e3a5eb 100644 --- a/OMCompiler/Compiler/BackEnd/BackendInline.mo +++ b/OMCompiler/Compiler/BackEnd/BackendInline.mo @@ -172,7 +172,7 @@ algorithm end for; end inlineEquationOptArray; -protected function inlineEq " +public function inlineEq " inlines function calls in equations" input BackendDAE.Equation inEquation; input Inline.Functiontuple fns; diff --git a/testsuite/openmodelica/cppruntime/fmu/modelExchange/1.0/Crane_FMU1_CPP.mos b/testsuite/openmodelica/cppruntime/fmu/modelExchange/1.0/Crane_FMU1_CPP.mos index d766c6ee1a0..929b6335aab 100644 --- a/testsuite/openmodelica/cppruntime/fmu/modelExchange/1.0/Crane_FMU1_CPP.mos +++ b/testsuite/openmodelica/cppruntime/fmu/modelExchange/1.0/Crane_FMU1_CPP.mos @@ -42,11 +42,11 @@ val(prismatic_v, 1); // LOG_SUCCESS | info | The simulation finished successfully. // " // end SimulationResult; -// "[openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:794:3-794:76:writable] Warning: Parameter world_label2 has no value, and is fixed during initialization (fixed=true), using available start value (start="y") as default value. -// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:793:3-793:78:writable] Warning: Parameter world_label1 has no value, and is fixed during initialization (fixed=true), using available start value (start="x") as default value. -// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:792:3-792:80:writable] Warning: Parameter fixedTranslation_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value. -// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:791:3-791:73:writable] Warning: Parameter bodyShape_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value. -// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:790:3-790:90:writable] Warning: Parameter bodyShape_frameTranslation_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value. +// "[openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:793:3-793:76:writable] Warning: Parameter world_label2 has no value, and is fixed during initialization (fixed=true), using available start value (start="y") as default value. +// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:792:3-792:78:writable] Warning: Parameter world_label1 has no value, and is fixed during initialization (fixed=true), using available start value (start="x") as default value. +// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:791:3-791:80:writable] Warning: Parameter fixedTranslation_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value. +// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:790:3-790:73:writable] Warning: Parameter bodyShape_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value. +// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:789:3-789:90:writable] Warning: Parameter bodyShape_frameTranslation_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value. // " // 0.9493545676148092 // 0.3948240567431445 diff --git a/testsuite/openmodelica/xml/XmlDumpComment.mos b/testsuite/openmodelica/xml/XmlDumpComment.mos index 13c97ebf4c8..8cfbe52d2e3 100644 --- a/testsuite/openmodelica/xml/XmlDumpComment.mos +++ b/testsuite/openmodelica/xml/XmlDumpComment.mos @@ -22558,8 +22558,8 @@ readFile("Modelica.Mechanics.MultiBody.Examples.Elementary.Pendulum.xml"); // // // -// -// +// +// // // // @@ -22580,15 +22580,15 @@ readFile("Modelica.Mechanics.MultiBody.Examples.Elementary.Pendulum.xml"); // // // -// +// // // // -// -// +// +// // -// -// +// +// // // // @@ -22598,8 +22598,8 @@ readFile("Modelica.Mechanics.MultiBody.Examples.Elementary.Pendulum.xml"); // // // -// -// +// +// // // // @@ -22782,51 +22782,51 @@ readFile("Modelica.Mechanics.MultiBody.Examples.Elementary.Pendulum.xml"); // // // -// -// +// // // -// -// // -// -// // -// +// +// // +// +// +// +// // // -// +// // // // // // -// +// // // -// +// // // -// +// // // -// +// // // -// +// // // -// +// // // -// +// // // -// +// // // -// +// // // // diff --git a/testsuite/simulation/libraries/msl32/Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6.mos b/testsuite/simulation/libraries/msl32/Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6.mos index f0ddcaaaa96..dca7002ccb5 100644 --- a/testsuite/simulation/libraries/msl32/Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6.mos +++ b/testsuite/simulation/libraries/msl32/Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6.mos @@ -56,7 +56,7 @@ runScript(modelTesting);getErrorString(); // * Torn equation systems: 13 // * Mixed (continuous/discrete) equation systems: 0 // Notification: Torn system details for strict tearing set: -// * Linear torn systems: 7 {(27,17.6%) 757,(2,100.0%) 11,(3,88.9%) 10,(3,88.9%) 10,(3,88.9%) 10,(2,100.0%) 11,(2,100.0%) 11} +// * Linear torn systems: 7 {(27,17.6%) 757,(2,100.0%) 11,(2,100.0%) 11,(3,88.9%) 10,(2,100.0%) 11,(2,100.0%) 11,(2,100.0%) 11} // * Non-linear torn systems: 6 {2 12,2 12,2 12,2 12,2 12,2 12} // Notification: Model statistics after passing the back-end for simulation: // * Number of independent subsystems: 217 diff --git a/testsuite/simulation/libraries/msl32/Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6_analytic.mos b/testsuite/simulation/libraries/msl32/Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6_analytic.mos index 0f4262db79a..14170edf36e 100644 --- a/testsuite/simulation/libraries/msl32/Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6_analytic.mos +++ b/testsuite/simulation/libraries/msl32/Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6_analytic.mos @@ -45,8 +45,8 @@ runScript(modelTesting);getErrorString(); // * Number of discrete variables: 333 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for initialization (2820): -// * Single equations (assignments): 2813 +// Notification: Strong component statistics for initialization (2822): +// * Single equations (assignments): 2815 // * Array equations: 6 // * Algorithm blocks: 0 // * Record equations: 0 @@ -64,8 +64,8 @@ runScript(modelTesting);getErrorString(); // * Number of discrete variables: 0 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for simulation (1341): -// * Single equations (assignments): 1340 +// Notification: Strong component statistics for simulation (1343): +// * Single equations (assignments): 1342 // * Array equations: 0 // * Algorithm blocks: 0 // * Record equations: 0 diff --git a/testsuite/simulation/modelica/indexreduction/SingularPlanarLoop.mos b/testsuite/simulation/modelica/indexreduction/SingularPlanarLoop.mos index a9300ce73b2..efa25c04540 100644 --- a/testsuite/simulation/modelica/indexreduction/SingularPlanarLoop.mos +++ b/testsuite/simulation/modelica/indexreduction/SingularPlanarLoop.mos @@ -20,57 +20,56 @@ getErrorString(); // messages = "Failed to build model: SingularPlanarLoop" // end SimulationResult; // "[Modelica 3.2.1/Mechanics/MultiBody/Joints.mo:321:7-321:60:writable] Error: Model is structurally singular, error found sorting equations -// 92: bodyshape3.frame_a.R.T[2,1] = (revolute3.e[2] - revolute3.e[2] * cos(revolute3.phi)) * revolute3.e[1] - revolute3.e[3] * sin(revolute3.phi); -// 71: bodyshape3.frame_a.R.T[2,1] = revolute2.R_rel.T[2,1] * bodyshape1.frame_a.R.T[1,1] + revolute2.R_rel.T[2,2] * bodyshape1.frame_a.R.T[2,1] + revolute2.R_rel.T[2,3] * bodyshape1.frame_a.R.T[3,1]; -// 9: revolute1.R_rel.T[1,1] = revolute1.e[1] ^ 2.0 + (1.0 - revolute1.e[1] ^ 2.0) * cos(revolute1.phi); -// 96: bodyshape3.frame_a.R.T[3,2] = (revolute3.e[3] - revolute3.e[3] * cos(revolute3.phi)) * revolute3.e[2] - revolute3.e[1] * sin(revolute3.phi); -// 93: bodyshape3.frame_a.R.T[2,2] = revolute3.e[2] ^ 2.0 + (1.0 - revolute3.e[2] ^ 2.0) * cos(revolute3.phi); -// 90: bodyshape3.frame_a.R.T[1,2] = (revolute3.e[1] - revolute3.e[1] * cos(revolute3.phi)) * revolute3.e[2] + revolute3.e[3] * sin(revolute3.phi); -// 72: bodyshape3.frame_a.R.T[2,2] = revolute2.R_rel.T[2,1] * bodyshape1.frame_a.R.T[1,2] + revolute2.R_rel.T[2,2] * bodyshape1.frame_a.R.T[2,2] + revolute2.R_rel.T[2,3] * bodyshape1.frame_a.R.T[3,2]; -// 69: bodyshape3.frame_a.R.T[1,2] = revolute2.R_rel.T[1,1] * bodyshape1.frame_a.R.T[1,2] + revolute2.R_rel.T[1,2] * bodyshape1.frame_a.R.T[2,2] + revolute2.R_rel.T[1,3] * bodyshape1.frame_a.R.T[3,2]; -// 75: bodyshape3.frame_a.R.T[3,2] = revolute2.R_rel.T[3,1] * bodyshape1.frame_a.R.T[1,2] + revolute2.R_rel.T[3,2] * bodyshape1.frame_a.R.T[2,2] + revolute2.R_rel.T[3,3] * bodyshape1.frame_a.R.T[3,2]; -// 28: bodyshape1.frame_a.R.T[3,2] = revolute1.R_rel.T[3,1] * revolute1.frame_a.R.T[1,2] + revolute1.R_rel.T[3,2] * revolute1.frame_a.R.T[2,2] + revolute1.R_rel.T[3,3] * revolute1.frame_a.R.T[3,2]; -// 2: 0.0 = atan2(-revolute1.frame_a.R.T[1,3], revolute1.frame_a.R.T[2,2]); -// 25: bodyshape1.frame_a.R.T[2,2] = revolute1.R_rel.T[2,1] * revolute1.frame_a.R.T[1,2] + revolute1.R_rel.T[2,2] * revolute1.frame_a.R.T[2,2] + revolute1.R_rel.T[2,3] * revolute1.frame_a.R.T[3,2]; +// 94: bodyshape3.frame_a.R.T[2,3] = (revolute3.e[2] - revolute3.e[2] * cos(revolute3.phi)) * revolute3.e[3] + revolute3.e[1] * sin(revolute3.phi); +// 73: bodyshape3.frame_a.R.T[2,3] = revolute2.R_rel.T[2,1] * bodyshape1.frame_a.R.T[1,3] + revolute2.R_rel.T[2,2] * bodyshape1.frame_a.R.T[2,3] + revolute2.R_rel.T[2,3] * bodyshape1.frame_a.R.T[3,3]; +// 91: bodyshape3.frame_a.R.T[1,3] = (revolute3.e[1] - revolute3.e[1] * cos(revolute3.phi)) * revolute3.e[3] - revolute3.e[2] * sin(revolute3.phi); +// 70: bodyshape3.frame_a.R.T[1,3] = revolute2.R_rel.T[1,1] * bodyshape1.frame_a.R.T[1,3] + revolute2.R_rel.T[1,2] * bodyshape1.frame_a.R.T[2,3] + revolute2.R_rel.T[1,3] * bodyshape1.frame_a.R.T[3,3]; +// 92: bodyshape3.frame_a.R.T[2,1] = (revolute3.e[2] - revolute3.e[2] * cos(revolute3.phi)) * revolute3.e[1] - revolute3.e[3] * sin(revolute3.phi); +// 97: bodyshape3.frame_a.R.T[3,3] = revolute3.e[3] ^ 2.0 + (1.0 - revolute3.e[3] ^ 2.0) * cos(revolute3.phi); +// 23: bodyshape1.frame_a.R.T[1,3] = revolute1.R_rel.T[1,1] * revolute1.frame_a.R.T[1,3] + revolute1.R_rel.T[1,2] * revolute1.frame_a.R.T[2,3] + revolute1.R_rel.T[1,3] * revolute1.frame_a.R.T[3,3]; +// 76: bodyshape3.frame_a.R.T[3,3] = revolute2.R_rel.T[3,1] * bodyshape1.frame_a.R.T[1,3] + revolute2.R_rel.T[3,2] * bodyshape1.frame_a.R.T[2,3] + revolute2.R_rel.T[3,3] * bodyshape1.frame_a.R.T[3,3]; +// 15: revolute1.R_rel.T[3,1] = (revolute1.e[3] - revolute1.e[3] * cos(revolute1.phi)) * revolute1.e[1] + revolute1.e[2] * sin(revolute1.phi); // 11: revolute1.R_rel.T[1,3] = (revolute1.e[1] - revolute1.e[1] * cos(revolute1.phi)) * revolute1.e[3] - revolute1.e[2] * sin(revolute1.phi); // 10: revolute1.R_rel.T[1,2] = (revolute1.e[1] - revolute1.e[1] * cos(revolute1.phi)) * revolute1.e[2] + revolute1.e[3] * sin(revolute1.phi); +// 9: revolute1.R_rel.T[1,1] = revolute1.e[1] ^ 2.0 + (1.0 - revolute1.e[1] ^ 2.0) * cos(revolute1.phi); +// 25: bodyshape1.frame_a.R.T[2,2] = revolute1.R_rel.T[2,1] * revolute1.frame_a.R.T[1,2] + revolute1.R_rel.T[2,2] * revolute1.frame_a.R.T[2,2] + revolute1.R_rel.T[2,3] * revolute1.frame_a.R.T[3,2]; +// 3: 0.0 = atan2(revolute1.frame_a.R.T[1,2], revolute1.frame_a.R.T[3,3]); // 22: bodyshape1.frame_a.R.T[1,2] = revolute1.R_rel.T[1,1] * revolute1.frame_a.R.T[1,2] + revolute1.R_rel.T[1,2] * revolute1.frame_a.R.T[2,2] + revolute1.R_rel.T[1,3] * revolute1.frame_a.R.T[3,2]; +// 17: revolute1.R_rel.T[3,3] = revolute1.e[3] ^ 2.0 + (1.0 - revolute1.e[3] ^ 2.0) * cos(revolute1.phi); +// 16: revolute1.R_rel.T[3,2] = (revolute1.e[3] - revolute1.e[3] * cos(revolute1.phi)) * revolute1.e[2] - revolute1.e[1] * sin(revolute1.phi); +// 28: bodyshape1.frame_a.R.T[3,2] = revolute1.R_rel.T[3,1] * revolute1.frame_a.R.T[1,2] + revolute1.R_rel.T[3,2] * revolute1.frame_a.R.T[2,2] + revolute1.R_rel.T[3,3] * revolute1.frame_a.R.T[3,2]; +// 26: bodyshape1.frame_a.R.T[2,3] = revolute1.R_rel.T[2,1] * revolute1.frame_a.R.T[1,3] + revolute1.R_rel.T[2,2] * revolute1.frame_a.R.T[2,3] + revolute1.R_rel.T[2,3] * revolute1.frame_a.R.T[3,3]; +// 2: 0.0 = atan2(-revolute1.frame_a.R.T[1,3], revolute1.frame_a.R.T[2,2]); +// 29: bodyshape1.frame_a.R.T[3,3] = revolute1.R_rel.T[3,1] * revolute1.frame_a.R.T[1,3] + revolute1.R_rel.T[3,2] * revolute1.frame_a.R.T[2,3] + revolute1.R_rel.T[3,3] * revolute1.frame_a.R.T[3,3]; // 14: revolute1.R_rel.T[2,3] = (revolute1.e[2] - revolute1.e[2] * cos(revolute1.phi)) * revolute1.e[3] + revolute1.e[1] * sin(revolute1.phi); // 13: revolute1.R_rel.T[2,2] = revolute1.e[2] ^ 2.0 + (1.0 - revolute1.e[2] ^ 2.0) * cos(revolute1.phi); // 12: revolute1.R_rel.T[2,1] = (revolute1.e[2] - revolute1.e[2] * cos(revolute1.phi)) * revolute1.e[1] - revolute1.e[3] * sin(revolute1.phi); -// 3: 0.0 = atan2(revolute1.frame_a.R.T[1,2], revolute1.frame_a.R.T[3,3]); -// 23: bodyshape1.frame_a.R.T[1,3] = revolute1.R_rel.T[1,1] * revolute1.frame_a.R.T[1,3] + revolute1.R_rel.T[1,2] * revolute1.frame_a.R.T[2,3] + revolute1.R_rel.T[1,3] * revolute1.frame_a.R.T[3,3]; -// 26: bodyshape1.frame_a.R.T[2,3] = revolute1.R_rel.T[2,1] * revolute1.frame_a.R.T[1,3] + revolute1.R_rel.T[2,2] * revolute1.frame_a.R.T[2,3] + revolute1.R_rel.T[2,3] * revolute1.frame_a.R.T[3,3]; -// 17: revolute1.R_rel.T[3,3] = revolute1.e[3] ^ 2.0 + (1.0 - revolute1.e[3] ^ 2.0) * cos(revolute1.phi); -// 16: revolute1.R_rel.T[3,2] = (revolute1.e[3] - revolute1.e[3] * cos(revolute1.phi)) * revolute1.e[2] - revolute1.e[1] * sin(revolute1.phi); -// 15: revolute1.R_rel.T[3,1] = (revolute1.e[3] - revolute1.e[3] * cos(revolute1.phi)) * revolute1.e[1] + revolute1.e[2] * sin(revolute1.phi); // 21: bodyshape1.frame_a.R.T[1,1] = revolute1.R_rel.T[1,1] * revolute1.frame_a.R.T[1,1] + revolute1.R_rel.T[1,2] * revolute1.frame_a.R.T[2,1] + revolute1.R_rel.T[1,3] * revolute1.frame_a.R.T[3,1]; -// 24: bodyshape1.frame_a.R.T[2,1] = revolute1.R_rel.T[2,1] * revolute1.frame_a.R.T[1,1] + revolute1.R_rel.T[2,2] * revolute1.frame_a.R.T[2,1] + revolute1.R_rel.T[2,3] * revolute1.frame_a.R.T[3,1]; -// 1: 0.0 = atan2(revolute1.frame_a.R.T[2,3], revolute1.frame_a.R.T[1,1]); -// 95: bodyshape3.frame_a.R.T[3,1] = (revolute3.e[3] - revolute3.e[3] * cos(revolute3.phi)) * revolute3.e[1] + revolute3.e[2] * sin(revolute3.phi); // 27: bodyshape1.frame_a.R.T[3,1] = revolute1.R_rel.T[3,1] * revolute1.frame_a.R.T[1,1] + revolute1.R_rel.T[3,2] * revolute1.frame_a.R.T[2,1] + revolute1.R_rel.T[3,3] * revolute1.frame_a.R.T[3,1]; -// 74: bodyshape3.frame_a.R.T[3,1] = revolute2.R_rel.T[3,1] * bodyshape1.frame_a.R.T[1,1] + revolute2.R_rel.T[3,2] * bodyshape1.frame_a.R.T[2,1] + revolute2.R_rel.T[3,3] * bodyshape1.frame_a.R.T[3,1]; -// 68: bodyshape3.frame_a.R.T[1,1] = revolute2.R_rel.T[1,1] * bodyshape1.frame_a.R.T[1,1] + revolute2.R_rel.T[1,2] * bodyshape1.frame_a.R.T[2,1] + revolute2.R_rel.T[1,3] * bodyshape1.frame_a.R.T[3,1]; +// 1: 0.0 = atan2(revolute1.frame_a.R.T[2,3], revolute1.frame_a.R.T[1,1]); // 89: bodyshape3.frame_a.R.T[1,1] = revolute3.e[1] ^ 2.0 + (1.0 - revolute3.e[1] ^ 2.0) * cos(revolute3.phi); -// 97: bodyshape3.frame_a.R.T[3,3] = revolute3.e[3] ^ 2.0 + (1.0 - revolute3.e[3] ^ 2.0) * cos(revolute3.phi); -// 63: revolute2.R_rel.T[3,2] = (revolute2.e[3] - revolute2.e[3] * cos(revolute2.phi)) * revolute2.e[2] - revolute2.e[1] * sin(revolute2.phi); -// 62: revolute2.R_rel.T[3,1] = (revolute2.e[3] - revolute2.e[3] * cos(revolute2.phi)) * revolute2.e[1] + revolute2.e[2] * sin(revolute2.phi); -// 76: bodyshape3.frame_a.R.T[3,3] = revolute2.R_rel.T[3,1] * bodyshape1.frame_a.R.T[1,3] + revolute2.R_rel.T[3,2] * bodyshape1.frame_a.R.T[2,3] + revolute2.R_rel.T[3,3] * bodyshape1.frame_a.R.T[3,3]; -// 64: revolute2.R_rel.T[3,3] = revolute2.e[3] ^ 2.0 + (1.0 - revolute2.e[3] ^ 2.0) * cos(revolute2.phi); -// 94: bodyshape3.frame_a.R.T[2,3] = (revolute3.e[2] - revolute3.e[2] * cos(revolute3.phi)) * revolute3.e[3] + revolute3.e[1] * sin(revolute3.phi); +// 71: bodyshape3.frame_a.R.T[2,1] = revolute2.R_rel.T[2,1] * bodyshape1.frame_a.R.T[1,1] + revolute2.R_rel.T[2,2] * bodyshape1.frame_a.R.T[2,1] + revolute2.R_rel.T[2,3] * bodyshape1.frame_a.R.T[3,1]; +// 24: bodyshape1.frame_a.R.T[2,1] = revolute1.R_rel.T[2,1] * revolute1.frame_a.R.T[1,1] + revolute1.R_rel.T[2,2] * revolute1.frame_a.R.T[2,1] + revolute1.R_rel.T[2,3] * revolute1.frame_a.R.T[3,1]; +// 74: bodyshape3.frame_a.R.T[3,1] = revolute2.R_rel.T[3,1] * bodyshape1.frame_a.R.T[1,1] + revolute2.R_rel.T[3,2] * bodyshape1.frame_a.R.T[2,1] + revolute2.R_rel.T[3,3] * bodyshape1.frame_a.R.T[3,1]; +// 93: bodyshape3.frame_a.R.T[2,2] = revolute3.e[2] ^ 2.0 + (1.0 - revolute3.e[2] ^ 2.0) * cos(revolute3.phi); // 61: revolute2.R_rel.T[2,3] = (revolute2.e[2] - revolute2.e[2] * cos(revolute2.phi)) * revolute2.e[3] + revolute2.e[1] * sin(revolute2.phi); // 60: revolute2.R_rel.T[2,2] = revolute2.e[2] ^ 2.0 + (1.0 - revolute2.e[2] ^ 2.0) * cos(revolute2.phi); // 59: revolute2.R_rel.T[2,1] = (revolute2.e[2] - revolute2.e[2] * cos(revolute2.phi)) * revolute2.e[1] - revolute2.e[3] * sin(revolute2.phi); -// 91: bodyshape3.frame_a.R.T[1,3] = (revolute3.e[1] - revolute3.e[1] * cos(revolute3.phi)) * revolute3.e[3] - revolute3.e[2] * sin(revolute3.phi); +// 95: bodyshape3.frame_a.R.T[3,1] = (revolute3.e[3] - revolute3.e[3] * cos(revolute3.phi)) * revolute3.e[1] + revolute3.e[2] * sin(revolute3.phi); +// 56: revolute2.R_rel.T[1,1] = revolute2.e[1] ^ 2.0 + (1.0 - revolute2.e[1] ^ 2.0) * cos(revolute2.phi); +// 96: bodyshape3.frame_a.R.T[3,2] = (revolute3.e[3] - revolute3.e[3] * cos(revolute3.phi)) * revolute3.e[2] - revolute3.e[1] * sin(revolute3.phi); +// 64: revolute2.R_rel.T[3,3] = revolute2.e[3] ^ 2.0 + (1.0 - revolute2.e[3] ^ 2.0) * cos(revolute2.phi); +// 63: revolute2.R_rel.T[3,2] = (revolute2.e[3] - revolute2.e[3] * cos(revolute2.phi)) * revolute2.e[2] - revolute2.e[1] * sin(revolute2.phi); +// 62: revolute2.R_rel.T[3,1] = (revolute2.e[3] - revolute2.e[3] * cos(revolute2.phi)) * revolute2.e[1] + revolute2.e[2] * sin(revolute2.phi); +// 90: bodyshape3.frame_a.R.T[1,2] = (revolute3.e[1] - revolute3.e[1] * cos(revolute3.phi)) * revolute3.e[2] + revolute3.e[3] * sin(revolute3.phi); // 58: revolute2.R_rel.T[1,3] = (revolute2.e[1] - revolute2.e[1] * cos(revolute2.phi)) * revolute2.e[3] - revolute2.e[2] * sin(revolute2.phi); // 57: revolute2.R_rel.T[1,2] = (revolute2.e[1] - revolute2.e[1] * cos(revolute2.phi)) * revolute2.e[2] + revolute2.e[3] * sin(revolute2.phi); -// 56: revolute2.R_rel.T[1,1] = revolute2.e[1] ^ 2.0 + (1.0 - revolute2.e[1] ^ 2.0) * cos(revolute2.phi); -// 29: bodyshape1.frame_a.R.T[3,3] = revolute1.R_rel.T[3,1] * revolute1.frame_a.R.T[1,3] + revolute1.R_rel.T[3,2] * revolute1.frame_a.R.T[2,3] + revolute1.R_rel.T[3,3] * revolute1.frame_a.R.T[3,3]; -// 73: bodyshape3.frame_a.R.T[2,3] = revolute2.R_rel.T[2,1] * bodyshape1.frame_a.R.T[1,3] + revolute2.R_rel.T[2,2] * bodyshape1.frame_a.R.T[2,3] + revolute2.R_rel.T[2,3] * bodyshape1.frame_a.R.T[3,3]; -// 70: bodyshape3.frame_a.R.T[1,3] = revolute2.R_rel.T[1,1] * bodyshape1.frame_a.R.T[1,3] + revolute2.R_rel.T[1,2] * bodyshape1.frame_a.R.T[2,3] + revolute2.R_rel.T[1,3] * bodyshape1.frame_a.R.T[3,3]; -// 98: bodyshape3.body.w_a[1] = Modelica.Mechanics.MultiBody.Frames.resolve2(Modelica.Mechanics.MultiBody.Frames.Orientation({{bodyshape3.frame_a.R.T[1,1], bodyshape3.frame_a.R.T[1,2], bodyshape3.frame_a.R.T[1,3]}, {bodyshape3.frame_a.R.T[2,1], bodyshape3.frame_a.R.T[2,2], bodyshape3.frame_a.R.T[2,3]}, {bodyshape3.frame_a.R.T[3,1], bodyshape3.frame_a.R.T[3,2], bodyshape3.frame_a.R.T[3,3]}}, {revolute3.R_rel.w[1], revolute3.R_rel.w[2], revolute3.R_rel.w[3]}), {0.0, 0.0, 0.0})[1] + revolute3.R_rel.w[1]; +// 68: bodyshape3.frame_a.R.T[1,1] = revolute2.R_rel.T[1,1] * bodyshape1.frame_a.R.T[1,1] + revolute2.R_rel.T[1,2] * bodyshape1.frame_a.R.T[2,1] + revolute2.R_rel.T[1,3] * bodyshape1.frame_a.R.T[3,1]; +// 72: bodyshape3.frame_a.R.T[2,2] = revolute2.R_rel.T[2,1] * bodyshape1.frame_a.R.T[1,2] + revolute2.R_rel.T[2,2] * bodyshape1.frame_a.R.T[2,2] + revolute2.R_rel.T[2,3] * bodyshape1.frame_a.R.T[3,2]; +// 75: bodyshape3.frame_a.R.T[3,2] = revolute2.R_rel.T[3,1] * bodyshape1.frame_a.R.T[1,2] + revolute2.R_rel.T[3,2] * bodyshape1.frame_a.R.T[2,2] + revolute2.R_rel.T[3,3] * bodyshape1.frame_a.R.T[3,2]; +// 69: bodyshape3.frame_a.R.T[1,2] = revolute2.R_rel.T[1,1] * bodyshape1.frame_a.R.T[1,2] + revolute2.R_rel.T[1,2] * bodyshape1.frame_a.R.T[2,2] + revolute2.R_rel.T[1,3] * bodyshape1.frame_a.R.T[3,2]; // for variables -// bodyshape3.frame_a.R.T[1,1](43), bodyshape2.frame_b.t[1](54), revolute1.R_rel.T[1,3](135), revolute3.a(67), bodyshape3.frame_a.R.T[1,2](42), revolute1.frame_a.R.T[1,3](162), bodyshape2.frame_b.t[2](53), revolute2.frame_b.f[2](89), bodyshape2.frame_a.f[2](62), bodyshape1.frame_b.t[1](107), revolute1.frame_a.R.w[3](153), world.frame_b.f[2](124), revolute1.R_rel.T[2,2](133), revolute1.R_rel.T[2,1](134), revolute1.R_rel.T[1,2](136), revolute1.R_rel.T[3,2](130), revolute1.R_rel.T[3,1](131), revolute1.R_rel.T[2,3](132), revolute1.R_rel.T[3,3](129), revolute1.R_rel.w[3](126), revolute1.frame_a.R.T[2,1](161), bodyshape1.frame_a.R.T[1,1](119), world.frame_b.t[3](120), bodyshape3.frame_a.R.T[2,2](39), revolute1.R_rel.T[1,1](137), world.frame_b.f[1](125), revolute1.frame_a.R.w[2](154), revolute3.R_rel.w[2](65), bodyshape2.frame_a.f[1](63), revolute2.phi(84), revolute1.frame_a.R.T[1,2](163), bodyshape2.frameTranslation.frame_a.t[2](50), revolute1.phi(140), revolute1.w(139), bodyshape2.frame_a.f[3](61), revolute2.frame_b.f[3](88), revolute3.R_rel.w[1](66), revolute1.frame_a.R.T[3,1](158), bodyshape2.body.frame_a.t[3](44), revolute1.frame_a.R.w[1](155), revolute1.frame_a.R.T[3,3](156), revolute1.frame_a.R.T[3,2](157), bodyshape1.body.frame_a.f[1](102), revolute2.R_rel.T[2,3](76), bodyshape2.frame_b.f[3](55), bodyshape2.body.frame_a.f[1](49), revolute2.R_rel.w[3](70), revolute2.R_rel.w[2](71), bodyshape1.body.frame_a.t[2](98) +// revolute3.R_rel.w[1](66), revolute3.R_rel.w[3](64), bodyshape2.body.frame_a.t[3](44), bodyshape2.frame_b.f[3](55), bodyshape3.frame_a.R.T[1,1](43), bodyshape2.frameTranslation.frame_a.t[2](50), revolute1.R_rel.w[3](126), bodyshape2.frame_a.f[3](61), world.frame_b.t[2](121), revolute1.R_rel.T[2,2](133), revolute1.R_rel.T[2,1](134), revolute1.R_rel.T[1,3](135), world.frame_b.f[2](124), revolute1.R_rel.T[3,3](129), revolute1.R_rel.T[1,2](136), bodyshape3.frame_a.R.T[3,1](37), world.frame_b.t[3](120), bodyshape1.frame_b.t[1](107), revolute1.frame_a.R.w[3](153), bodyshape1.body.frame_a.f[1](102), revolute1.R_rel.T[3,2](130), revolute1.R_rel.T[3,1](131), revolute1.R_rel.T[2,3](132), revolute1.R_rel.T[1,1](137), world.frame_b.f[3](123), revolute1.frame_a.R.w[2](154), revolute1.frame_a.R.T[1,2](163), bodyshape2.frame_b.t[1](54), world.frame_b.f[1](125), bodyshape2.frame_a.f[1](63), bodyshape3.frame_a.R.T[1,2](42), revolute1.frame_a.R.T[3,1](158), revolute3.a(67), revolute1.frame_a.R.T[3,2](157), revolute3.R_rel.w[2](65), revolute2.frame_b.f[3](88), revolute1.phi(140), revolute1.w(139), revolute2.R_rel.T[2,2](77), revolute1.frame_a.R.w[1](155), revolute1.frame_a.R.T[3,3](156), revolute2.phi(84), bodyshape2.frame_b.t[2](53), bodyshape2.frame_a.f[2](62), bodyshape1.body.w_a[2](95), revolute3.phi(69), revolute2.R_rel.w[3](70), revolute2.R_rel.T[3,3](73) // Error: Internal error Transformation Module PFPlusExt index Reduction Method Pantelides failed! // " // endResult diff --git a/testsuite/simulation/modelica/others/EngineV6_output.mos b/testsuite/simulation/modelica/others/EngineV6_output.mos index f79d0fedf65..9c7a798479f 100644 --- a/testsuite/simulation/modelica/others/EngineV6_output.mos +++ b/testsuite/simulation/modelica/others/EngineV6_output.mos @@ -18,7 +18,7 @@ val(crankshaftSpeed,1.0); getErrorString(); // "" // true // "" -// There have been 1314 SCCs and now there are 686 SCCs. +// There have been 1345 SCCs and now there are 686 SCCs. // record SimulationResult // resultFile = "EngineV6_output_res.mat", // simulationOptions = "startTime = 0.0, stopTime = 1.01, numberOfIntervals = 500, tolerance = 1e-06, method = 'dassl', fileNamePrefix = 'EngineV6_output', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''", @@ -27,6 +27,6 @@ val(crankshaftSpeed,1.0); getErrorString(); // " // end SimulationResult; // "" -// 561.4775584669995 +// 561.4775584669958 // "" // endResult diff --git a/testsuite/simulation/modelica/parameters/Engine1a_output.mos b/testsuite/simulation/modelica/parameters/Engine1a_output.mos index bc05be1bb74..fd9097bbb6c 100644 --- a/testsuite/simulation/modelica/parameters/Engine1a_output.mos +++ b/testsuite/simulation/modelica/parameters/Engine1a_output.mos @@ -12,7 +12,7 @@ simulate(Engine1a_output); getErrorString(); // "" // true // "" -// There have been 171 SCCs and now there are 64 SCCs. +// There have been 175 SCCs and now there are 66 SCCs. // record SimulationResult // resultFile = "Engine1a_output_res.mat", // simulationOptions = "startTime = 0.0, stopTime = 5.0, numberOfIntervals = 500, tolerance = 1e-06, method = 'dassl', fileNamePrefix = 'Engine1a_output', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''", diff --git a/testsuite/simulation/modelica/resolveLoops/NPendulum2.mos b/testsuite/simulation/modelica/resolveLoops/NPendulum2.mos index 13023858287..f3e34f15b23 100644 --- a/testsuite/simulation/modelica/resolveLoops/NPendulum2.mos +++ b/testsuite/simulation/modelica/resolveLoops/NPendulum2.mos @@ -38,8 +38,8 @@ res := OpenModelica.Scripting.compareSimulationResults("Pendulum.Pendulum2_res.m // * Number of discrete variables: 27 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for initialization (662): -// * Single equations (assignments): 658 +// Notification: Strong component statistics for initialization (653): +// * Single equations (assignments): 649 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 @@ -49,7 +49,7 @@ res := OpenModelica.Scripting.compareSimulationResults("Pendulum.Pendulum2_res.m // * Torn equation systems: 1 // * Mixed (continuous/discrete) equation systems: 0 // Notification: Torn system details for strict tearing set: -// * Linear torn systems: 1 {(2,100.0%) 36} +// * Linear torn systems: 1 {(3,88.9%) 35} // * Non-linear torn systems: 0 // Notification: Model statistics after passing the back-end for simulation: // * Number of independent subsystems: 4 @@ -57,8 +57,8 @@ res := OpenModelica.Scripting.compareSimulationResults("Pendulum.Pendulum2_res.m // * Number of discrete variables: 0 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for simulation (139): -// * Single equations (assignments): 135 +// Notification: Strong component statistics for simulation (130): +// * Single equations (assignments): 126 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 @@ -68,7 +68,7 @@ res := OpenModelica.Scripting.compareSimulationResults("Pendulum.Pendulum2_res.m // * Torn equation systems: 1 // * Mixed (continuous/discrete) equation systems: 0 // Notification: Torn system details for strict tearing set: -// * Linear torn systems: 1 {(5,72.0%) 28} +// * Linear torn systems: 1 {(4,87.5%) 29} // * Non-linear torn systems: 0 // " // {"Files Equal!"} diff --git a/testsuite/simulation/modelica/resolveLoops/NPendulum3.mos b/testsuite/simulation/modelica/resolveLoops/NPendulum3.mos index 60d0152cf5b..7f9cc8a7ed1 100644 --- a/testsuite/simulation/modelica/resolveLoops/NPendulum3.mos +++ b/testsuite/simulation/modelica/resolveLoops/NPendulum3.mos @@ -41,8 +41,8 @@ res := OpenModelica.Scripting.compareSimulationResults("Pendulum.Pendulum3_res.m // * Number of discrete variables: 36 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for initialization (756): -// * Single equations (assignments): 752 +// Notification: Strong component statistics for initialization (747): +// * Single equations (assignments): 743 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 @@ -52,7 +52,7 @@ res := OpenModelica.Scripting.compareSimulationResults("Pendulum.Pendulum3_res.m // * Torn equation systems: 1 // * Mixed (continuous/discrete) equation systems: 0 // Notification: Torn system details for strict tearing set: -// * Linear torn systems: 1 {(4,87.5%) 64} +// * Linear torn systems: 1 {(4,93.8%) 64} // * Non-linear torn systems: 0 // Notification: Model statistics after passing the back-end for simulation: // * Number of independent subsystems: 4 @@ -60,8 +60,8 @@ res := OpenModelica.Scripting.compareSimulationResults("Pendulum.Pendulum3_res.m // * Number of discrete variables: 0 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for simulation (191): -// * Single equations (assignments): 187 +// Notification: Strong component statistics for simulation (182): +// * Single equations (assignments): 178 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 @@ -71,7 +71,7 @@ res := OpenModelica.Scripting.compareSimulationResults("Pendulum.Pendulum3_res.m // * Torn equation systems: 1 // * Mixed (continuous/discrete) equation systems: 0 // Notification: Torn system details for strict tearing set: -// * Linear torn systems: 1 {(8,70.3%) 55} +// * Linear torn systems: 1 {(9,67.9%) 54} // * Non-linear torn systems: 0 // " // {"Files Equal!"} diff --git a/testsuite/simulation/modelica/tearing/Tearing12-cel.mos b/testsuite/simulation/modelica/tearing/Tearing12-cel.mos index 12c49870de0..9faf049a9fd 100644 --- a/testsuite/simulation/modelica/tearing/Tearing12-cel.mos +++ b/testsuite/simulation/modelica/tearing/Tearing12-cel.mos @@ -39,8 +39,8 @@ simulate(Tearing12); getErrorString(); // * Number of discrete variables: 288 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for initialization (3713): -// * Single equations (assignments): 3709 +// Notification: Strong component statistics for initialization (3819): +// * Single equations (assignments): 3815 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 @@ -58,8 +58,8 @@ simulate(Tearing12); getErrorString(); // * Number of discrete variables: 0 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for simulation (1722): -// * Single equations (assignments): 1718 +// Notification: Strong component statistics for simulation (1828): +// * Single equations (assignments): 1824 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 diff --git a/testsuite/simulation/modelica/tearing/Tearing12-celMC3.mos b/testsuite/simulation/modelica/tearing/Tearing12-celMC3.mos index 469d8cce6e1..1f5abcf4eab 100644 --- a/testsuite/simulation/modelica/tearing/Tearing12-celMC3.mos +++ b/testsuite/simulation/modelica/tearing/Tearing12-celMC3.mos @@ -40,8 +40,8 @@ simulate(Tearing12); getErrorString(); // * Number of discrete variables: 288 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for initialization (3713): -// * Single equations (assignments): 3709 +// Notification: Strong component statistics for initialization (3819): +// * Single equations (assignments): 3815 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 @@ -51,7 +51,7 @@ simulate(Tearing12); getErrorString(); // * Torn equation systems: 1 // * Mixed (continuous/discrete) equation systems: 0 // Notification: Torn system details for strict tearing set: -// * Linear torn systems: 1 {(45,85.0%) 863} +// * Linear torn systems: 1 {(52,81.2%) 856} // * Non-linear torn systems: 0 // Notification: Model statistics after passing the back-end for simulation: // * Number of independent subsystems: 4 @@ -59,8 +59,8 @@ simulate(Tearing12); getErrorString(); // * Number of discrete variables: 0 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for simulation (1722): -// * Single equations (assignments): 1718 +// Notification: Strong component statistics for simulation (1828): +// * Single equations (assignments): 1824 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 @@ -70,7 +70,7 @@ simulate(Tearing12); getErrorString(); // * Torn equation systems: 1 // * Mixed (continuous/discrete) equation systems: 0 // Notification: Torn system details for strict tearing set: -// * Linear torn systems: 1 {(72,45.8%) 833} +// * Linear torn systems: 1 {(79,45.4%) 826} // * Non-linear torn systems: 0 // " // endResult diff --git a/testsuite/simulation/modelica/tearing/Tearing12-omc.mos b/testsuite/simulation/modelica/tearing/Tearing12-omc.mos index c7fe46d06e4..a76c58d0bfb 100644 --- a/testsuite/simulation/modelica/tearing/Tearing12-omc.mos +++ b/testsuite/simulation/modelica/tearing/Tearing12-omc.mos @@ -38,8 +38,8 @@ simulate(Tearing12); getErrorString(); // * Number of discrete variables: 288 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for initialization (3713): -// * Single equations (assignments): 3709 +// Notification: Strong component statistics for initialization (3819): +// * Single equations (assignments): 3815 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 @@ -49,7 +49,7 @@ simulate(Tearing12); getErrorString(); // * Torn equation systems: 1 // * Mixed (continuous/discrete) equation systems: 0 // Notification: Torn system details for strict tearing set: -// * Linear torn systems: 1 {(104,41.0%) 804} +// * Linear torn systems: 1 {(122,33.5%) 786} // * Non-linear torn systems: 0 // Notification: Model statistics after passing the back-end for simulation: // * Number of independent subsystems: 4 @@ -57,8 +57,8 @@ simulate(Tearing12); getErrorString(); // * Number of discrete variables: 0 ('-d=discreteinfo' for list of discrete vars) // * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states) // * Top-level inputs: 0 -// Notification: Strong component statistics for simulation (1722): -// * Single equations (assignments): 1718 +// Notification: Strong component statistics for simulation (1828): +// * Single equations (assignments): 1824 // * Array equations: 3 // * Algorithm blocks: 0 // * Record equations: 0 @@ -68,7 +68,7 @@ simulate(Tearing12); getErrorString(); // * Torn equation systems: 1 // * Mixed (continuous/discrete) equation systems: 0 // Notification: Torn system details for strict tearing set: -// * Linear torn systems: 1 {(80,70.3%) 825} +// * Linear torn systems: 1 {(77,70.4%) 828} // * Non-linear torn systems: 0 // " // endResult